@cube-dev/ui-kit 0.0.0-canary-1f0dd2c → 0.0.0-canary-1d27aa0
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 +7 -4
- package/dist/README.md +7 -4
- 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.d.ts +0 -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/InfoBadge/InfoBadge.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.d.ts +14 -14
- 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/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.d.ts +1 -2
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.d.ts +0 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.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/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +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/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.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/index.d.ts +0 -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.js +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.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +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/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.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/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.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-modes.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/group-move.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/Board/use-board-select-modifier-key.js +1 -1
- package/dist/components/layout/Board/use-board-selection.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/Pagination/Pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.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/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/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.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.d.ts +1 -2
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.d.ts +0 -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/Modal/types.d.ts +0 -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.d.ts +0 -2
- 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 +2 -1
- package/dist/components/overlays/Tooltip/Tooltip.js.map +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/index.d.ts +0 -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/eslint-plugin/defaults.generated.js +1 -13
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.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/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.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/PipetteIcon.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.js +1 -1
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +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/color-seed.js +1 -1
- package/dist/tokens/color-theme.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/lazy-styles.js +1 -1
- package/dist/tokens/palette-config.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/disabledProps.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/useBufferedValue.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 +3 -3
- package/docs/Colors.md +40 -16
- package/docs/ComplexLayout.md +0 -8
- package/docs/CreateComponent.md +8 -15
- package/docs/Introduction.md +36 -15
- package/docs/RenderCache.md +6 -8
- package/docs/Theming.md +497 -164
- package/docs/Usage.md +138 -108
- package/docs/Utilities.md +2 -2
- package/docs/components/CollectionItem.md +0 -1
- package/docs/components/actions/Banner.md +0 -1
- package/docs/components/actions/Button.md +36 -8
- package/docs/components/actions/ButtonSplit.md +0 -2
- package/docs/components/actions/CommandMenu.md +8 -8
- package/docs/components/actions/ItemButton.md +20 -6
- package/docs/components/actions/Link.md +5 -10
- package/docs/components/actions/Menu.md +11 -24
- package/docs/components/actions/MenuTrigger.md +12 -3
- package/docs/components/actions/use-anchored-menu.md +2 -2
- package/docs/components/actions/use-context-menu.md +2 -5
- package/docs/components/content/Badge.md +0 -3
- package/docs/components/content/HotKeys.md +14 -21
- package/docs/components/content/InlineInput.md +14 -14
- package/docs/components/content/Item.md +17 -25
- package/docs/components/content/ItemCard.md +0 -1
- package/docs/components/content/Layout.md +1 -12
- package/docs/components/content/PrismCode.md +18 -13
- package/docs/components/content/Tag.md +1 -1
- package/docs/components/content/TextItem.md +3 -5
- package/docs/components/content/Tree.md +154 -69
- package/docs/components/data/DataTable.md +168 -56
- package/docs/components/data/ItemTable.md +485 -182
- package/docs/components/fields/Checkbox.md +0 -2
- package/docs/components/fields/ColorInput.md +79 -38
- package/docs/components/fields/ColorPicker.md +39 -17
- package/docs/components/fields/ColorSwatch.md +30 -11
- package/docs/components/fields/ColorSwatchGroup.md +42 -18
- package/docs/components/fields/ComboBox.md +1 -13
- package/docs/components/fields/CommandTextArea.md +37 -10
- package/docs/components/fields/DatePicker.md +0 -3
- package/docs/components/fields/FileInput.md +0 -3
- package/docs/components/fields/FilterListBox.md +14 -34
- package/docs/components/fields/FilterPicker.md +16 -33
- package/docs/components/fields/HueSlider.md +5 -5
- package/docs/components/fields/ListBox.md +9 -35
- package/docs/components/fields/NumberInput.md +0 -3
- package/docs/components/fields/PasswordInput.md +0 -3
- package/docs/components/fields/PeriodPicker.md +17 -7
- package/docs/components/fields/Picker.md +29 -54
- package/docs/components/fields/RadioGroup.md +5 -13
- package/docs/components/fields/SearchComboBox.md +0 -3
- package/docs/components/fields/SearchInput.md +2 -4
- package/docs/components/fields/Select.md +13 -23
- package/docs/components/fields/Switch.md +0 -3
- package/docs/components/fields/TextInput.md +0 -3
- package/docs/components/fields/TextInputMapper.md +2 -1
- package/docs/components/form/Field.md +2 -5
- package/docs/components/form/Form.md +0 -5
- package/docs/components/form/FormInstance.md +1 -1
- package/docs/components/helpers/DisplayTransition.md +6 -10
- package/docs/components/helpers/IconSwitch.md +0 -1
- package/docs/components/layout/Board.md +190 -50
- package/docs/components/navigation/Pagination.md +75 -36
- package/docs/components/navigation/Tabs.md +15 -3
- package/docs/components/other/Calendar.md +39 -22
- package/docs/components/other/CubeLogo.md +1 -1
- package/docs/components/overlays/Dialog.md +0 -3
- package/docs/components/overlays/DialogContainer.md +0 -2
- package/docs/components/overlays/DialogForm.md +2 -6
- package/docs/components/overlays/DialogTrigger.md +2 -4
- package/docs/components/overlays/Notifications.md +0 -7
- package/docs/components/overlays/Toast.md +8 -12
- package/docs/components/overlays/Tooltip.md +12 -6
- package/docs/components/overlays/UseDialogContainer.md +10 -16
- package/docs/components/status/LoadingAnimation.md +9 -3
- package/docs/tasty/configuration.md +0 -127
- package/docs/tasty/injector.md +0 -11
- package/package.json +4 -4
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +0 -2
- package/dist/components/portal/PortalProvider.d.ts +0 -2
|
@@ -149,13 +149,11 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
149
149
|
## Best Practices
|
|
150
150
|
|
|
151
151
|
1. **Do**: Provide clear, descriptive labels
|
|
152
|
-
|
|
153
152
|
```jsx
|
|
154
153
|
<Checkbox>Enable two-factor authentication</Checkbox>
|
|
155
154
|
```
|
|
156
155
|
|
|
157
156
|
2. **Don't**: Use unclear or ambiguous text
|
|
158
|
-
|
|
159
157
|
```jsx
|
|
160
158
|
<Checkbox>Enable</Checkbox> {/* What gets enabled? */}
|
|
161
159
|
```
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
# ColorInput
|
|
2
2
|
|
|
3
|
-
An input for a single color. It reads and writes color **text** — hex, `rgb()`,
|
|
3
|
+
An input for a single color. It reads and writes color **text** — hex, `rgb()`,
|
|
4
|
+
`hsl()`, `okhsl()`, `okhst()` and `oklch()` — shows the current color as a
|
|
5
|
+
swatch, and opens a popover where the color can be dialed in on three
|
|
6
|
+
perceptual axes.
|
|
4
7
|
|
|
5
|
-
Every conversion goes through [Glaze](https://github.com/tenphi/glaze), so the
|
|
8
|
+
Every conversion goes through [Glaze](https://github.com/tenphi/glaze), so the
|
|
9
|
+
canonical value the picker holds is OKHSL: bounded on every channel, and always
|
|
10
|
+
inside the sRGB gamut. That is what makes an out-of-gamut state impossible and
|
|
11
|
+
lets the same value be re-serialized into any of the supported notations without
|
|
12
|
+
drift.
|
|
6
13
|
|
|
7
14
|
## When to Use
|
|
8
15
|
|
|
9
16
|
- Theme and branding forms — a seed color, an accent, a chart series color
|
|
10
|
-
- Anywhere a color has to be typed
|
|
11
|
-
|
|
17
|
+
- Anywhere a color has to be typed *or* explored, rather than chosen from a
|
|
18
|
+
fixed palette
|
|
19
|
+
- When the stored format matters (a design token file wants `oklch()`, a legacy
|
|
20
|
+
API wants hex) and the input has to guarantee it
|
|
12
21
|
|
|
13
|
-
Reach for a `RadioGroup` or `Picker` of swatches instead when the choice is
|
|
22
|
+
Reach for a `RadioGroup` or `Picker` of swatches instead when the choice is
|
|
23
|
+
limited to a handful of approved colors.
|
|
14
24
|
|
|
15
25
|
## Component
|
|
16
26
|
|
|
@@ -33,11 +43,19 @@ Reach for a `RadioGroup` or `Picker` of swatches instead when the choice is limi
|
|
|
33
43
|
- **`onFocus`** `(event: FocusEvent) => void` — Fired when the text input receives focus
|
|
34
44
|
- **`onBlur`** `(event: FocusEvent) => void` — Fired when the text input loses focus
|
|
35
45
|
|
|
36
|
-
Named CSS colors (`red`, `rebeccapurple`) are **not** accepted — they are not a
|
|
46
|
+
Named CSS colors (`red`, `rebeccapurple`) are **not** accepted — they are not a
|
|
47
|
+
color space, and Glaze does not resolve them either. Alpha is parsed but
|
|
48
|
+
dropped: the value is always opaque.
|
|
37
49
|
|
|
38
|
-
Focusing the field selects the whole value, so a pasted color replaces it
|
|
50
|
+
Focusing the field selects the whole value, so a pasted color replaces it
|
|
51
|
+
outright. The string is the unit of editing here: a single channel is tuned with
|
|
52
|
+
the sliders rather than by hand-editing one number inside `oklch(…)`. Clicking a
|
|
53
|
+
field that already has focus positions the caret as usual, so the text stays
|
|
54
|
+
editable by hand.
|
|
39
55
|
|
|
40
|
-
Rendered inside a color popover — as `ColorPicker` does at the top of its panel
|
|
56
|
+
Rendered inside a color popover — as `ColorPicker` does at the top of its panel
|
|
57
|
+
— the trigger is dropped automatically, since the popover it would open is the
|
|
58
|
+
one already showing.
|
|
41
59
|
|
|
42
60
|
### Base Properties
|
|
43
61
|
|
|
@@ -86,31 +104,40 @@ These properties allow direct style application without using the `styles` prop:
|
|
|
86
104
|
|
|
87
105
|
The `mods` property accepts the following modifiers you can override:
|
|
88
106
|
|
|
89
|
-
| Modifier | Type | Description
|
|
90
|
-
| ---------- | --------- |
|
|
91
|
-
| `focused` | `boolean` | The text input has focus
|
|
92
|
-
| `hovered` | `boolean` | The pointer is over the input
|
|
93
|
-
| `disabled` | `boolean` | The picker is disabled
|
|
94
|
-
| `valid` | `boolean` | The field is in the valid state
|
|
95
|
-
| `invalid` | `boolean` | The field is in the invalid state
|
|
96
|
-
| `prefix` | `boolean` | A prefix (the swatch) is rendered
|
|
97
|
-
| `suffix` | `boolean` | A suffix (the trigger) is rendered
|
|
107
|
+
| Modifier | Type | Description |
|
|
108
|
+
| ---------- | --------- | ------------------------------------------------- |
|
|
109
|
+
| `focused` | `boolean` | The text input has focus |
|
|
110
|
+
| `hovered` | `boolean` | The pointer is over the input |
|
|
111
|
+
| `disabled` | `boolean` | The picker is disabled |
|
|
112
|
+
| `valid` | `boolean` | The field is in the valid state |
|
|
113
|
+
| `invalid` | `boolean` | The field is in the invalid state |
|
|
114
|
+
| `prefix` | `boolean` | A prefix (the swatch) is rendered |
|
|
115
|
+
| `suffix` | `boolean` | A suffix (the trigger) is rendered |
|
|
98
116
|
|
|
99
117
|
The swatch carries its own `empty` modifier while there is no color to show.
|
|
100
118
|
|
|
101
119
|
## Format modes
|
|
102
120
|
|
|
103
|
-
The three modes differ in how much freedom the
|
|
121
|
+
The three modes differ in how much freedom the *text* gets. The value is always
|
|
122
|
+
a real color in every one of them.
|
|
104
123
|
|
|
105
|
-
| Mode
|
|
106
|
-
|
|
|
107
|
-
| `forced` | Rewritten in `format` on blur/Enter | Written in `format` from the first change on
|
|
108
|
-
| `derive` | Left exactly as typed
|
|
109
|
-
| `free`
|
|
124
|
+
| Mode | Text | Value |
|
|
125
|
+
| -------- | ----------------------------------- | ---------------------------------------------------- |
|
|
126
|
+
| `forced` | Rewritten in `format` on blur/Enter | Written in `format` from the first change on |
|
|
127
|
+
| `derive` | Left exactly as typed | Normalized in the notation the text is written in |
|
|
128
|
+
| `free` | Left exactly as typed | The text itself, verbatim |
|
|
110
129
|
|
|
111
|
-
In every mode an entry that is not a color is rejected: the previous valid color
|
|
130
|
+
In every mode an entry that is not a color is rejected: the previous valid color
|
|
131
|
+
stays the value while it is being typed, and the text snaps back to it on blur.
|
|
132
|
+
Emptying the field is not an error — it commits `null`.
|
|
112
133
|
|
|
113
|
-
**The value you pass in is left as you wrote it.** No mode reformats it on mount,
|
|
134
|
+
**The value you pass in is left as you wrote it.** No mode reformats it on mount,
|
|
135
|
+
including `forced` — doing so would mean calling `onChange` before the user has
|
|
136
|
+
touched anything, which marks a form dirty for no reason. `forced` normalizes the
|
|
137
|
+
text for display straight away, so the field can show `#7a4dbf` while the value
|
|
138
|
+
is still the `rgb(122 77 191)` you supplied; from the first change onward the
|
|
139
|
+
value is written in `format` too. Normalize before storing if the notation
|
|
140
|
+
matters to you from the outset.
|
|
114
141
|
|
|
115
142
|
```jsx
|
|
116
143
|
// A design-token form that must store OKLCH
|
|
@@ -124,15 +151,18 @@ In every mode an entry that is not a color is rejected: the previous valid color
|
|
|
124
151
|
|
|
125
152
|
The popover edits one canonical color through three sets of axes:
|
|
126
153
|
|
|
127
|
-
| Space | Axes
|
|
128
|
-
|
|
|
154
|
+
| Space | Axes | Good for |
|
|
155
|
+
| ----- | ----------------------------- | ----------------------------------------------------- |
|
|
129
156
|
| `hst` | Hue, Saturation, Tone (OKHST) | Building ramps — equal tone steps read as equal steps |
|
|
130
|
-
| `lch` | Lightness, Chroma, Hue (OKLCH)
|
|
131
|
-
| `rgb` | Red, Green, Blue
|
|
157
|
+
| `lch` | Lightness, Chroma, Hue (OKLCH)| Matching a value from a design-token file |
|
|
158
|
+
| `rgb` | Red, Green, Blue | Matching a value from a legacy palette or a screenshot|
|
|
132
159
|
|
|
133
|
-
Each of these opens on its own space; the switcher inside the popover moves
|
|
160
|
+
Each of these opens on its own space; the switcher inside the popover moves
|
|
161
|
+
between them at any time.
|
|
134
162
|
|
|
135
|
-
`H` means the same angle in HST and LCH, so the hue strip is identical in both.
|
|
163
|
+
`H` means the same angle in HST and LCH, so the hue strip is identical in both.
|
|
164
|
+
The chroma slider is bounded by the sRGB gamut at the current lightness and hue,
|
|
165
|
+
which is why its range changes as `L` moves.
|
|
136
166
|
|
|
137
167
|
## Examples
|
|
138
168
|
|
|
@@ -171,7 +201,9 @@ const [color, setColor] = useState('#7a4dbf');
|
|
|
171
201
|
|
|
172
202
|
### Using the value as a style
|
|
173
203
|
|
|
174
|
-
Because the emitted value is a plain color string, it can go straight into a
|
|
204
|
+
Because the emitted value is a plain color string, it can go straight into a
|
|
205
|
+
tasty style — including the `okhsl()` and `okhst()` notations, which tasty
|
|
206
|
+
parses natively.
|
|
175
207
|
|
|
176
208
|
```jsx
|
|
177
209
|
const [color, setColor] = useState('okhst(264 80% 60%)');
|
|
@@ -198,7 +230,8 @@ const [color, setColor] = useState('okhst(264 80% 60%)');
|
|
|
198
230
|
- The text input announces as a textbox with the field's label
|
|
199
231
|
- The trigger announces as "Open the color picker"
|
|
200
232
|
- The popover announces as a dialog named "Color picker"
|
|
201
|
-
- Each channel slider sits in a group named after its axis (`Hue`,
|
|
233
|
+
- Each channel slider sits in a group named after its axis (`Hue`,
|
|
234
|
+
`Saturation`, `Tone`, `Lightness`, `Chroma`, `Red`, `Green`, `Blue`)
|
|
202
235
|
- The swatch is decorative and is not announced — the text carries the value
|
|
203
236
|
|
|
204
237
|
### ARIA Properties
|
|
@@ -220,20 +253,28 @@ const [color, setColor] = useState('okhst(264 80% 60%)');
|
|
|
220
253
|
<ColorInput aria-label="" />
|
|
221
254
|
```
|
|
222
255
|
|
|
223
|
-
3. **Do**: pick the `format` your backend stores, and leave `formatMode` at
|
|
256
|
+
3. **Do**: pick the `format` your backend stores, and leave `formatMode` at
|
|
257
|
+
`forced` so the two can never disagree.
|
|
224
258
|
|
|
225
|
-
4. **Don't**: use `free` mode when the value is later parsed by something
|
|
259
|
+
4. **Don't**: use `free` mode when the value is later parsed by something
|
|
260
|
+
stricter than a browser — the text is passed through as written.
|
|
226
261
|
|
|
227
262
|
## Integration with Forms
|
|
228
263
|
|
|
229
|
-
This component supports all
|
|
264
|
+
This component supports all
|
|
265
|
+
[Field properties](../../FieldProperties.md) when used
|
|
266
|
+
within a Form. The field value is the color string, and clearing the input
|
|
267
|
+
stores `null`, which makes `required` rules behave as expected.
|
|
230
268
|
|
|
231
269
|
## Suggested Improvements
|
|
232
270
|
|
|
233
|
-
- An eyedropper that samples a pixel from the page, where
|
|
271
|
+
- An eyedropper that samples a pixel from the page, where
|
|
272
|
+
[`EyeDropper`](https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper) is
|
|
273
|
+
available
|
|
234
274
|
- Optional alpha support, which the canonical value currently drops
|
|
235
275
|
- A row of recent or preset swatches inside the popover
|
|
236
|
-
- Editable numeric inputs next to each channel slider, for exact entry without
|
|
276
|
+
- Editable numeric inputs next to each channel slider, for exact entry without
|
|
277
|
+
going through the text field
|
|
237
278
|
|
|
238
279
|
## Related Components
|
|
239
280
|
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# ColorPicker
|
|
2
2
|
|
|
3
|
-
A swatch button that opens the color popover. It is the same popover
|
|
3
|
+
A swatch button that opens the color popover. It is the same popover
|
|
4
|
+
[ColorInput](./ColorInput.md) uses — three perceptual axes backed
|
|
5
|
+
by [Glaze](https://github.com/tenphi/glaze) — without the text field in front of
|
|
6
|
+
it.
|
|
4
7
|
|
|
5
|
-
Reach for it when a color is **chosen but never typed**. Reach for `ColorInput`
|
|
8
|
+
Reach for it when a color is **chosen but never typed**. Reach for `ColorInput`
|
|
9
|
+
when someone needs to paste `#7a4dbf` from a brand guide.
|
|
6
10
|
|
|
7
11
|
## When to Use
|
|
8
12
|
|
|
@@ -10,7 +14,8 @@ Reach for it when a color is **chosen but never typed**. Reach for `ColorInput`
|
|
|
10
14
|
- A chart legend, a tag color, a cell in a dense table
|
|
11
15
|
- Anywhere the exact notation is an implementation detail the user never sees
|
|
12
16
|
|
|
13
|
-
Use [ColorInput](./ColorInput.md) instead when the color has to be
|
|
17
|
+
Use [ColorInput](./ColorInput.md) instead when the color has to be
|
|
18
|
+
readable and pasteable as text.
|
|
14
19
|
|
|
15
20
|
## Component
|
|
16
21
|
|
|
@@ -36,7 +41,10 @@ Use [ColorInput](./ColorInput.md) instead when the color has to be readable and
|
|
|
36
41
|
- **`onOpenChange`** `(isOpen: boolean) => void` — Fired when the popover opens or closes
|
|
37
42
|
- **`shouldFlip`** `boolean` (default: `true`) — Whether the popover may flip to the other side of the trigger
|
|
38
43
|
|
|
39
|
-
There is no `formatMode`: with no text to reconcile, `format` alone decides how
|
|
44
|
+
There is no `formatMode`: with no text to reconcile, `format` alone decides how
|
|
45
|
+
the value is written. Everything else about the color model — the notations it
|
|
46
|
+
reads, the gamut handling, the three spaces — is identical to `ColorInput` and
|
|
47
|
+
documented there.
|
|
40
48
|
|
|
41
49
|
### Base Properties
|
|
42
50
|
|
|
@@ -72,25 +80,30 @@ These properties allow direct style application without using the `styles` prop:
|
|
|
72
80
|
|
|
73
81
|
The `mods` property accepts the following modifiers you can override:
|
|
74
82
|
|
|
75
|
-
| Modifier | Type | Description
|
|
76
|
-
| ------------- | --------- |
|
|
77
|
-
| `placeholder` | `boolean` | No color is selected yet
|
|
83
|
+
| Modifier | Type | Description |
|
|
84
|
+
| ------------- | --------- | ------------------------------------ |
|
|
85
|
+
| `placeholder` | `boolean` | No color is selected yet |
|
|
78
86
|
|
|
79
87
|
The swatch carries its own `empty` modifier while there is no color to show.
|
|
80
88
|
|
|
81
89
|
### The value as text
|
|
82
90
|
|
|
83
|
-
The popover carries a `ColorInput` above the preview, so the exact color can be
|
|
91
|
+
The popover carries a `ColorInput` above the preview, so the exact color can be
|
|
92
|
+
read, copied, pasted and normalized in place rather than only dialed in. It has
|
|
93
|
+
no trigger of its own — a disclosure inside the thing it discloses would be
|
|
94
|
+
meaningless — and clearing it clears the picker.
|
|
84
95
|
|
|
85
96
|
### A palette under the editor
|
|
86
97
|
|
|
87
|
-
Pass `swatches` and a [ColorSwatchGroup](./ColorSwatchGroup.md)
|
|
98
|
+
Pass `swatches` and a [ColorSwatchGroup](./ColorSwatchGroup.md)
|
|
99
|
+
appears below the channels, so a common color is one press away.
|
|
88
100
|
|
|
89
101
|
```jsx
|
|
90
102
|
<ColorPicker label="Brand color" swatches={palette} swatchColumns={4} />
|
|
91
103
|
```
|
|
92
104
|
|
|
93
|
-
That group never offers its own custom-color escape hatch, since the escape
|
|
105
|
+
That group never offers its own custom-color escape hatch, since the escape
|
|
106
|
+
hatch is a `ColorPicker` and would nest popovers without end.
|
|
94
107
|
|
|
95
108
|
## Examples
|
|
96
109
|
|
|
@@ -110,7 +123,8 @@ Drop the label for a compact button — a toolbar, or a cell in a table.
|
|
|
110
123
|
</ColorPicker>
|
|
111
124
|
```
|
|
112
125
|
|
|
113
|
-
Give it an `aria-label` when you do: with no visible text, that is the only
|
|
126
|
+
Give it an `aria-label` when you do: with no visible text, that is the only
|
|
127
|
+
thing naming the control.
|
|
114
128
|
|
|
115
129
|
### A label of your own
|
|
116
130
|
|
|
@@ -147,10 +161,12 @@ Give it an `aria-label` when you do: with no visible text, that is the only thin
|
|
|
147
161
|
|
|
148
162
|
### Screen Reader Support
|
|
149
163
|
|
|
150
|
-
- The trigger announces as a button, named by the field label, `aria-label`, or
|
|
164
|
+
- The trigger announces as a button, named by the field label, `aria-label`, or
|
|
165
|
+
its own text
|
|
151
166
|
- The popover announces as a dialog named "Color picker"
|
|
152
167
|
- Each channel slider sits in a group named after its axis
|
|
153
|
-
- The swatch is decorative; the color is announced as the trigger's text unless
|
|
168
|
+
- The swatch is decorative; the color is announced as the trigger's text unless
|
|
169
|
+
you replace it
|
|
154
170
|
|
|
155
171
|
### ARIA Properties
|
|
156
172
|
|
|
@@ -165,22 +181,28 @@ Give it an `aria-label` when you do: with no visible text, that is the only thin
|
|
|
165
181
|
<ColorPicker aria-label="Series color">{null}</ColorPicker>
|
|
166
182
|
```
|
|
167
183
|
|
|
168
|
-
2. **Don't**: leave a swatch-only picker unnamed — the swatch says nothing to a
|
|
184
|
+
2. **Don't**: leave a swatch-only picker unnamed — the swatch says nothing to a
|
|
185
|
+
screen reader
|
|
169
186
|
|
|
170
187
|
```jsx
|
|
171
188
|
<ColorPicker>{null}</ColorPicker>
|
|
172
189
|
```
|
|
173
190
|
|
|
174
|
-
3. **Do**: reach for `ColorInput` the moment someone might want to paste a hex
|
|
191
|
+
3. **Do**: reach for `ColorInput` the moment someone might want to paste a hex
|
|
192
|
+
value; a picker alone makes that impossible.
|
|
175
193
|
|
|
176
194
|
## Integration with Forms
|
|
177
195
|
|
|
178
|
-
This component supports all
|
|
196
|
+
This component supports all
|
|
197
|
+
[Field properties](../../FieldProperties.md) when used
|
|
198
|
+
within a Form. The field value is the color string.
|
|
179
199
|
|
|
180
200
|
## Suggested Improvements
|
|
181
201
|
|
|
182
202
|
- A row of recent or preset swatches inside the popover
|
|
183
|
-
- An eyedropper that samples a pixel from the page, where
|
|
203
|
+
- An eyedropper that samples a pixel from the page, where
|
|
204
|
+
[`EyeDropper`](https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper) is
|
|
205
|
+
available
|
|
184
206
|
- Clearing the color back to `null` from the trigger
|
|
185
207
|
|
|
186
208
|
## Related Components
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# ColorSwatch
|
|
2
2
|
|
|
3
|
-
A square of color. It is the smallest piece of the color family —
|
|
3
|
+
A square of color. It is the smallest piece of the color family —
|
|
4
|
+
[ColorPicker](./ColorPicker.md),
|
|
5
|
+
[ColorInput](./ColorInput.md) and
|
|
6
|
+
[ColorSwatchGroup](./ColorSwatchGroup.md) all draw one, and it is
|
|
7
|
+
exported so a legend, a list row or a table cell can draw the same one.
|
|
4
8
|
|
|
5
|
-
It is decorative on its own: it carries no text and no accessible name. Pair it
|
|
9
|
+
It is decorative on its own: it carries no text and no accessible name. Pair it
|
|
10
|
+
with the value written out, or put it in a control that names it.
|
|
6
11
|
|
|
7
12
|
## When to Use
|
|
8
13
|
|
|
@@ -27,7 +32,8 @@ Supports [Base properties](../../BaseProperties.md)
|
|
|
27
32
|
|
|
28
33
|
#### styles
|
|
29
34
|
|
|
30
|
-
Customizes the swatch itself. `width` and `height` set here win over both the
|
|
35
|
+
Customizes the swatch itself. `width` and `height` set here win over both the
|
|
36
|
+
`size` prop and the automatic sizing.
|
|
31
37
|
|
|
32
38
|
### Style Properties
|
|
33
39
|
|
|
@@ -42,9 +48,9 @@ These properties allow direct style application without using the `styles` prop:
|
|
|
42
48
|
|
|
43
49
|
The `mods` property accepts the following modifiers you can override:
|
|
44
50
|
|
|
45
|
-
| Modifier | Type
|
|
46
|
-
|
|
|
47
|
-
| `empty`
|
|
51
|
+
| Modifier | Type | Description |
|
|
52
|
+
| -------- | --------- | -------------------------------------------------------------- |
|
|
53
|
+
| `empty` | `boolean` | No color to show — drawn as the conventional diagonal stroke |
|
|
48
54
|
|
|
49
55
|
## Sizes
|
|
50
56
|
|
|
@@ -54,11 +60,21 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
54
60
|
|
|
55
61
|
### Sizing inside a control
|
|
56
62
|
|
|
57
|
-
Leave `size` off and the swatch sizes itself to whatever it sits in. `Item`,
|
|
63
|
+
Leave `size` off and the swatch sizes itself to whatever it sits in. `Item`,
|
|
64
|
+
`Button` and the text inputs publish their own height as the `$size` custom
|
|
65
|
+
property, and the swatch reads it and lands `8px` inside — `20px` in a `small`
|
|
66
|
+
control, `24px` in a `medium` one, `28px` in a `large` one. Nothing has to be
|
|
67
|
+
passed between the two, so a control that changes size takes its swatch with it.
|
|
58
68
|
|
|
59
|
-
Outside a control there is nothing to read, and the swatch falls back to
|
|
69
|
+
Outside a control there is nothing to read, and the swatch falls back to
|
|
70
|
+
`medium`.
|
|
60
71
|
|
|
61
|
-
`ColorInput` and `ColorPicker` deliberately do **not** use this. Their swatch is a
|
|
72
|
+
`ColorInput` and `ColorPicker` deliberately do **not** use this. Their swatch is a
|
|
73
|
+
fixed `20px` badge at every field size — it reads as a value the field is showing
|
|
74
|
+
rather than as part of the control, and a text input hangs its prefix off the border
|
|
75
|
+
with no padding of its own, so a tracking swatch in a large field would sit against
|
|
76
|
+
the edge. Automatic fitting is for a swatch you place yourself, in a `Button` or an
|
|
77
|
+
`Item`, where the host has the padding that makes it work.
|
|
62
78
|
|
|
63
79
|
## Examples
|
|
64
80
|
|
|
@@ -80,7 +96,8 @@ Outside a control there is nothing to read, and the swatch falls back to `medium
|
|
|
80
96
|
|
|
81
97
|
### With the value spelled out
|
|
82
98
|
|
|
83
|
-
The swatch has no accessible name of its own, so the text beside it is what a
|
|
99
|
+
The swatch has no accessible name of its own, so the text beside it is what a
|
|
100
|
+
screen reader announces.
|
|
84
101
|
|
|
85
102
|
```jsx
|
|
86
103
|
<Space gap="1x" placeItems="center start">
|
|
@@ -103,7 +120,9 @@ The swatch has no accessible name of its own, so the text beside it is what a sc
|
|
|
103
120
|
|
|
104
121
|
## Accessibility
|
|
105
122
|
|
|
106
|
-
`ColorSwatch` renders a plain `div` with no role and no name — a color on its
|
|
123
|
+
`ColorSwatch` renders a plain `div` with no role and no name — a color on its
|
|
124
|
+
own is not information a screen reader can use, and an announced hex is rarely
|
|
125
|
+
what the user wants to hear.
|
|
107
126
|
|
|
108
127
|
- **Do** put the value, or the name of the thing the color belongs to, next to it
|
|
109
128
|
- **Do** rely on the surrounding control's `aria-label` when the swatch is its icon
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# ColorSwatchGroup
|
|
2
2
|
|
|
3
|
-
A grid of color swatches, one of which can be selected. It is the palette half
|
|
3
|
+
A grid of color swatches, one of which can be selected. It is the palette half
|
|
4
|
+
of choosing a color, where [ColorPicker](./ColorPicker.md) is the
|
|
5
|
+
freeform half — and the two compose: pass `swatches` to a `ColorPicker` and the
|
|
6
|
+
palette appears under the editor.
|
|
4
7
|
|
|
5
|
-
Under the hood it is a radio group, so one tab stop and arrow keys move between
|
|
8
|
+
Under the hood it is a radio group, so one tab stop and arrow keys move between
|
|
9
|
+
swatches. The API is shaped after `Picker` rather than `RadioGroup`: colors go in
|
|
10
|
+
as data, not as children.
|
|
6
11
|
|
|
7
12
|
## When to Use
|
|
8
13
|
|
|
@@ -53,33 +58,41 @@ These properties allow direct style application without using the `styles` prop:
|
|
|
53
58
|
|
|
54
59
|
### Style Props on the group
|
|
55
60
|
|
|
56
|
-
`ColorSwatchGroup` and `ColorPicker` both take the outer and block style props,
|
|
61
|
+
`ColorSwatchGroup` and `ColorPicker` both take the outer and block style props,
|
|
62
|
+
so `radius`, `border`, `padding` and `shadow` work directly on them.
|
|
57
63
|
|
|
58
64
|
### Modifiers
|
|
59
65
|
|
|
60
66
|
The `mods` property accepts the following modifiers you can override:
|
|
61
67
|
|
|
62
|
-
| Modifier | Type | Description
|
|
63
|
-
| ---------- | --------- |
|
|
64
|
-
| `selected` | `boolean` | The swatch is the selected color
|
|
65
|
-
| `empty` | `boolean` | The swatch has no color to show
|
|
66
|
-
| `disabled` | `boolean` | The group is disabled
|
|
68
|
+
| Modifier | Type | Description |
|
|
69
|
+
| ---------- | --------- | ---------------------------------- |
|
|
70
|
+
| `selected` | `boolean` | The swatch is the selected color |
|
|
71
|
+
| `empty` | `boolean` | The swatch has no color to show |
|
|
72
|
+
| `disabled` | `boolean` | The group is disabled |
|
|
67
73
|
|
|
68
74
|
## ColorSwatch
|
|
69
75
|
|
|
70
|
-
The square itself is exported, for the times you need to show a color without a
|
|
76
|
+
The square itself is exported, for the times you need to show a color without a
|
|
77
|
+
control around it — a legend, a table cell, a summary line. It takes direct
|
|
78
|
+
style props, so its shape and size are yours:
|
|
71
79
|
|
|
72
80
|
```jsx
|
|
73
81
|
<ColorSwatch color="#7a4dbf" radius="round" width="4x" height="4x" />
|
|
74
82
|
```
|
|
75
83
|
|
|
76
|
-
It is decorative on its own: pair it with the value as text, or with something
|
|
84
|
+
It is decorative on its own: pair it with the value as text, or with something
|
|
85
|
+
that names it.
|
|
77
86
|
|
|
78
87
|
## Swatches must be unique
|
|
79
88
|
|
|
80
|
-
Equivalent colors are collapsed into one swatch, because two entries for the
|
|
89
|
+
Equivalent colors are collapsed into one swatch, because two entries for the
|
|
90
|
+
same color make selection ambiguous — there would be no way to say which one is
|
|
91
|
+
selected. Matching is done on the canonical hex, so `#ff0000`, `rgb(255 0 0)`
|
|
92
|
+
and `hsl(0 100% 50%)` are one swatch, not three.
|
|
81
93
|
|
|
82
|
-
The same matching decides which swatch a value selects, so `value` need not be
|
|
94
|
+
The same matching decides which swatch a value selects, so `value` need not be
|
|
95
|
+
written in the same notation as the swatch it refers to.
|
|
83
96
|
|
|
84
97
|
## Examples
|
|
85
98
|
|
|
@@ -96,7 +109,10 @@ The same matching decides which swatch a value selects, so `value` need not be w
|
|
|
96
109
|
|
|
97
110
|
### Wrapping onto rows
|
|
98
111
|
|
|
99
|
-
By default the swatches wrap to fill whatever width they are given: a single row
|
|
112
|
+
By default the swatches wrap to fill whatever width they are given: a single row
|
|
113
|
+
where there is room, more rows where there is not. `columns` pins them to a
|
|
114
|
+
fixed grid instead, sized to the swatches rather than stretched across the
|
|
115
|
+
container.
|
|
100
116
|
|
|
101
117
|
```jsx
|
|
102
118
|
<ColorSwatchGroup colors={palette} columns={4} />
|
|
@@ -104,7 +120,8 @@ By default the swatches wrap to fill whatever width they are given: a single row
|
|
|
104
120
|
|
|
105
121
|
### Naming the swatches
|
|
106
122
|
|
|
107
|
-
A swatch announces its color by default, which is rarely the most useful thing
|
|
123
|
+
A swatch announces its color by default, which is rarely the most useful thing
|
|
124
|
+
to hear. Give the colors names when they have them.
|
|
108
125
|
|
|
109
126
|
```jsx
|
|
110
127
|
<ColorSwatchGroup
|
|
@@ -121,7 +138,8 @@ A swatch announces its color by default, which is rarely the most useful thing t
|
|
|
121
138
|
<ColorSwatchGroup colors={palette} allowCustom />
|
|
122
139
|
```
|
|
123
140
|
|
|
124
|
-
The trailing picker shows the current color whenever that color is not one of
|
|
141
|
+
The trailing picker shows the current color whenever that color is not one of
|
|
142
|
+
the swatches, so a custom choice stays visible.
|
|
125
143
|
|
|
126
144
|
### Inside a ColorPicker
|
|
127
145
|
|
|
@@ -129,7 +147,10 @@ The trailing picker shows the current color whenever that color is not one of th
|
|
|
129
147
|
<ColorPicker label="Brand color" swatches={palette} swatchColumns={4} />
|
|
130
148
|
```
|
|
131
149
|
|
|
132
|
-
`allowCustom` is ignored there, and deliberately so: the escape hatch is itself
|
|
150
|
+
`allowCustom` is ignored there, and deliberately so: the escape hatch is itself
|
|
151
|
+
a `ColorPicker`, so offering it inside one would nest popovers without end. The
|
|
152
|
+
group reads a context the popover provides, which means the recursion cannot be
|
|
153
|
+
written even by hand.
|
|
133
154
|
|
|
134
155
|
## Accessibility
|
|
135
156
|
|
|
@@ -163,11 +184,14 @@ The trailing picker shows the current color whenever that color is not one of th
|
|
|
163
184
|
<ColorSwatchGroup colors={['#ff0000', 'rgb(255 0 0)']} />
|
|
164
185
|
```
|
|
165
186
|
|
|
166
|
-
3. **Do**: reach for `allowCustom` only where a color outside the palette is
|
|
187
|
+
3. **Do**: reach for `allowCustom` only where a color outside the palette is
|
|
188
|
+
genuinely acceptable. A fixed set is the point of this component.
|
|
167
189
|
|
|
168
190
|
## Integration with Forms
|
|
169
191
|
|
|
170
|
-
This component supports all
|
|
192
|
+
This component supports all
|
|
193
|
+
[Field properties](../../FieldProperties.md) when used
|
|
194
|
+
within a Form. The field value is the color string.
|
|
171
195
|
|
|
172
196
|
## Suggested Improvements
|
|
173
197
|
|
|
@@ -66,7 +66,6 @@ A combobox component that combines a text input with a dropdown list, allowing u
|
|
|
66
66
|
**clearOnBlur** - When `true`, clears both the selection and input when the input loses focus. When `false` (default), the input reverts to showing the current selection. Only applies to non-custom-value mode. Useful for search-like scenarios where you want to reset after each interaction.
|
|
67
67
|
|
|
68
68
|
**popoverTrigger** - Controls how the popover opens:
|
|
69
|
-
|
|
70
69
|
- `manual` - Only opens via trigger button or arrow keys
|
|
71
70
|
- `input` (default) - Opens when user types + manual triggers
|
|
72
71
|
- `focus` - Opens on input focus + typing + manual triggers
|
|
@@ -88,7 +87,6 @@ Supports all [Field properties](../../FieldProperties.md)
|
|
|
88
87
|
Customizes the root wrapper element of the ComboBox (the input container).
|
|
89
88
|
|
|
90
89
|
**Sub-elements:**
|
|
91
|
-
|
|
92
90
|
- `Prefix` - Container for prefix content and icons
|
|
93
91
|
- `Suffix` - Container for suffix content, validation icons, and action buttons
|
|
94
92
|
- `InputIcon` - Container for the left icon
|
|
@@ -547,7 +545,6 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
547
545
|
## Best Practices
|
|
548
546
|
|
|
549
547
|
1. **Do**: Provide clear labels and placeholders
|
|
550
|
-
|
|
551
548
|
```jsx
|
|
552
549
|
<ComboBox
|
|
553
550
|
label="Country"
|
|
@@ -558,7 +555,6 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
558
555
|
```
|
|
559
556
|
|
|
560
557
|
2. **Do**: Use sections to group related options
|
|
561
|
-
|
|
562
558
|
```jsx
|
|
563
559
|
<ComboBox label="Contact">
|
|
564
560
|
<ComboBox.Section title="Recent">
|
|
@@ -571,7 +567,6 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
571
567
|
```
|
|
572
568
|
|
|
573
569
|
3. **Do**: Enable `allowsCustomValue` when user input flexibility is needed
|
|
574
|
-
|
|
575
570
|
```jsx
|
|
576
571
|
<ComboBox
|
|
577
572
|
allowsCustomValue
|
|
@@ -583,7 +578,6 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
583
578
|
```
|
|
584
579
|
|
|
585
580
|
4. **Don't**: Use ComboBox for a small fixed set of options
|
|
586
|
-
|
|
587
581
|
```jsx
|
|
588
582
|
{/* Use Select instead for simple dropdowns */}
|
|
589
583
|
<ComboBox label="Yes or No">
|
|
@@ -593,7 +587,6 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
593
587
|
```
|
|
594
588
|
|
|
595
589
|
5. **Don't**: Disable filtering on large lists
|
|
596
|
-
|
|
597
590
|
```jsx
|
|
598
591
|
{/* Defeats the purpose of ComboBox's search capability */}
|
|
599
592
|
<ComboBox filter={false} label="Countries">
|
|
@@ -602,7 +595,6 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
602
595
|
```
|
|
603
596
|
|
|
604
597
|
6. **Accessibility**: Always provide meaningful labels and descriptions
|
|
605
|
-
|
|
606
598
|
```jsx
|
|
607
599
|
<ComboBox
|
|
608
600
|
label="Product Category"
|
|
@@ -614,7 +606,6 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
614
606
|
```
|
|
615
607
|
|
|
616
608
|
7. **Performance**: Use `items` prop with render function for dynamic lists
|
|
617
|
-
|
|
618
609
|
```jsx
|
|
619
610
|
<ComboBox items={largeDataset}>
|
|
620
611
|
{(item) => <ComboBox.Item key={item.id}>{item.name}</ComboBox.Item>}
|
|
@@ -622,7 +613,6 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
622
613
|
```
|
|
623
614
|
|
|
624
615
|
8. **Smart Behavior**: The ComboBox automatically shows all items when opening the popover after filtering yields no results
|
|
625
|
-
|
|
626
616
|
```jsx
|
|
627
617
|
{/* User types "xyz" (no match), then clicks trigger - shows all items */}
|
|
628
618
|
<ComboBox label="Search">
|
|
@@ -632,7 +622,6 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
632
622
|
```
|
|
633
623
|
|
|
634
624
|
9. **Selected Item Sorting**: Use `items` prop for automatic selected-item-first sorting
|
|
635
|
-
|
|
636
625
|
```jsx
|
|
637
626
|
{/* With items prop, selected item appears first by default */}
|
|
638
627
|
<ComboBox items={options} defaultSelectedKey="option5">
|
|
@@ -641,11 +630,10 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
641
630
|
```
|
|
642
631
|
|
|
643
632
|
10. **Independent Control**: Control input and selection separately when needed
|
|
644
|
-
|
|
645
633
|
```jsx
|
|
646
634
|
const [inputValue, setInputValue] = useState('');
|
|
647
635
|
const [selectedKey, setSelectedKey] = useState(null);
|
|
648
|
-
|
|
636
|
+
|
|
649
637
|
<ComboBox
|
|
650
638
|
inputValue={inputValue}
|
|
651
639
|
selectedKey={selectedKey}
|