@cube-dev/ui-kit 0.0.0-canary-eeec9cb → 0.0.0-canary-ad760d2
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/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +0 -6
- package/dist/components/fields/ComboBox/ComboBox.js +5 -10
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +1 -1
- package/dist/components/fields/Picker/Picker.js +3 -7
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +134 -0
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +409 -0
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -0
- package/dist/components/fields/SearchComboBox/index.d.ts +2 -0
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.d.ts +0 -8
- package/dist/components/fields/Select/Select.js +10 -30
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/index.d.ts +2 -0
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Board/Board.js +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/WidgetHost.js +1 -1
- package/dist/components/layout/Board/board-context.js +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/use-board-layout.js +1 -1
- package/dist/components/layout/Board/use-board-registry.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/components/fields/ComboBox.md +0 -14
- package/docs/components/fields/Picker.md +0 -15
- package/docs/components/fields/SearchComboBox.md +251 -0
- package/docs/components/fields/Select.md +1 -13
- package/package.json +1 -1
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# SearchComboBox
|
|
2
|
+
|
|
3
|
+
A search-styled combobox for "search and act" flows. The user types a query, picks a suggestion (or optionally submits raw text), a callback fires, and the input clears so they can search again. Unlike [ComboBox](./ComboBox.md), it does not hold a persistent selection and cannot be connected to a form.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Command palettes, "add item" inputs, or global search where each interaction is a discrete action
|
|
8
|
+
- Server-driven suggestions where results are fetched based on the query (use `filter={false}`)
|
|
9
|
+
- When you want the input to reset after every pick instead of showing the selected label
|
|
10
|
+
- When you optionally want to submit a free-form query that matches no suggestion
|
|
11
|
+
|
|
12
|
+
For a field that keeps a selected value (e.g. inside a form), use [ComboBox](./ComboBox.md) instead.
|
|
13
|
+
|
|
14
|
+
## Component
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
### Properties
|
|
19
|
+
|
|
20
|
+
- **`children`** `ReactNode` — SearchComboBox.Item elements that define the available suggestions
|
|
21
|
+
- **`items`** `Iterable<T>` — Items for the listbox (alternative to children, enables data-driven mode)
|
|
22
|
+
- **`placeholder`** `string` — Placeholder text when the input is empty
|
|
23
|
+
- **`icon`** `ReactElement | null` — Icon rendered before the input. Defaults to a search icon; pass `null` to remove it
|
|
24
|
+
- **`inputValue`** `string` — The current input value in controlled mode
|
|
25
|
+
- **`defaultInputValue`** `string` — The default input value in uncontrolled mode
|
|
26
|
+
- **`emptyLabel`** `ReactNode` (default: context-aware `No results found` / `Loading…`) — Label shown when the list is empty
|
|
27
|
+
- **`filter`** `((textValue: string, inputValue: string) => boolean) | false` — Custom filter function, or `false` to disable internal filtering for external/server-side filtering
|
|
28
|
+
- **`isClearable`** `boolean` (default: `true`) — Whether the input is clearable via the clear button or Escape key
|
|
29
|
+
- **`hideTrigger`** `boolean` (default: `true`) — Whether the dropdown trigger button is hidden (search-field look)
|
|
30
|
+
- **`popoverTrigger`** `'focus' | 'input' | 'manual'` (default: `input`) — How the popover is triggered
|
|
31
|
+
- **`isLoading`** `boolean` (default: `false`) — Whether items are being loaded (e.g. from a server)
|
|
32
|
+
- **`loadingDelay`** `number` (default: `1000`) — Delay in ms before the loading indicator appears
|
|
33
|
+
- **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Size of the component
|
|
34
|
+
- **`disabledKeys`** `Iterable<Key>` — Keys of suggestions that cannot be selected
|
|
35
|
+
- **`onSelect`** `(key: string, textValue: string) => void` — Fired when a suggestion is picked; the input clears afterwards
|
|
36
|
+
- **`onSubmit`** `(value: string) => void` — Opt-in. Fired when Enter is pressed with no focused/available option; the input clears afterwards
|
|
37
|
+
- **`onInputChange`** `(value: string) => void` — Fired when the input text changes
|
|
38
|
+
- **`onClear`** `() => void` — Fired when the input is cleared
|
|
39
|
+
- **`onOpenChange`** `(isOpen: boolean) => void` — Fired when the popover opens or closes
|
|
40
|
+
- **`onFocus`** `() => void` — Fired when focus enters the component
|
|
41
|
+
- **`onBlur`** `() => void` — Fired when focus leaves the component
|
|
42
|
+
- **`onKeyDown`** `(e: KeyboardEvent) => void` — Fired when a key is pressed on the input
|
|
43
|
+
- **`prefix`** `ReactNode` — Content rendered before the input
|
|
44
|
+
- **`suffix`** `ReactNode` — Content rendered after the input
|
|
45
|
+
- **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of suffix relative to status icons
|
|
46
|
+
- **`direction`** `'top' | 'bottom'` (default: `bottom`) — Preferred direction for the dropdown
|
|
47
|
+
- **`shouldFlip`** `boolean` (default: `true`) — Whether the dropdown flips to fit in the viewport
|
|
48
|
+
- **`overlayOffset`** `number` (default: `8`) — Distance between input and dropdown in pixels
|
|
49
|
+
- **`containerPadding`** `number` (default: `8`) — Minimum padding between the popover and viewport edges
|
|
50
|
+
|
|
51
|
+
#### Notable Properties
|
|
52
|
+
|
|
53
|
+
**onSelect vs onSubmit** — `onSelect(key, textValue)` fires when a suggestion from the list is chosen. `onSubmit(value)` is an opt-in escape hatch: when there is no focused or available option and the user presses Enter, the raw trimmed text is submitted. Without `onSubmit`, Enter with no option is a no-op. Both callbacks clear the input afterwards.
|
|
54
|
+
|
|
55
|
+
**filter** — By default the list is filtered client-side with a contains match. Pass a custom `(textValue, inputValue) => boolean`, or set `filter={false}` to disable internal filtering entirely and provide already-filtered `items` yourself (server-side filtering).
|
|
56
|
+
|
|
57
|
+
**isLoading + loadingDelay** — While `isLoading` is `true`, the previous results stay visible. The loading indicator (and the `Loading…` empty label) only appear after `loadingDelay` has elapsed, so fast responses never flash a loading state.
|
|
58
|
+
|
|
59
|
+
### Base Properties
|
|
60
|
+
|
|
61
|
+
Supports [Base properties](../../BaseProperties.md)
|
|
62
|
+
|
|
63
|
+
### Field Properties
|
|
64
|
+
|
|
65
|
+
Supports the layout-related [Field properties](../../FieldProperties.md) (`label`, `description`, `message`, `labelPosition`, etc.). Note that SearchComboBox is not form-connected: it does not accept `name`/`rules` and does not participate in form state or validation.
|
|
66
|
+
|
|
67
|
+
### Styling Properties
|
|
68
|
+
|
|
69
|
+
#### styles
|
|
70
|
+
|
|
71
|
+
Customizes the root wrapper element of the SearchComboBox (the input container).
|
|
72
|
+
|
|
73
|
+
**Sub-elements:**
|
|
74
|
+
- `Prefix` - Container for prefix content and icons
|
|
75
|
+
- `Suffix` - Container for suffix content, status icons, and action buttons
|
|
76
|
+
- `InputIcon` - Container for the left icon
|
|
77
|
+
|
|
78
|
+
#### inputStyles
|
|
79
|
+
|
|
80
|
+
Customizes the text input element where users type.
|
|
81
|
+
|
|
82
|
+
#### triggerStyles
|
|
83
|
+
|
|
84
|
+
Customizes the dropdown trigger button (visible when `hideTrigger={false}`).
|
|
85
|
+
|
|
86
|
+
#### listBoxStyles
|
|
87
|
+
|
|
88
|
+
Customizes the dropdown list container that displays suggestions.
|
|
89
|
+
|
|
90
|
+
#### overlayStyles
|
|
91
|
+
|
|
92
|
+
Customizes the popover overlay wrapper that contains the list.
|
|
93
|
+
|
|
94
|
+
#### optionStyles
|
|
95
|
+
|
|
96
|
+
Customizes individual option items in the dropdown list.
|
|
97
|
+
|
|
98
|
+
#### sectionStyles
|
|
99
|
+
|
|
100
|
+
Customizes section containers when using grouped suggestions.
|
|
101
|
+
|
|
102
|
+
#### headingStyles
|
|
103
|
+
|
|
104
|
+
Customizes section heading elements within grouped suggestions.
|
|
105
|
+
|
|
106
|
+
### Style Properties
|
|
107
|
+
|
|
108
|
+
These properties allow direct style application without using the `styles` prop:
|
|
109
|
+
|
|
110
|
+
- **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
|
|
111
|
+
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`
|
|
112
|
+
- **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
|
|
113
|
+
- **Block:** `border`, `radius`, `shadow`, `outline`
|
|
114
|
+
- **Color:** `color`, `fill`, `fade`, `image`
|
|
115
|
+
|
|
116
|
+
### Modifiers
|
|
117
|
+
|
|
118
|
+
The `mods` property accepts the following modifiers you can override:
|
|
119
|
+
|
|
120
|
+
- **`invalid`** `boolean` — Applied when validation state is invalid
|
|
121
|
+
- **`valid`** `boolean` — Applied when validation state is valid
|
|
122
|
+
- **`disabled`** `boolean` — Applied when the component is disabled
|
|
123
|
+
- **`focused`** `boolean` — Applied when the input has focus
|
|
124
|
+
- **`loading`** `boolean` — Applied when the loading indicator is visible
|
|
125
|
+
- **`prefix`** `boolean` — Applied when prefix content is present
|
|
126
|
+
- **`suffix`** `boolean` — Applied when suffix content is present
|
|
127
|
+
- **`clearable`** `boolean` — Applied when the clear button is visible
|
|
128
|
+
|
|
129
|
+
## Variants
|
|
130
|
+
|
|
131
|
+
### Sizes
|
|
132
|
+
|
|
133
|
+
### With Trigger Button
|
|
134
|
+
|
|
135
|
+
## Examples
|
|
136
|
+
|
|
137
|
+
### Clears on Select
|
|
138
|
+
|
|
139
|
+
```jsx
|
|
140
|
+
<SearchComboBox
|
|
141
|
+
label="Add a fruit"
|
|
142
|
+
placeholder="Search a fruit..."
|
|
143
|
+
onSelect={(key, textValue) => addFruit(key, textValue)}
|
|
144
|
+
>
|
|
145
|
+
<SearchComboBox.Item key="apple">Apple</SearchComboBox.Item>
|
|
146
|
+
<SearchComboBox.Item key="banana">Banana</SearchComboBox.Item>
|
|
147
|
+
</SearchComboBox>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Submit Free-form Text
|
|
151
|
+
|
|
152
|
+
```jsx
|
|
153
|
+
<SearchComboBox
|
|
154
|
+
label="Search or add a tag"
|
|
155
|
+
placeholder="Type and press Enter..."
|
|
156
|
+
onSubmit={(value) => addTag(value)}
|
|
157
|
+
>
|
|
158
|
+
<SearchComboBox.Item key="apple">Apple</SearchComboBox.Item>
|
|
159
|
+
<SearchComboBox.Item key="banana">Banana</SearchComboBox.Item>
|
|
160
|
+
</SearchComboBox>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Custom Empty Label
|
|
164
|
+
|
|
165
|
+
```jsx
|
|
166
|
+
<SearchComboBox
|
|
167
|
+
label="Search a fruit"
|
|
168
|
+
emptyLabel="No fruit matches your search"
|
|
169
|
+
>
|
|
170
|
+
<SearchComboBox.Item key="apple">Apple</SearchComboBox.Item>
|
|
171
|
+
<SearchComboBox.Item key="banana">Banana</SearchComboBox.Item>
|
|
172
|
+
</SearchComboBox>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Server-side Filtering
|
|
176
|
+
|
|
177
|
+
Set `filter={false}` and drive `items` from your own (debounced) fetch. Toggle `isLoading` while the request is in flight — the indicator only appears if it takes longer than `loadingDelay`.
|
|
178
|
+
|
|
179
|
+
```jsx
|
|
180
|
+
const [value, setValue] = useState('');
|
|
181
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
182
|
+
const [results, setResults] = useState([]);
|
|
183
|
+
|
|
184
|
+
useEffect(() => {
|
|
185
|
+
if (!value.trim()) {
|
|
186
|
+
setResults([]);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
setIsLoading(true);
|
|
190
|
+
const handle = setTimeout(async () => {
|
|
191
|
+
setResults(await fetchCountries(value));
|
|
192
|
+
setIsLoading(false);
|
|
193
|
+
}, 400); // debounce is your responsibility
|
|
194
|
+
return () => clearTimeout(handle);
|
|
195
|
+
}, [value]);
|
|
196
|
+
|
|
197
|
+
<SearchComboBox
|
|
198
|
+
filter={false}
|
|
199
|
+
label="Country"
|
|
200
|
+
placeholder="Search countries..."
|
|
201
|
+
inputValue={value}
|
|
202
|
+
isLoading={isLoading}
|
|
203
|
+
items={results}
|
|
204
|
+
emptyLabel={value.trim() ? 'No countries found' : 'Type to search'}
|
|
205
|
+
onInputChange={setValue}
|
|
206
|
+
onSelect={(key) => selectCountry(key)}
|
|
207
|
+
>
|
|
208
|
+
{(item) => <SearchComboBox.Item key={item.key}>{item.name}</SearchComboBox.Item>}
|
|
209
|
+
</SearchComboBox>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Accessibility
|
|
213
|
+
|
|
214
|
+
### Keyboard Navigation
|
|
215
|
+
|
|
216
|
+
- `Tab` - Moves focus to/from the input
|
|
217
|
+
- `ArrowDown` - Opens the popover (if closed) or moves focus to the next suggestion
|
|
218
|
+
- `ArrowUp` - Opens the popover (if closed) or moves focus to the previous suggestion
|
|
219
|
+
- `Enter` - Selects the focused suggestion, or submits the raw text via `onSubmit` when no suggestion is focused
|
|
220
|
+
- `Escape` - Closes the popover (if open) or clears the input (if clearable and popover closed)
|
|
221
|
+
- `Home` / `End` - Moves focus to the first / last suggestion (when the popover is open)
|
|
222
|
+
- Typing - Filters suggestions based on the input value
|
|
223
|
+
|
|
224
|
+
### ARIA Properties
|
|
225
|
+
|
|
226
|
+
- `role="combobox"` - Identifies the input as a combobox
|
|
227
|
+
- `aria-expanded` - Indicates whether the popover is open
|
|
228
|
+
- `aria-haspopup="listbox"` - Indicates the combobox has a listbox popup
|
|
229
|
+
- `aria-controls` - References the listbox ID when the popover is open
|
|
230
|
+
- `aria-activedescendant` - References the currently focused suggestion
|
|
231
|
+
- `aria-label` - Provides an accessible label when no visible label exists
|
|
232
|
+
|
|
233
|
+
## Best Practices
|
|
234
|
+
|
|
235
|
+
1. **Do**: Debounce server requests before updating `items`
|
|
236
|
+
```jsx
|
|
237
|
+
<SearchComboBox filter={false} isLoading={isLoading} items={results} />
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
2. **Do**: Provide a meaningful `emptyLabel` for both the empty and loading states
|
|
241
|
+
```jsx
|
|
242
|
+
<SearchComboBox emptyLabel={query ? 'No results' : 'Type to search'} />
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
3. **Don't**: Use SearchComboBox to capture a persistent value in a form — use [ComboBox](./ComboBox.md) instead
|
|
246
|
+
|
|
247
|
+
## Related Components
|
|
248
|
+
|
|
249
|
+
- [ComboBox](./ComboBox.md) - Use when you need a persistent selection that can be bound to a form
|
|
250
|
+
- [SearchInput](./SearchInput.md) - Use for free-text search without suggestions
|
|
251
|
+
- [ListBox](./ListBox.md) - The underlying list component used in the popover
|
|
@@ -56,7 +56,6 @@ A select allows users to choose a single option from a list of predefined choice
|
|
|
56
56
|
- **`selectionMode`** `'single'` — Selection mode for the select
|
|
57
57
|
- **`onSelectionChange`** `(key: Key) => void` — Callback fired when the selected option changes
|
|
58
58
|
- **`onOpenChange`** `(isOpen: boolean) => void` — Callback fired when the dropdown opens or closes
|
|
59
|
-
- **`emptyLabel`** `ReactNode` — Label shown when the option list is empty. When provided, the popover stays open and displays this message; when omitted, the popover does not open for an empty collection
|
|
60
59
|
- **`onFocus`** `(e: FocusEvent) => void` — Callback fired when the select receives focus
|
|
61
60
|
- **`onBlur`** `(e: FocusEvent) => void` — Callback fired when the select loses focus
|
|
62
61
|
- **`onFocusChange`** `(isFocused: boolean) => void` — Callback fired when focus state changes
|
|
@@ -449,18 +448,6 @@ const groups = [
|
|
|
449
448
|
</Select>
|
|
450
449
|
```
|
|
451
450
|
|
|
452
|
-
### Custom Empty State
|
|
453
|
-
|
|
454
|
-
When `emptyLabel` is provided and there are no options, the popover opens and shows the message. Omit it to keep the popover closed.
|
|
455
|
-
|
|
456
|
-
```jsx
|
|
457
|
-
<Select
|
|
458
|
-
label="Color"
|
|
459
|
-
placeholder="No options available"
|
|
460
|
-
emptyLabel="No colors available"
|
|
461
|
-
/>
|
|
462
|
-
```
|
|
463
|
-
|
|
464
451
|
## Accessibility
|
|
465
452
|
|
|
466
453
|
### Keyboard Navigation
|
|
@@ -589,6 +576,7 @@ This component supports all [Field properties](../../FieldProperties.md) when us
|
|
|
589
576
|
- Implement virtual scrolling for very large option lists (1000+ items)
|
|
590
577
|
- Built-in async loading support with loading states per scroll position
|
|
591
578
|
- Enhanced keyboard shortcuts for power users (e.g., type to jump to option)
|
|
579
|
+
- Custom empty state component when no options are available
|
|
592
580
|
- Support for option groups with visual separators beyond sections
|
|
593
581
|
|
|
594
582
|
## Related Components
|