@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,852 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"id": "Components-IconButton",
|
|
4
|
+
"title": "Icon button",
|
|
5
|
+
"exportName": "IconButton",
|
|
6
|
+
"description": "Provides a compact and visually efficient way to represent actions, especially when space is limited or the action is universally understood.",
|
|
7
|
+
"lifecycleState": "Stable",
|
|
8
|
+
"order": 999,
|
|
9
|
+
"repoPath": "packages/nimbus/src/components/icon-button/icon-button.mdx",
|
|
10
|
+
"menu": [
|
|
11
|
+
"Components",
|
|
12
|
+
"Buttons",
|
|
13
|
+
"Icon button"
|
|
14
|
+
],
|
|
15
|
+
"route": "components/buttons/icon-button",
|
|
16
|
+
"tags": [
|
|
17
|
+
"component",
|
|
18
|
+
"buttons",
|
|
19
|
+
"actions",
|
|
20
|
+
"icons"
|
|
21
|
+
],
|
|
22
|
+
"toc": [
|
|
23
|
+
{
|
|
24
|
+
"value": "Overview",
|
|
25
|
+
"href": "#overview",
|
|
26
|
+
"depth": 2,
|
|
27
|
+
"numbering": [
|
|
28
|
+
1,
|
|
29
|
+
1
|
|
30
|
+
],
|
|
31
|
+
"parent": "root"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"value": "Resources",
|
|
35
|
+
"href": "#resources",
|
|
36
|
+
"depth": 3,
|
|
37
|
+
"numbering": [
|
|
38
|
+
1,
|
|
39
|
+
1,
|
|
40
|
+
1
|
|
41
|
+
],
|
|
42
|
+
"parent": "root"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"value": "Hierarchy",
|
|
46
|
+
"href": "#hierarchy",
|
|
47
|
+
"depth": 2,
|
|
48
|
+
"numbering": [
|
|
49
|
+
1,
|
|
50
|
+
2
|
|
51
|
+
],
|
|
52
|
+
"parent": "root"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"value": "Most common: Ghost",
|
|
56
|
+
"href": "#most-common-ghost",
|
|
57
|
+
"depth": 4,
|
|
58
|
+
"numbering": [
|
|
59
|
+
1,
|
|
60
|
+
2,
|
|
61
|
+
1,
|
|
62
|
+
1
|
|
63
|
+
],
|
|
64
|
+
"parent": "root"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"value": "Use sparingly: Solid",
|
|
68
|
+
"href": "#use-sparingly-solid",
|
|
69
|
+
"depth": 4,
|
|
70
|
+
"numbering": [
|
|
71
|
+
1,
|
|
72
|
+
2,
|
|
73
|
+
1,
|
|
74
|
+
2
|
|
75
|
+
],
|
|
76
|
+
"parent": "root"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"value": "Least used: Outline",
|
|
80
|
+
"href": "#least-used-outline",
|
|
81
|
+
"depth": 4,
|
|
82
|
+
"numbering": [
|
|
83
|
+
1,
|
|
84
|
+
2,
|
|
85
|
+
1,
|
|
86
|
+
3
|
|
87
|
+
],
|
|
88
|
+
"parent": "root"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"value": "Variables",
|
|
92
|
+
"href": "#variables",
|
|
93
|
+
"depth": 2,
|
|
94
|
+
"numbering": [
|
|
95
|
+
1,
|
|
96
|
+
3
|
|
97
|
+
],
|
|
98
|
+
"parent": "root"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"value": "Size",
|
|
102
|
+
"href": "#size",
|
|
103
|
+
"depth": 3,
|
|
104
|
+
"numbering": [
|
|
105
|
+
1,
|
|
106
|
+
3,
|
|
107
|
+
1
|
|
108
|
+
],
|
|
109
|
+
"parent": "root"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"value": "Medium (40px)",
|
|
113
|
+
"href": "#medium-40px",
|
|
114
|
+
"depth": 4,
|
|
115
|
+
"numbering": [
|
|
116
|
+
1,
|
|
117
|
+
3,
|
|
118
|
+
1,
|
|
119
|
+
1
|
|
120
|
+
],
|
|
121
|
+
"parent": "root"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"value": "X-Small (32px)",
|
|
125
|
+
"href": "#x-small-32px",
|
|
126
|
+
"depth": 4,
|
|
127
|
+
"numbering": [
|
|
128
|
+
1,
|
|
129
|
+
3,
|
|
130
|
+
1,
|
|
131
|
+
2
|
|
132
|
+
],
|
|
133
|
+
"parent": "root"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"value": "XX-Small (24px)",
|
|
137
|
+
"href": "#xx-small-24px",
|
|
138
|
+
"depth": 4,
|
|
139
|
+
"numbering": [
|
|
140
|
+
1,
|
|
141
|
+
3,
|
|
142
|
+
1,
|
|
143
|
+
3
|
|
144
|
+
],
|
|
145
|
+
"parent": "root"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"value": "Color palette",
|
|
149
|
+
"href": "#color-palette",
|
|
150
|
+
"depth": 3,
|
|
151
|
+
"numbering": [
|
|
152
|
+
1,
|
|
153
|
+
3,
|
|
154
|
+
2
|
|
155
|
+
],
|
|
156
|
+
"parent": "root"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"value": "Primary",
|
|
160
|
+
"href": "#primary",
|
|
161
|
+
"depth": 4,
|
|
162
|
+
"numbering": [
|
|
163
|
+
1,
|
|
164
|
+
3,
|
|
165
|
+
2,
|
|
166
|
+
1
|
|
167
|
+
],
|
|
168
|
+
"parent": "root"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"value": "Critical",
|
|
172
|
+
"href": "#critical",
|
|
173
|
+
"depth": 4,
|
|
174
|
+
"numbering": [
|
|
175
|
+
1,
|
|
176
|
+
3,
|
|
177
|
+
2,
|
|
178
|
+
2
|
|
179
|
+
],
|
|
180
|
+
"parent": "root"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"value": "Tooltip",
|
|
184
|
+
"href": "#tooltip",
|
|
185
|
+
"depth": 4,
|
|
186
|
+
"numbering": [
|
|
187
|
+
1,
|
|
188
|
+
3,
|
|
189
|
+
2,
|
|
190
|
+
3
|
|
191
|
+
],
|
|
192
|
+
"parent": "root"
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
"figmaLink": "https://www.figma.com/design/AvtPX6g7OGGCRvNlatGOIY/New-Design-System?node-id=58-132&m=dev",
|
|
196
|
+
"layout": "app-frame",
|
|
197
|
+
"tabs": [
|
|
198
|
+
{
|
|
199
|
+
"key": "overview",
|
|
200
|
+
"title": "Overview",
|
|
201
|
+
"order": 0
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"key": "guidelines",
|
|
205
|
+
"title": "Guidelines",
|
|
206
|
+
"order": 2
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"key": "dev",
|
|
210
|
+
"title": "Implementation",
|
|
211
|
+
"order": 3
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"key": "a11y",
|
|
215
|
+
"title": "Accessibility",
|
|
216
|
+
"order": 4
|
|
217
|
+
}
|
|
218
|
+
]
|
|
219
|
+
},
|
|
220
|
+
"mdx": "\n## Overview\n\nThese specifications define the standard styles and variations for icon buttons\nwithin our design system, covering different visual treatments for diverse use\ncases.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[Figma library](https://www.figma.com/design/AvtPX6g7OGGCRvNlatGOIY/NIMBUS-design-system?node-id=346-2570&m=dev)\n\n## Hierarchy\n\n#### Most common: Ghost\n\nGhost icon buttons are used most often, the represent familiar actions that\ndon't compete with a primary action on the page.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"ghost\" colorPalette=\"primary\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n#### Use sparingly: Solid\n\nSolid icon buttons are sparingly used, but represent commonly understood primary\nactions by the user.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"solid\" colorPalette=\"primary\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n#### Least used: Outline\n\nOutline icon buttons are used as secondary buttons, used often in button groups\nto represent icon toggles and within data tables.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"outline\" colorPalette=\"primary\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n## Variables\n\nGet familiar with the features.\n\n### Size\n\n#### Medium (40px)\n\nThese are the default and preferred size for icon buttons.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"solid\" colorPalette=\"primary\" size=\"md\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n#### X-Small (32px)\n\nPlaced in a small dense content areas, e.g., in pop-over or inside a data table.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"solid\" colorPalette=\"primary\" size=\"xs\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n#### XX-Small (24px)\n\n2XS is used sparingly mostly inside other components e.g, inside inputs or\nfilter badges.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"solid\" colorPalette=\"primary\" size=\"2xs\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n### Color palette\n\n#### Primary\n\nThis is the default color palette for the icon button. This styling should be\nused most commonly for all actions.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"ghost\" colorPalette=\"primary\">\n <Icons.ViewColumn/>\n </IconButton>\n );\n};\n```\n\n#### Critical\n\nUse this icon button when the user is approaching a permanent destructive\naction. See guidelines for more information.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"ghost\" colorPalette=\"critical\">\n <Icons.Delete/>\n </IconButton>\n );\n};\n```\n\n#### Tooltip\n\nFor accessibility compliance (and good user experience for all) icon buttons\nthat do not have a label must have a tooltip. Go to tooltips for more\ninformation about the component.\n\n```jsx live\nconst App = () => {\n return (\n <Tooltip.Root delay={0} closeDelay={0}>\n <IconButton variant=\"ghost\" colorPalette=\"primary\">\n <Icons.Edit/>\n </IconButton>\n <Tooltip.Content>\n Edit\n </Tooltip.Content>\n </Tooltip.Root>\n );\n};\n```\n",
|
|
221
|
+
"views": {
|
|
222
|
+
"overview": {
|
|
223
|
+
"mdx": "\n## Overview\n\nThese specifications define the standard styles and variations for icon buttons\nwithin our design system, covering different visual treatments for diverse use\ncases.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[Figma library](https://www.figma.com/design/AvtPX6g7OGGCRvNlatGOIY/NIMBUS-design-system?node-id=346-2570&m=dev)\n\n## Hierarchy\n\n#### Most common: Ghost\n\nGhost icon buttons are used most often, the represent familiar actions that\ndon't compete with a primary action on the page.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"ghost\" colorPalette=\"primary\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n#### Use sparingly: Solid\n\nSolid icon buttons are sparingly used, but represent commonly understood primary\nactions by the user.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"solid\" colorPalette=\"primary\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n#### Least used: Outline\n\nOutline icon buttons are used as secondary buttons, used often in button groups\nto represent icon toggles and within data tables.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"outline\" colorPalette=\"primary\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n## Variables\n\nGet familiar with the features.\n\n### Size\n\n#### Medium (40px)\n\nThese are the default and preferred size for icon buttons.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"solid\" colorPalette=\"primary\" size=\"md\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n#### X-Small (32px)\n\nPlaced in a small dense content areas, e.g., in pop-over or inside a data table.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"solid\" colorPalette=\"primary\" size=\"xs\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n#### XX-Small (24px)\n\n2XS is used sparingly mostly inside other components e.g, inside inputs or\nfilter badges.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"solid\" colorPalette=\"primary\" size=\"2xs\">\n <Icons.Edit/>\n </IconButton>\n );\n};\n```\n\n### Color palette\n\n#### Primary\n\nThis is the default color palette for the icon button. This styling should be\nused most commonly for all actions.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"ghost\" colorPalette=\"primary\">\n <Icons.ViewColumn/>\n </IconButton>\n );\n};\n```\n\n#### Critical\n\nUse this icon button when the user is approaching a permanent destructive\naction. See guidelines for more information.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton variant=\"ghost\" colorPalette=\"critical\">\n <Icons.Delete/>\n </IconButton>\n );\n};\n```\n\n#### Tooltip\n\nFor accessibility compliance (and good user experience for all) icon buttons\nthat do not have a label must have a tooltip. Go to tooltips for more\ninformation about the component.\n\n```jsx live\nconst App = () => {\n return (\n <Tooltip.Root delay={0} closeDelay={0}>\n <IconButton variant=\"ghost\" colorPalette=\"primary\">\n <Icons.Edit/>\n </IconButton>\n <Tooltip.Content>\n Edit\n </Tooltip.Content>\n </Tooltip.Root>\n );\n};\n```\n",
|
|
224
|
+
"toc": [
|
|
225
|
+
{
|
|
226
|
+
"value": "Overview",
|
|
227
|
+
"href": "#overview",
|
|
228
|
+
"depth": 2,
|
|
229
|
+
"numbering": [
|
|
230
|
+
1,
|
|
231
|
+
1
|
|
232
|
+
],
|
|
233
|
+
"parent": "root"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"value": "Resources",
|
|
237
|
+
"href": "#resources",
|
|
238
|
+
"depth": 3,
|
|
239
|
+
"numbering": [
|
|
240
|
+
1,
|
|
241
|
+
1,
|
|
242
|
+
1
|
|
243
|
+
],
|
|
244
|
+
"parent": "root"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"value": "Hierarchy",
|
|
248
|
+
"href": "#hierarchy",
|
|
249
|
+
"depth": 2,
|
|
250
|
+
"numbering": [
|
|
251
|
+
1,
|
|
252
|
+
2
|
|
253
|
+
],
|
|
254
|
+
"parent": "root"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"value": "Most common: Ghost",
|
|
258
|
+
"href": "#most-common-ghost",
|
|
259
|
+
"depth": 4,
|
|
260
|
+
"numbering": [
|
|
261
|
+
1,
|
|
262
|
+
2,
|
|
263
|
+
1,
|
|
264
|
+
1
|
|
265
|
+
],
|
|
266
|
+
"parent": "root"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"value": "Use sparingly: Solid",
|
|
270
|
+
"href": "#use-sparingly-solid",
|
|
271
|
+
"depth": 4,
|
|
272
|
+
"numbering": [
|
|
273
|
+
1,
|
|
274
|
+
2,
|
|
275
|
+
1,
|
|
276
|
+
2
|
|
277
|
+
],
|
|
278
|
+
"parent": "root"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"value": "Least used: Outline",
|
|
282
|
+
"href": "#least-used-outline",
|
|
283
|
+
"depth": 4,
|
|
284
|
+
"numbering": [
|
|
285
|
+
1,
|
|
286
|
+
2,
|
|
287
|
+
1,
|
|
288
|
+
3
|
|
289
|
+
],
|
|
290
|
+
"parent": "root"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"value": "Variables",
|
|
294
|
+
"href": "#variables",
|
|
295
|
+
"depth": 2,
|
|
296
|
+
"numbering": [
|
|
297
|
+
1,
|
|
298
|
+
3
|
|
299
|
+
],
|
|
300
|
+
"parent": "root"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"value": "Size",
|
|
304
|
+
"href": "#size",
|
|
305
|
+
"depth": 3,
|
|
306
|
+
"numbering": [
|
|
307
|
+
1,
|
|
308
|
+
3,
|
|
309
|
+
1
|
|
310
|
+
],
|
|
311
|
+
"parent": "root"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"value": "Medium (40px)",
|
|
315
|
+
"href": "#medium-40px",
|
|
316
|
+
"depth": 4,
|
|
317
|
+
"numbering": [
|
|
318
|
+
1,
|
|
319
|
+
3,
|
|
320
|
+
1,
|
|
321
|
+
1
|
|
322
|
+
],
|
|
323
|
+
"parent": "root"
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"value": "X-Small (32px)",
|
|
327
|
+
"href": "#x-small-32px",
|
|
328
|
+
"depth": 4,
|
|
329
|
+
"numbering": [
|
|
330
|
+
1,
|
|
331
|
+
3,
|
|
332
|
+
1,
|
|
333
|
+
2
|
|
334
|
+
],
|
|
335
|
+
"parent": "root"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"value": "XX-Small (24px)",
|
|
339
|
+
"href": "#xx-small-24px",
|
|
340
|
+
"depth": 4,
|
|
341
|
+
"numbering": [
|
|
342
|
+
1,
|
|
343
|
+
3,
|
|
344
|
+
1,
|
|
345
|
+
3
|
|
346
|
+
],
|
|
347
|
+
"parent": "root"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"value": "Color palette",
|
|
351
|
+
"href": "#color-palette",
|
|
352
|
+
"depth": 3,
|
|
353
|
+
"numbering": [
|
|
354
|
+
1,
|
|
355
|
+
3,
|
|
356
|
+
2
|
|
357
|
+
],
|
|
358
|
+
"parent": "root"
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"value": "Primary",
|
|
362
|
+
"href": "#primary",
|
|
363
|
+
"depth": 4,
|
|
364
|
+
"numbering": [
|
|
365
|
+
1,
|
|
366
|
+
3,
|
|
367
|
+
2,
|
|
368
|
+
1
|
|
369
|
+
],
|
|
370
|
+
"parent": "root"
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"value": "Critical",
|
|
374
|
+
"href": "#critical",
|
|
375
|
+
"depth": 4,
|
|
376
|
+
"numbering": [
|
|
377
|
+
1,
|
|
378
|
+
3,
|
|
379
|
+
2,
|
|
380
|
+
2
|
|
381
|
+
],
|
|
382
|
+
"parent": "root"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"value": "Tooltip",
|
|
386
|
+
"href": "#tooltip",
|
|
387
|
+
"depth": 4,
|
|
388
|
+
"numbering": [
|
|
389
|
+
1,
|
|
390
|
+
3,
|
|
391
|
+
2,
|
|
392
|
+
3
|
|
393
|
+
],
|
|
394
|
+
"parent": "root"
|
|
395
|
+
}
|
|
396
|
+
]
|
|
397
|
+
},
|
|
398
|
+
"a11y": {
|
|
399
|
+
"mdx": "\n## Accessibility\n\nThe component uses `onPress*` props to handle all user interactions—mouse\nclicks, touch taps, and keyboard presses—consistently. These props (`onPress`,\n`onPressStart`, `onPressEnd`, etc.) ensure a smooth and accessible experience\nregardless of the user's input method or device.\n\n```jsx live\nconst App = () => {\n return (\n <IconButton colorPalette=\"primary\" variant=\"solid\" onPress={() => alert('Button pressed!')}>\n <Icons.Edit />\n </IconButton>\n )\n}\n```\n\n### Accessibility standards\n\n- **Color contrast:** Ensure enough contrast between the icon and its\n background. WCAG requires a contrast ratio of at least 3:1 for graphical\n elements and 4.5:1 for text. Tools like WebAIM's color contrast checker can\n help you verify this.\n- **Non-text content:** Icons are considered non-text content. WCAG requires\n that all non-text content has a text alternative that serves the equivalent\n purpose. This usually means providing an alternative text (alt text) for the\n icon.\n- **Visual cues:** Don't rely solely on color to convey information. Use\n additional visual cues like shapes, patterns, or text labels to ensure that\n the icon's meaning is clear to everyone, including people with color\n blindness.\n- **Keyboard accessibility:** Icon buttons must be operable using a keyboard.\n Users should be able to navigate to the button using the Tab key and activate\n it using the Enter or Space key.\n- **Target size:** Ensure that the icon button is large enough to be easily\n clickable, especially on touchscreens. WCAG recommends a minimum target size\n of 24x24 CSS pixels.\n- **Focus indicator:** Provide a clear visual indicator when the icon button\n receives keyboard focus. This helps users understand which element is\n currently active.\n- **Clear labels:** If the icon's meaning isn't universally understood, provide\n a text label or tooltip to clarify its purpose. This is especially important\n for less common icons.\n- **Consistent design:** Use icons consistently throughout your website. This\n helps users learn the meaning of each icon and makes it easier for them to\n navigate your site.\n- **Assistive technology compatibility:** Ensure that icon buttons are\n compatible with assistive technologies like screen readers. This often\n involves using proper HTML markup and ARIA attributes to provide semantic\n information about the button.\n",
|
|
400
|
+
"toc": [
|
|
401
|
+
{
|
|
402
|
+
"value": "Accessibility",
|
|
403
|
+
"href": "#accessibility",
|
|
404
|
+
"depth": 2,
|
|
405
|
+
"numbering": [
|
|
406
|
+
1,
|
|
407
|
+
1
|
|
408
|
+
],
|
|
409
|
+
"parent": "root"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"value": "Accessibility standards",
|
|
413
|
+
"href": "#accessibility-standards",
|
|
414
|
+
"depth": 3,
|
|
415
|
+
"numbering": [
|
|
416
|
+
1,
|
|
417
|
+
1,
|
|
418
|
+
1
|
|
419
|
+
],
|
|
420
|
+
"parent": "root"
|
|
421
|
+
}
|
|
422
|
+
]
|
|
423
|
+
},
|
|
424
|
+
"dev": {
|
|
425
|
+
"mdx": "\n## Getting started\n\n### Import\n\n```tsx\nimport { IconButton, type IconButtonProps } from '@commercetools/nimbus';\n```\n\n### Basic usage\n\nIconButton displays a button containing only an icon as its child. It requires an `aria-label` for accessibility since there is no visible text:\n\n```jsx live-dev\nconst App = () => (\n <IconButton aria-label=\"Open menu\">\n <Icons.Menu />\n </IconButton>\n)\n```\n\n## Usage examples\n\n### Size options\n\nThe `2xs`, `xs`, and `md` size variants are available to match your interface density:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"row\" gap=\"400\" alignItems=\"center\">\n <IconButton size=\"2xs\" aria-label=\"Extra small button\">\n <Icons.Add />\n </IconButton>\n <IconButton size=\"xs\" aria-label=\"Small button\">\n <Icons.Add />\n </IconButton>\n <IconButton size=\"md\" aria-label=\"Medium button\">\n <Icons.Add />\n </IconButton>\n </Stack>\n)\n```\n\n### Visual variants\n\nChoose between `solid`, `subtle`, `outline`, `ghost`, and `link` variants to match your design context:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"row\" gap=\"400\" alignItems=\"center\">\n <IconButton variant=\"solid\" aria-label=\"Solid button\">\n <Icons.Edit />\n </IconButton>\n <IconButton variant=\"subtle\" aria-label=\"Subtle button\">\n <Icons.Edit />\n </IconButton>\n <IconButton variant=\"outline\" aria-label=\"Outline button\">\n <Icons.Edit />\n </IconButton>\n <IconButton variant=\"ghost\" aria-label=\"Ghost button\">\n <Icons.Edit />\n </IconButton>\n <IconButton variant=\"link\" aria-label=\"Link button\">\n <Icons.Edit />\n </IconButton>\n </Stack>\n)\n```\n\n### Color palettes\n\nUse semantic color palettes to convey meaning or match your brand:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"row\" gap=\"400\" alignItems=\"center\">\n <IconButton colorPalette=\"primary\" aria-label=\"Primary action\">\n <Icons.Send />\n </IconButton>\n <IconButton colorPalette=\"critical\" aria-label=\"Delete item\">\n <Icons.Delete />\n </IconButton>\n <IconButton colorPalette=\"positive\" aria-label=\"Approve\">\n <Icons.Check />\n </IconButton>\n <IconButton colorPalette=\"warning\" aria-label=\"Warning action\">\n <Icons.Warning />\n </IconButton>\n </Stack>\n)\n```\n\n### Disabled state\n\nDisable user interaction when an action is temporarily unavailable:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"row\" gap=\"400\" alignItems=\"center\">\n <IconButton aria-label=\"Enabled button\">\n <Icons.Save />\n </IconButton>\n <IconButton isDisabled aria-label=\"Disabled button\">\n <Icons.Save />\n </IconButton>\n </Stack>\n)\n```\n\n### Press handling\n\nHandle user interactions with the `onPress` callback:\n\n```jsx live-dev\nconst App = () => {\n const [count, setCount] = useState(0);\n\n return (\n <Stack direction=\"column\" gap=\"400\" alignItems=\"center\">\n <IconButton\n aria-label=\"Increment counter\"\n onPress={() => setCount(count + 1)}\n >\n <Icons.Add />\n </IconButton>\n <Text fontSize=\"sm\">Clicked {count} times</Text>\n </Stack>\n );\n}\n```\n\n## Component requirements\n\n## Accessibility\n\nIconButton requires a **mandatory `aria-label` prop** since icon-only buttons lack visible text for screen readers. This label should:\n- Clearly describe the button's action\n- Be concise but descriptive\n\n**Setting the aria-label:**\n\n```tsx\n<IconButton aria-label=\"Open menu\">\n <Icons.Menu />\n</IconButton>\n```\n\nFor icon buttons with visible tooltips, the `aria-label` is still required for screen reader users who may not trigger the tooltip:\n\n```tsx\n<Tooltip.Root>\n <IconButton aria-label=\"Settings\">\n <Icons.Settings />\n </IconButton>\n <Tooltip.Content>Settings</Tooltip.Content>\n</Tooltip.Root>\n```\n\nIf your use case requires tracking and analytics for this component, it is good practice to add a **persistent**, **unique** id to the component:\n\n```tsx\nconst PERSISTENT_ID = \"example-icon-button\";\n\nexport const Example = () => (\n <IconButton id={PERSISTENT_ID} aria-label=\"Open settings\">\n <Icons.Settings />\n </IconButton>\n);\n```\n\n#### Keyboard navigation\n\nThe component supports full keyboard interaction:\n- `Tab` / `Shift+Tab`: Move focus to/from the button\n- `Enter` / `Space`: Activate the button\n- `Escape`: Remove focus (when focused)\n\n## API reference\n\n<PropsTable id=\"IconButton\" />\n\n## Common patterns\n\n### With Tooltip\n\nIcon buttons should typically include a tooltip to provide additional context for sighted users:\n\n```jsx live-dev\nconst App = () => {\n const [count, setCount] = useState(0);\n\n return (\n <Stack direction=\"column\" gap=\"400\" alignItems=\"center\">\n <Stack direction=\"row\" gap=\"300\">\n <Tooltip.Root>\n <IconButton\n aria-label=\"Add item\"\n onPress={() => setCount(count + 1)}\n >\n <Icons.Add />\n </IconButton>\n <Tooltip.Content>Add item</Tooltip.Content>\n </Tooltip.Root>\n\n <Tooltip.Root>\n <IconButton\n aria-label=\"Remove item\"\n onPress={() => setCount(Math.max(0, count - 1))}\n isDisabled={count === 0}\n >\n <Icons.Remove />\n </IconButton>\n <Tooltip.Content>Remove item</Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n <Text fontSize=\"sm\">Count: {count}</Text>\n </Stack>\n );\n}\n```\n\n### Loading state\n\nShow a loading state during asynchronous operations:\n\n```jsx live-dev\nconst App = () => {\n const [isLoading, setIsLoading] = useState(false);\n\n const handlePress = () => {\n setIsLoading(true);\n setTimeout(() => setIsLoading(false), 2000);\n };\n\n return (\n <Stack direction=\"column\" gap=\"400\" alignItems=\"center\">\n <IconButton\n aria-label=\"Save changes\"\n onPress={handlePress}\n isLoading={isLoading}\n >\n <Icons.Save />\n </IconButton>\n <Text fontSize=\"sm\">\n {isLoading ? 'Saving...' : 'Click to save'}\n </Text>\n </Stack>\n );\n}\n```\n\n### Icon button group\n\nGroup related icon buttons using Stack:\n\n```jsx live-dev\nconst App = () => {\n const [alignment, setAlignment] = useState('left');\n\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Stack direction=\"row\" gap=\"200\">\n <IconButton\n aria-label=\"Align left\"\n variant={alignment === 'left' ? 'solid' : 'ghost'}\n onPress={() => setAlignment('left')}\n >\n <Icons.FormatAlignLeft />\n </IconButton>\n <IconButton\n aria-label=\"Align center\"\n variant={alignment === 'center' ? 'solid' : 'ghost'}\n onPress={() => setAlignment('center')}\n >\n <Icons.FormatAlignCenter />\n </IconButton>\n <IconButton\n aria-label=\"Align right\"\n variant={alignment === 'right' ? 'solid' : 'ghost'}\n onPress={() => setAlignment('right')}\n >\n <Icons.FormatAlignRight />\n </IconButton>\n </Stack>\n <Text fontSize=\"sm\">Alignment: {alignment}</Text>\n </Stack>\n );\n}\n```\n\n## Testing your implementation\n\nThese examples demonstrate how to test your implementation when using IconButton 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 IconButton renders correctly with required props\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 { IconButton, NimbusProvider } from \"@commercetools/nimbus\";\nimport { Add as AddIcon } from \"@commercetools/nimbus-icons\";\n\ndescribe(\"IconButton - Basic rendering\", () => {\n it(\"renders button with icon\", () => {\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Add item\">\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n const button = screen.getByRole(\"button\", { name: /add item/i });\n expect(button).toBeInTheDocument();\n });\n\n it(\"renders with required aria-label\", () => {\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Open menu\">\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n const button = screen.getByRole(\"button\", { name: /open menu/i });\n expect(button).toHaveAttribute(\"aria-label\", \"Open menu\");\n });\n\n it(\"renders with custom data attributes\", () => {\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Test button\" data-testid=\"custom-button\">\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n expect(screen.getByTestId(\"custom-button\")).toBeInTheDocument();\n });\n});\n```\n\n### Interaction Tests\n\nTest user interactions with the IconButton\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 { IconButton, NimbusProvider } from \"@commercetools/nimbus\";\nimport { Add as AddIcon } from \"@commercetools/nimbus-icons\";\n\ndescribe(\"IconButton - Interactions\", () => {\n it(\"calls onPress when clicked\", async () => {\n const user = userEvent.setup();\n const handlePress = vi.fn();\n\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Add item\" onPress={handlePress}>\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n const button = screen.getByRole(\"button\", { name: /add item/i });\n await user.click(button);\n\n expect(handlePress).toHaveBeenCalledTimes(1);\n });\n\n it(\"does not call onPress when disabled\", async () => {\n const user = userEvent.setup();\n const handlePress = vi.fn();\n\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Add item\" onPress={handlePress} isDisabled>\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n const button = screen.getByRole(\"button\", { name: /add item/i });\n await user.click(button);\n\n expect(handlePress).not.toHaveBeenCalled();\n });\n});\n```\n\n### Keyboard Navigation Tests\n\nTest keyboard interactions with the IconButton\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 { IconButton, NimbusProvider } from \"@commercetools/nimbus\";\nimport { Add as AddIcon } from \"@commercetools/nimbus-icons\";\n\ndescribe(\"IconButton - Keyboard navigation\", () => {\n it(\"is focusable with Tab key\", async () => {\n const user = userEvent.setup();\n\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Add item\">\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n const button = screen.getByRole(\"button\", { name: /add item/i });\n\n await user.tab();\n\n expect(button).toHaveFocus();\n });\n\n it(\"can be activated with Enter key\", async () => {\n const user = userEvent.setup();\n const handlePress = vi.fn();\n\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Add item\" onPress={handlePress}>\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n const button = screen.getByRole(\"button\", { name: /add item/i });\n button.focus();\n\n await user.keyboard(\"{Enter}\");\n\n expect(handlePress).toHaveBeenCalledTimes(1);\n });\n\n it(\"can be activated with Space key\", async () => {\n const user = userEvent.setup();\n const handlePress = vi.fn();\n\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Add item\" onPress={handlePress}>\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n const button = screen.getByRole(\"button\", { name: /add item/i });\n button.focus();\n\n await user.keyboard(\" \");\n\n expect(handlePress).toHaveBeenCalledTimes(1);\n });\n});\n```\n\n### State Tests\n\nTest different states of the IconButton\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 { IconButton, NimbusProvider } from \"@commercetools/nimbus\";\nimport { Add as AddIcon } from \"@commercetools/nimbus-icons\";\n\ndescribe(\"IconButton - States\", () => {\n it(\"applies disabled state\", () => {\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Add item\" isDisabled>\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n const button = screen.getByRole(\"button\", { name: /add item/i });\n expect(button).toBeDisabled();\n });\n});\n```\n\n### Visual Variant Tests\n\nTest different visual variants and sizes\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 { IconButton, NimbusProvider } from \"@commercetools/nimbus\";\nimport { Add as AddIcon } from \"@commercetools/nimbus-icons\";\n\ndescribe(\"IconButton - Visual variants\", () => {\n it(\"renders with different size variants\", () => {\n const { rerender } = render(\n <NimbusProvider>\n <IconButton aria-label=\"Small button\" size=\"xs\">\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n expect(screen.getByRole(\"button\")).toBeInTheDocument();\n\n rerender(\n <NimbusProvider>\n <IconButton aria-label=\"Medium button\" size=\"md\">\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n expect(screen.getByRole(\"button\")).toBeInTheDocument();\n });\n\n it(\"renders with different visual variants\", () => {\n const { rerender } = render(\n <NimbusProvider>\n <IconButton aria-label=\"Solid button\" variant=\"solid\">\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n expect(screen.getByRole(\"button\")).toBeInTheDocument();\n\n rerender(\n <NimbusProvider>\n <IconButton aria-label=\"Outline button\" variant=\"outline\">\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n expect(screen.getByRole(\"button\")).toBeInTheDocument();\n });\n\n it(\"renders with color palettes\", () => {\n render(\n <NimbusProvider>\n <IconButton aria-label=\"Primary action\" colorPalette=\"primary\">\n <AddIcon />\n </IconButton>\n </NimbusProvider>\n );\n\n expect(screen.getByRole(\"button\")).toBeInTheDocument();\n });\n});\n```\n\n\n## Resources\n\n- [Storybook](https://nimbus-storybook.vercel.app/?path=/docs/components-buttons-iconbutton--docs)\n- [Button Component](../components/inputs/button)\n- [React Aria Button](https://react-spectrum.adobe.com/react-aria/Button.html)\n- [ARIA Button Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/button/)\n",
|
|
426
|
+
"toc": [
|
|
427
|
+
{
|
|
428
|
+
"value": "Getting started",
|
|
429
|
+
"href": "#getting-started",
|
|
430
|
+
"depth": 2,
|
|
431
|
+
"numbering": [
|
|
432
|
+
1,
|
|
433
|
+
1
|
|
434
|
+
],
|
|
435
|
+
"parent": "root"
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"value": "Import",
|
|
439
|
+
"href": "#import",
|
|
440
|
+
"depth": 3,
|
|
441
|
+
"numbering": [
|
|
442
|
+
1,
|
|
443
|
+
1,
|
|
444
|
+
1
|
|
445
|
+
],
|
|
446
|
+
"parent": "root"
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"value": "Basic usage",
|
|
450
|
+
"href": "#basic-usage",
|
|
451
|
+
"depth": 3,
|
|
452
|
+
"numbering": [
|
|
453
|
+
1,
|
|
454
|
+
1,
|
|
455
|
+
2
|
|
456
|
+
],
|
|
457
|
+
"parent": "root"
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"value": "Usage examples",
|
|
461
|
+
"href": "#usage-examples",
|
|
462
|
+
"depth": 2,
|
|
463
|
+
"numbering": [
|
|
464
|
+
1,
|
|
465
|
+
2
|
|
466
|
+
],
|
|
467
|
+
"parent": "root"
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"value": "Size options",
|
|
471
|
+
"href": "#size-options",
|
|
472
|
+
"depth": 3,
|
|
473
|
+
"numbering": [
|
|
474
|
+
1,
|
|
475
|
+
2,
|
|
476
|
+
1
|
|
477
|
+
],
|
|
478
|
+
"parent": "root"
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"value": "Visual variants",
|
|
482
|
+
"href": "#visual-variants",
|
|
483
|
+
"depth": 3,
|
|
484
|
+
"numbering": [
|
|
485
|
+
1,
|
|
486
|
+
2,
|
|
487
|
+
2
|
|
488
|
+
],
|
|
489
|
+
"parent": "root"
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"value": "Color palettes",
|
|
493
|
+
"href": "#color-palettes",
|
|
494
|
+
"depth": 3,
|
|
495
|
+
"numbering": [
|
|
496
|
+
1,
|
|
497
|
+
2,
|
|
498
|
+
3
|
|
499
|
+
],
|
|
500
|
+
"parent": "root"
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"value": "Disabled state",
|
|
504
|
+
"href": "#disabled-state",
|
|
505
|
+
"depth": 3,
|
|
506
|
+
"numbering": [
|
|
507
|
+
1,
|
|
508
|
+
2,
|
|
509
|
+
4
|
|
510
|
+
],
|
|
511
|
+
"parent": "root"
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"value": "Press handling",
|
|
515
|
+
"href": "#press-handling",
|
|
516
|
+
"depth": 3,
|
|
517
|
+
"numbering": [
|
|
518
|
+
1,
|
|
519
|
+
2,
|
|
520
|
+
5
|
|
521
|
+
],
|
|
522
|
+
"parent": "root"
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"value": "Component requirements",
|
|
526
|
+
"href": "#component-requirements",
|
|
527
|
+
"depth": 2,
|
|
528
|
+
"numbering": [
|
|
529
|
+
1,
|
|
530
|
+
3
|
|
531
|
+
],
|
|
532
|
+
"parent": "root"
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"value": "Accessibility",
|
|
536
|
+
"href": "#accessibility",
|
|
537
|
+
"depth": 2,
|
|
538
|
+
"numbering": [
|
|
539
|
+
1,
|
|
540
|
+
4
|
|
541
|
+
],
|
|
542
|
+
"parent": "root"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"value": "Keyboard navigation",
|
|
546
|
+
"href": "#keyboard-navigation",
|
|
547
|
+
"depth": 4,
|
|
548
|
+
"numbering": [
|
|
549
|
+
1,
|
|
550
|
+
4,
|
|
551
|
+
1,
|
|
552
|
+
1
|
|
553
|
+
],
|
|
554
|
+
"parent": "root"
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"value": "API reference",
|
|
558
|
+
"href": "#api-reference",
|
|
559
|
+
"depth": 2,
|
|
560
|
+
"numbering": [
|
|
561
|
+
1,
|
|
562
|
+
5
|
|
563
|
+
],
|
|
564
|
+
"parent": "root"
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"value": "Common patterns",
|
|
568
|
+
"href": "#common-patterns",
|
|
569
|
+
"depth": 2,
|
|
570
|
+
"numbering": [
|
|
571
|
+
1,
|
|
572
|
+
6
|
|
573
|
+
],
|
|
574
|
+
"parent": "root"
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
"value": "With Tooltip",
|
|
578
|
+
"href": "#with-tooltip",
|
|
579
|
+
"depth": 3,
|
|
580
|
+
"numbering": [
|
|
581
|
+
1,
|
|
582
|
+
6,
|
|
583
|
+
1
|
|
584
|
+
],
|
|
585
|
+
"parent": "root"
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
"value": "Loading state",
|
|
589
|
+
"href": "#loading-state",
|
|
590
|
+
"depth": 3,
|
|
591
|
+
"numbering": [
|
|
592
|
+
1,
|
|
593
|
+
6,
|
|
594
|
+
2
|
|
595
|
+
],
|
|
596
|
+
"parent": "root"
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"value": "Icon button group",
|
|
600
|
+
"href": "#icon-button-group",
|
|
601
|
+
"depth": 3,
|
|
602
|
+
"numbering": [
|
|
603
|
+
1,
|
|
604
|
+
6,
|
|
605
|
+
3
|
|
606
|
+
],
|
|
607
|
+
"parent": "root"
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"value": "Testing your implementation",
|
|
611
|
+
"href": "#testing-your-implementation",
|
|
612
|
+
"depth": 2,
|
|
613
|
+
"numbering": [
|
|
614
|
+
1,
|
|
615
|
+
7
|
|
616
|
+
],
|
|
617
|
+
"parent": "root"
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"value": "Basic Rendering Tests",
|
|
621
|
+
"href": "#basic-rendering-tests",
|
|
622
|
+
"depth": 3,
|
|
623
|
+
"numbering": [
|
|
624
|
+
1,
|
|
625
|
+
7,
|
|
626
|
+
1
|
|
627
|
+
],
|
|
628
|
+
"parent": "root"
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
"value": "Interaction Tests",
|
|
632
|
+
"href": "#interaction-tests",
|
|
633
|
+
"depth": 3,
|
|
634
|
+
"numbering": [
|
|
635
|
+
1,
|
|
636
|
+
7,
|
|
637
|
+
2
|
|
638
|
+
],
|
|
639
|
+
"parent": "root"
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"value": "Keyboard Navigation Tests",
|
|
643
|
+
"href": "#keyboard-navigation-tests",
|
|
644
|
+
"depth": 3,
|
|
645
|
+
"numbering": [
|
|
646
|
+
1,
|
|
647
|
+
7,
|
|
648
|
+
3
|
|
649
|
+
],
|
|
650
|
+
"parent": "root"
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"value": "State Tests",
|
|
654
|
+
"href": "#state-tests",
|
|
655
|
+
"depth": 3,
|
|
656
|
+
"numbering": [
|
|
657
|
+
1,
|
|
658
|
+
7,
|
|
659
|
+
4
|
|
660
|
+
],
|
|
661
|
+
"parent": "root"
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
"value": "Visual Variant Tests",
|
|
665
|
+
"href": "#visual-variant-tests",
|
|
666
|
+
"depth": 3,
|
|
667
|
+
"numbering": [
|
|
668
|
+
1,
|
|
669
|
+
7,
|
|
670
|
+
5
|
|
671
|
+
],
|
|
672
|
+
"parent": "root"
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
"value": "Resources",
|
|
676
|
+
"href": "#resources",
|
|
677
|
+
"depth": 2,
|
|
678
|
+
"numbering": [
|
|
679
|
+
1,
|
|
680
|
+
8
|
|
681
|
+
],
|
|
682
|
+
"parent": "root"
|
|
683
|
+
}
|
|
684
|
+
]
|
|
685
|
+
},
|
|
686
|
+
"guidelines": {
|
|
687
|
+
"mdx": "\n## Guidelines\n\nIcon buttons are interactive elements that empower users to trigger actions and\nnavigate within your product. They serve as clear calls to action, guiding users\nthrough key flows and enabling them to interact with content in meaningful ways.\nThese guidelines ensure consistent styling and behavior for all buttons,\ncontributing to a cohesive and predictable user experience.\n\n### Writing guidelines\n\n- Use\n [Material Icons](https://mui.com/material-ui/material-icons/?theme=Outlined&query=access#search-material-icons)\n in outline style before adding a new custom icon.\n- Use standard icons.\n- Provide tooltips.\n- Combine with text when needed.\n- Be consistent.\n- Test with users.\n\n#### Preferred words\n\n| **Example** | **Description** |\n| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| <Icon id=\"Edit\" color=\"primary.11\" boxSize=\"24px\" /> | Use for \"edit\". |\n| <Icon id=\"FileUpload\" color=\"primary.11\" boxSize=\"24px\" /> | Upload. |\n| <Icon id=\"FileDownload\" color=\"primary.11\" boxSize=\"24px\" /> | Download. |\n| <Icon id=\"ViewColumn\" color=\"primary.11\" boxSize=\"24px\" /> | \"Table settings\" Shows customizable elements for tables. |\n| <Icon id=\"MoreVert\" color=\"primary.11\" boxSize=\"24px\" /> | \"More options\" shows a list of other features or tools that are not primary or secondary actions. Usually paired with buttons in a button group. For consistency, use the vertical dot version. |\n| <Icon id=\"DragIndicator\" color=\"primary.11\" boxSize=\"24px\" /> | \"Drag\" allows a user to drag elements to reorder. |\n| <Icon id=\"Clear\" color=\"primary.11\" boxSize=\"24px\" /> | Use for \"remove\". This removes the relationship but does **not** delete this item completely. |\n| <Icon id=\"Delete\" color=\"primary.11\" boxSize=\"24px\" /> | Use for \"delete\". This is a destructive action, removes item completely. |\n\n#### Avoid these words\n\n| **Avoid Icon/Concept** | **Use this instead** |\n| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |\n| <Icon id=\"Check\" color=\"primary.11\" boxSize=\"24px\" /><Icon id=\"CheckCircle\" color=\"primary.11\" boxSize=\"24px\" /> | Use a button with \"Save\" instead of an icon button. |\n| <Icon id=\"MoreHoriz\" color=\"primary.11\" boxSize=\"24px\" /> | Use the vertical dot version to show more options. |\n| <Icon id=\"HighlightOff\" color=\"primary.11\" boxSize=\"24px\" /><Icon id=\"DeleteForever\" color=\"primary.11\" boxSize=\"24px\" /><Icon id=\"DoNotDisturb\" color=\"primary.11\" boxSize=\"24px\" /> | If using for the same function as \"delete\" use consistent icon above. |\n| <Icon id=\"Upload\" color=\"primary.11\" boxSize=\"24px\" /><Icon id=\"CloudUpload\" color=\"primary.11\" boxSize=\"24px\" /><Icon id=\"Upgrade\" color=\"primary.11\" boxSize=\"24px\" /><Icon id=\"DriveFolderUpload\" color=\"primary.11\" boxSize=\"24px\" /> | If using for the same function as \"upload\" use consistent icon above. |\n| <Icon id=\"ArrowCircleDown\" color=\"primary.11\" boxSize=\"24px\" /><Icon id=\"Download\" color=\"primary.11\" boxSize=\"24px\" /><Icon id=\"SimCardDownload\" color=\"primary.11\" boxSize=\"24px\" /><Icon id=\"CloudDownload\" color=\"primary.11\" boxSize=\"24px\" /> | If using for the same function as \"download\" use consistent icon above. |\n\n### Usage\n\n#### Common & effective placements:\n\n- **Toolbars**: Icon buttons are perfect for toolbars due to their compact size.\n They allow for many actions to be readily available without cluttering the\n interface.\n- **Navigation** bars/headers: Often used for actions like search, settings, or\n menu access. Placement here makes these key functions easily accessible\n throughout the app.\n- **Within** lists/grids: Icon buttons can be placed next to list items or grid\n elements to provide actions specific to that item (e.g., edit, delete, share).\n- **Contextual** menus: Icon buttons can be used within dropdown menus or\n context menus to provide a visual representation of available actions.\n\n#### Placement considerations:\n\n- **Related to content**: Place icon buttons close to the content they affect.\n For example, an edit button should be near the text it's used to edit.\n- **Consistency**: Maintain consistent placement of similar icon buttons. Users\n expect to find common actions in the same place.\n- **Groupings**: If you have multiple related icon buttons, grouping them\n together visually. Helps users understand the relationships between the\n actions.\n- **Avoid clutter**: Don't overcrowd your UI with too many icon buttons.\n\n> [!TIP]\\\n> When to use\n\n- Space is limited.\n- Actions are universally recognized.\n- Reinforcing meaning.\n- Adding visual appeal.\n- Supporting multiple languages.\n- Interfaces are simple and consistent.\n\n> [!CAUTION]\\\n> When not to use\n\n- Actions are ambiguous.\n- Context is crucial.\n- Actions are critical.\n- Space is plentiful.\n- Interfaces are complex.\n- Testing reveals confusion.\n\n### Color palette and style usage\n\nIcons that are on the left are the best placement. Icons are used to lead the\nuser to the right action quickly by scanning. Ok ways to break this rule are\nwith drop downs and right pointing arrows.\n\n#### Most common: Ghost\n\nThey are often seen next to tables, fields, and toolbars.\n\n```jsx live\nconst App = () => {\n return (\n <Stack direction=\"horizontal\" justifyContent=\"center\">\n <IconButton colorPalette=\"primary\" variant=\"ghost\">\n <Icons.ViewColumn />\n </IconButton>\n <IconButton colorPalette=\"primary\" variant=\"ghost\">\n <Icons.Clear />\n </IconButton>\n </Stack>\n );\n};\n```\n\n#### Solid and outline\n\nSolid icon buttons are most commonly seen in navigation. Outline buttons are\nmost commonly seen in groups of two representing views that can be toggled.\n\n```jsx live\nconst App = () => {\n return (\n <Stack direction=\"horizontal\" justifyContent=\"center\">\n <IconButton colorPalette=\"primary\" variant=\"solid\">\n <Icons.Edit />\n </IconButton>\n <IconButton colorPalette=\"primary\" variant=\"outline\">\n <Icons.Add />\n </IconButton>\n </Stack>\n );\n};\n```\n\n#### Critical color palette\n\nReserved for destructive actions, such as deleting something or removing a\nconnection.\n\n```jsx live\nconst App = () => {\n return (\n <Stack direction=\"horizontal\" justifyContent=\"center\">\n <IconButton colorPalette=\"critical\" variant=\"outline\">\n <Icons.Delete />\n </IconButton>\n <IconButton colorPalette=\"critical\" variant=\"solid\">\n <Icons.Delete />\n </IconButton>\n <IconButton colorPalette=\"critical\" variant=\"ghost\">\n <Icons.Delete />\n </IconButton>\n </Stack>\n );\n};\n```\n\n### Icon placement\n\nThe ideal placement of an icon button depends heavily on its function and the\noverall UI design. Think about the button's function, the content it relates to,\nand how users will expect to find it. Consistency and user testing are key to\noptimizing icon button placement.\n\n> [!TIP]\\\n> **Do**\n>\n> - Tools are grouped together, and adhere to current common page pattern\n> design.\n\n```jsx live\nconst App = () => (\n <Stack>\n <Heading>Organization name</Heading>\n <Tabs.Root size=\"lg\">\n <Box position=\"relative\">\n <Tabs.List>\n <Tabs.Tab id=\"teams\">Teams</Tabs.Tab>\n <Tabs.Tab id=\"settings\">Settings</Tabs.Tab>\n <Tabs.Tab id=\"views\">Views</Tabs.Tab>\n </Tabs.List>\n <Stack\n direction=\"horizontal\"\n gap=\"0\"\n position=\"absolute\"\n top=\"0\"\n right=\"0\"\n alignItems=\"center\"\n >\n <IconButton colorPalette=\"primary\" variant=\"ghost\" aria-label=\"Edit\">\n <Icons.Edit />\n </IconButton>\n <IconButton\n colorPalette=\"primary\"\n variant=\"ghost\"\n aria-label=\"Delete\"\n >\n <Icons.Delete />\n </IconButton>\n </Stack>\n </Box>\n <Tabs.Panels pt=\"400\">\n <Tabs.Panel id=\"teams\">Teams</Tabs.Panel>\n <Tabs.Panel id=\"settings\">Settings</Tabs.Panel>\n <Tabs.Panel id=\"views\">Views</Tabs.Panel>\n </Tabs.Panels>\n </Tabs.Root>\n </Stack>\n);\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - Navigation is higher hierarchy than icon button tools, this is not a common\n> pattern.\n\n```jsx live\nconst App = () => (\n <Stack>\n <Heading>Organization name</Heading>\n <Tabs.Root size=\"lg\">\n <Box position=\"relative\">\n <Stack\n direction=\"horizontal\"\n gap=\"0\"\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n alignItems=\"center\"\n >\n <IconButton colorPalette=\"primary\" variant=\"ghost\" aria-label=\"Edit\">\n <Icons.Edit />\n </IconButton>\n <IconButton\n colorPalette=\"primary\"\n variant=\"ghost\"\n aria-label=\"Delete\"\n >\n <Icons.Delete />\n </IconButton>\n </Stack>\n <Tabs.List paddingStart=\"2000\">\n <Tabs.Tab id=\"teams\">Teams</Tabs.Tab>\n <Tabs.Tab id=\"settings\">Settings</Tabs.Tab>\n <Tabs.Tab id=\"views\">Views</Tabs.Tab>\n </Tabs.List>\n </Box>\n <Tabs.Panels pt=\"400\">\n <Tabs.Panel id=\"teams\">Teams</Tabs.Panel>\n <Tabs.Panel id=\"settings\">Settings</Tabs.Panel>\n <Tabs.Panel id=\"views\">Views</Tabs.Panel>\n </Tabs.Panels>\n </Tabs.Root>\n </Stack>\n);\n```\n\n### Button groupings\n\nButton groups are UI elements that organize multiple buttons together, often\nvisually as a single unit. They serve to present users with a set of related\nchoices or actions in a compact and organized way.\n\n> [!TIP]\\\n> **Do**\n>\n> - If you use a stack of icon buttons for actions, use max 4 and hide the rest\n> within a \"more\" icon.\n\n```jsx live\nconst App = () => {\n return (\n <Stack direction=\"horizontal\" gap=\"0\">\n <IconButton colorPalette=\"primary\" variant=\"ghost\">\n <Icons.Edit />\n </IconButton>\n <IconButton colorPalette=\"primary\" variant=\"ghost\">\n <Icons.PushPin />\n </IconButton>\n <IconButton colorPalette=\"primary\" variant=\"ghost\">\n <Icons.Delete />\n </IconButton>\n <IconButton colorPalette=\"primary\" variant=\"ghost\">\n <Icons.MoreVert />\n </IconButton>\n </Stack>\n );\n};\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - Avoid having all the options as solid primary filled buttons.\n> - Try not to have icon buttons sandwiched between buttons.\n\n```jsx live\nconst App = () => {\n return (\n <Stack direction=\"horizontal\">\n <IconButton colorPalette=\"primary\" variant=\"solid\">\n <Icons.MoreVert />\n </IconButton>\n <Button colorPalette=\"primary\" variant=\"solid\">\n Save changes\n </Button>\n <IconButton colorPalette=\"primary\" variant=\"solid\">\n <Icons.ManageSearch />\n </IconButton>\n <Button colorPalette=\"primary\" variant=\"solid\">\n <Icons.Undo />\n Revert\n </Button>\n </Stack>\n );\n};\n```\n\n> [!TIP]\\\n> **Do**\n>\n> - When offering a toggle experience, connect these icon buttons\n> - Include a tooltip explaining the options.\n> - Selected option is using the \"Solid\" state.\n\n```jsx live\nconst App = () => {\n return (\n <ToggleButtonGroup.Root colorPalette=\"primary\" selectedKeys={[\"left\"]}>\n <ToggleButtonGroup.Button id=\"left\">\n <Icons.AccountTree />\n </ToggleButtonGroup.Button>\n <ToggleButtonGroup.Button id=\"right\">\n <Icons.Search />\n </ToggleButtonGroup.Button>\n </ToggleButtonGroup.Root>\n );\n};\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - If offering a toggle like option view, do not show options as separate\n> - Does not include tooltips or labels, makes it confusing to users to\n> understand this is a either/or choice.\n\n```jsx live\nconst App = () => {\n return (\n <Stack direction=\"horizontal\" gap=\"100\">\n <IconButton colorPalette=\"primary\" variant=\"solid\">\n <Icons.AccountTree />\n </IconButton>\n <IconButton colorPalette=\"primary\" variant=\"outline\">\n <Icons.Search />\n </IconButton>\n </Stack>\n );\n};\n```\n\n> [!TIP]\\\n> **Do**\n>\n> - When pairing icon buttons together, use the ghost style.\n\n```jsx live\nconst App = () => {\n return (\n <Stack direction=\"horizontal\" gap=\"100\">\n <IconButton colorPalette=\"primary\" variant=\"ghost\">\n <Icons.Edit />\n </IconButton>\n <IconButton colorPalette=\"primary\" variant=\"ghost\">\n <Icons.Delete />\n </IconButton>\n </Stack>\n );\n};\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - Avoid having two primary solid icon buttons in the same area.\n\n```jsx live\nconst App = () => {\n return (\n <Stack direction=\"horizontal\" gap=\"100\">\n <IconButton colorPalette=\"primary\" variant=\"solid\">\n <Icons.Edit />\n </IconButton>\n <IconButton colorPalette=\"primary\" variant=\"solid\">\n <Icons.Delete />\n </IconButton>\n </Stack>\n );\n};\n```\n\n### Tooltips\n\nMake sure to place tooltips in areas where they will be seen easily.\n\n> [!TIP]\\\n> **Do**\n>\n> - Place tooltips so that it makes information easy to read.\n\n```jsx live\nconst App = () => {\n return (\n <Stack width=\"185px\">\n <Tooltip.Root delay={0} closeDelay={0} isOpen>\n <IconButton variant=\"ghost\" colorPalette=\"primary\" alignSelf=\"end\">\n <Icons.ViewColumn />\n </IconButton>\n <Tooltip.Content placement=\"top\" offset={-37} crossOffset={-100}>\n Table settings\n </Tooltip.Content>\n </Tooltip.Root>\n <Select.Root aria-label=\"Select a category\" selectedKey=\"\">\n <Select.Options>\n <Select.Option id=\"productColumns\" value=\"productColumns\">\n Product columns\n </Select.Option>\n <Select.Option id=\"variantColumns\" value=\"variantColumns\">\n Variant columns\n </Select.Option>\n <Select.Option id=\"layoutSettings\" value=\"layoutSettings\">\n Layout settings\n </Select.Option>\n </Select.Options>\n </Select.Root>\n </Stack>\n );\n};\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - Be aware of overlap of element placements.\n> - Place tooltips so that it makes information easy to read.\n> - Don't use tooltips to cover the icon button.\n\n```jsx live\nconst App = () => {\n return (\n <Stack width=\"144px\">\n <Tooltip.Root delay={0} closeDelay={0} isOpen>\n <IconButton variant=\"ghost\" colorPalette=\"primary\" alignSelf=\"end\">\n <Icons.ViewColumn />\n </IconButton>\n <Tooltip.Content placement=\"top\" offset={-70} crossOffset={-40}>\n Table settings\n </Tooltip.Content>\n </Tooltip.Root>\n <Select.Root aria-label=\"Select a category\" selectedKey=\"\">\n <Select.Options>\n <Select.Option id=\"productColumns\" value=\"productColumns\">\n Product columns\n </Select.Option>\n <Select.Option id=\"variantColumns\" value=\"variantColumns\">\n Variant columns\n </Select.Option>\n <Select.Option id=\"layoutSettings\" value=\"layoutSettings\">\n Layout settings\n </Select.Option>\n </Select.Options>\n </Select.Root>\n <Box>\n <Tooltip.Root delay={0} closeDelay={0} isOpen>\n <IconButton variant=\"ghost\" colorPalette=\"primary\">\n <Icons.ViewColumn />\n </IconButton>\n <Tooltip.Content placement=\"bottom\" crossOffset={50} offset={-25}>\n Table settings\n </Tooltip.Content>\n </Tooltip.Root>\n </Box>\n </Stack>\n );\n};\n```\n",
|
|
688
|
+
"toc": [
|
|
689
|
+
{
|
|
690
|
+
"value": "Guidelines",
|
|
691
|
+
"href": "#guidelines",
|
|
692
|
+
"depth": 2,
|
|
693
|
+
"numbering": [
|
|
694
|
+
1,
|
|
695
|
+
1
|
|
696
|
+
],
|
|
697
|
+
"parent": "root"
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"value": "Writing guidelines",
|
|
701
|
+
"href": "#writing-guidelines",
|
|
702
|
+
"depth": 3,
|
|
703
|
+
"numbering": [
|
|
704
|
+
1,
|
|
705
|
+
1,
|
|
706
|
+
1
|
|
707
|
+
],
|
|
708
|
+
"parent": "root"
|
|
709
|
+
},
|
|
710
|
+
{
|
|
711
|
+
"value": "Preferred words",
|
|
712
|
+
"href": "#preferred-words",
|
|
713
|
+
"depth": 4,
|
|
714
|
+
"numbering": [
|
|
715
|
+
1,
|
|
716
|
+
1,
|
|
717
|
+
1,
|
|
718
|
+
1
|
|
719
|
+
],
|
|
720
|
+
"parent": "root"
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
"value": "Avoid these words",
|
|
724
|
+
"href": "#avoid-these-words",
|
|
725
|
+
"depth": 4,
|
|
726
|
+
"numbering": [
|
|
727
|
+
1,
|
|
728
|
+
1,
|
|
729
|
+
1,
|
|
730
|
+
2
|
|
731
|
+
],
|
|
732
|
+
"parent": "root"
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"value": "Usage",
|
|
736
|
+
"href": "#usage",
|
|
737
|
+
"depth": 3,
|
|
738
|
+
"numbering": [
|
|
739
|
+
1,
|
|
740
|
+
1,
|
|
741
|
+
2
|
|
742
|
+
],
|
|
743
|
+
"parent": "root"
|
|
744
|
+
},
|
|
745
|
+
{
|
|
746
|
+
"value": "Common & effective placements:",
|
|
747
|
+
"href": "#common--effective-placements",
|
|
748
|
+
"depth": 4,
|
|
749
|
+
"numbering": [
|
|
750
|
+
1,
|
|
751
|
+
1,
|
|
752
|
+
2,
|
|
753
|
+
1
|
|
754
|
+
],
|
|
755
|
+
"parent": "root"
|
|
756
|
+
},
|
|
757
|
+
{
|
|
758
|
+
"value": "Placement considerations:",
|
|
759
|
+
"href": "#placement-considerations",
|
|
760
|
+
"depth": 4,
|
|
761
|
+
"numbering": [
|
|
762
|
+
1,
|
|
763
|
+
1,
|
|
764
|
+
2,
|
|
765
|
+
2
|
|
766
|
+
],
|
|
767
|
+
"parent": "root"
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
"value": "Color palette and style usage",
|
|
771
|
+
"href": "#color-palette-and-style-usage",
|
|
772
|
+
"depth": 3,
|
|
773
|
+
"numbering": [
|
|
774
|
+
1,
|
|
775
|
+
1,
|
|
776
|
+
3
|
|
777
|
+
],
|
|
778
|
+
"parent": "root"
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"value": "Most common: Ghost",
|
|
782
|
+
"href": "#most-common-ghost",
|
|
783
|
+
"depth": 4,
|
|
784
|
+
"numbering": [
|
|
785
|
+
1,
|
|
786
|
+
1,
|
|
787
|
+
3,
|
|
788
|
+
1
|
|
789
|
+
],
|
|
790
|
+
"parent": "root"
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
"value": "Solid and outline",
|
|
794
|
+
"href": "#solid-and-outline",
|
|
795
|
+
"depth": 4,
|
|
796
|
+
"numbering": [
|
|
797
|
+
1,
|
|
798
|
+
1,
|
|
799
|
+
3,
|
|
800
|
+
2
|
|
801
|
+
],
|
|
802
|
+
"parent": "root"
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"value": "Critical color palette",
|
|
806
|
+
"href": "#critical-color-palette",
|
|
807
|
+
"depth": 4,
|
|
808
|
+
"numbering": [
|
|
809
|
+
1,
|
|
810
|
+
1,
|
|
811
|
+
3,
|
|
812
|
+
3
|
|
813
|
+
],
|
|
814
|
+
"parent": "root"
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
"value": "Icon placement",
|
|
818
|
+
"href": "#icon-placement",
|
|
819
|
+
"depth": 3,
|
|
820
|
+
"numbering": [
|
|
821
|
+
1,
|
|
822
|
+
1,
|
|
823
|
+
4
|
|
824
|
+
],
|
|
825
|
+
"parent": "root"
|
|
826
|
+
},
|
|
827
|
+
{
|
|
828
|
+
"value": "Button groupings",
|
|
829
|
+
"href": "#button-groupings",
|
|
830
|
+
"depth": 3,
|
|
831
|
+
"numbering": [
|
|
832
|
+
1,
|
|
833
|
+
1,
|
|
834
|
+
5
|
|
835
|
+
],
|
|
836
|
+
"parent": "root"
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
"value": "Tooltips",
|
|
840
|
+
"href": "#tooltips",
|
|
841
|
+
"depth": 3,
|
|
842
|
+
"numbering": [
|
|
843
|
+
1,
|
|
844
|
+
1,
|
|
845
|
+
6
|
|
846
|
+
],
|
|
847
|
+
"parent": "root"
|
|
848
|
+
}
|
|
849
|
+
]
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
}
|