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