@cube-dev/ui-kit 0.156.0 → 0.157.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +237 -0
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +42 -44
- 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 +2 -2
- package/dist/components/content/Tag/Tag.js.map +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.d.ts +13 -0
- package/dist/components/data/DataTable/DataTable.js +246 -0
- package/dist/components/data/DataTable/DataTable.js.map +1 -0
- package/dist/components/data/DataTable/index.d.ts +3 -0
- package/dist/components/data/DataTable/types.d.ts +145 -0
- package/dist/components/data/ItemTable/ItemTable.d.ts +19 -0
- package/dist/components/data/ItemTable/ItemTable.js +350 -0
- package/dist/components/data/ItemTable/ItemTable.js.map +1 -0
- package/dist/components/data/ItemTable/ItemTableBulkBar.d.ts +23 -0
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +131 -0
- package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -0
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +46 -0
- package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -0
- package/dist/components/data/ItemTable/ItemTableFooter.js +79 -0
- package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -0
- package/dist/components/data/ItemTable/ItemTableToolbar.d.ts +34 -0
- package/dist/components/data/ItemTable/ItemTableToolbar.js +91 -0
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -0
- package/dist/components/data/ItemTable/index.d.ts +4 -0
- package/dist/components/data/ItemTable/types.d.ts +327 -0
- package/dist/components/data/TableBase/ColumnResizer.js +70 -0
- package/dist/components/data/TableBase/ColumnResizer.js.map +1 -0
- package/dist/components/data/TableBase/RowCollection.js +99 -0
- package/dist/components/data/TableBase/RowCollection.js.map +1 -0
- package/dist/components/data/TableBase/TableRow.js +89 -0
- package/dist/components/data/TableBase/TableRow.js.map +1 -0
- package/dist/components/data/TableBase/TableView.d.ts +22 -0
- package/dist/components/data/TableBase/TableView.js +921 -0
- package/dist/components/data/TableBase/TableView.js.map +1 -0
- package/dist/components/data/TableBase/index.d.ts +5 -0
- package/dist/components/data/TableBase/row-menu.js +40 -0
- package/dist/components/data/TableBase/row-menu.js.map +1 -0
- package/dist/components/data/TableBase/styled.d.ts +5 -0
- package/dist/components/data/TableBase/styled.js +532 -0
- package/dist/components/data/TableBase/styled.js.map +1 -0
- package/dist/components/data/TableBase/types.d.ts +160 -0
- package/dist/components/data/TableBase/types.js +31 -0
- package/dist/components/data/TableBase/types.js.map +1 -0
- package/dist/components/data/TableBase/use-cell-selection.d.ts +3 -0
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-cell-selection.js.map +1 -0
- package/dist/components/data/TableBase/use-container-width.js +35 -0
- package/dist/components/data/TableBase/use-container-width.js.map +1 -0
- package/dist/components/data/TableBase/use-row-move-animation.js +90 -0
- package/dist/components/data/TableBase/use-row-move-animation.js.map +1 -0
- package/dist/components/data/TableBase/use-scrollability.js +49 -0
- package/dist/components/data/TableBase/use-scrollability.js.map +1 -0
- package/dist/components/data/TableBase/use-table-columns.d.ts +2 -0
- package/dist/components/data/TableBase/use-table-columns.js +166 -0
- package/dist/components/data/TableBase/use-table-columns.js.map +1 -0
- package/dist/components/data/TableBase/use-table-search.js +64 -0
- package/dist/components/data/TableBase/use-table-search.js.map +1 -0
- package/dist/components/data/TableBase/use-table-selection.d.ts +4 -0
- package/dist/components/data/TableBase/use-table-selection.js +233 -0
- package/dist/components/data/TableBase/use-table-selection.js.map +1 -0
- package/dist/components/data/TableBase/use-table-sort.js +91 -0
- package/dist/components/data/TableBase/use-table-sort.js.map +1 -0
- package/dist/components/data/TableBase/use-table-sorts.js +97 -0
- package/dist/components/data/TableBase/use-table-sorts.js.map +1 -0
- package/dist/components/data/TableBase/use-table-storage.d.ts +8 -0
- package/dist/components/data/TableBase/use-table-storage.js +58 -0
- package/dist/components/data/TableBase/use-table-storage.js.map +1 -0
- package/dist/components/data/index.d.ts +10 -0
- 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.d.ts +67 -0
- package/dist/components/fields/ColorInput/ColorInput.js +230 -0
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -0
- package/dist/components/fields/ColorInput/index.d.ts +2 -0
- package/dist/components/fields/ColorPicker/ColorPicker.d.ts +34 -37
- package/dist/components/fields/ColorPicker/ColorPicker.js +131 -182
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorPicker/index.d.ts +1 -3
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +50 -0
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +269 -0
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -0
- package/dist/components/fields/ColorSwatchGroup/index.d.ts +2 -0
- 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 +2 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +6 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.js +2 -2
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.d.ts +7 -0
- package/dist/components/fields/ListBox/ListBox.js +4 -3
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.d.ts +2 -2
- package/dist/components/fields/PasswordInput/PasswordInput.js +12 -2
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.js +6 -1
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +2 -2
- package/dist/components/fields/RadioGroup/Radio.js +4 -4
- package/dist/components/fields/RadioGroup/Radio.js.map +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.d.ts +2 -2
- package/dist/components/fields/SearchInput/SearchInput.js +17 -4
- package/dist/components/fields/SearchInput/SearchInput.js.map +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.d.ts +2 -2
- package/dist/components/fields/TextArea/TextArea.js +12 -5
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.d.ts +2 -2
- package/dist/components/fields/TextInput/TextInput.js +15 -3
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.d.ts +17 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/index.d.ts +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/{ColorPicker/ColorPickerPanel.js → color/ColorPanel.js} +14 -11
- package/dist/components/fields/color/ColorPanel.js.map +1 -0
- package/dist/components/fields/color/ColorSwatch.d.ts +22 -0
- package/dist/components/fields/color/ColorSwatch.js +58 -0
- package/dist/components/fields/color/ColorSwatch.js.map +1 -0
- package/dist/components/fields/{ColorPicker → color}/channels.d.ts +1 -1
- package/dist/components/fields/{ColorPicker → color}/channels.js +2 -2
- package/dist/components/fields/color/channels.js.map +1 -0
- package/dist/components/fields/color/color.d.ts +21 -0
- package/dist/components/fields/{ColorPicker → color}/color.js +2 -2
- package/dist/components/fields/color/color.js.map +1 -0
- package/dist/components/fields/color/context.js +20 -0
- package/dist/components/fields/color/context.js.map +1 -0
- package/dist/components/fields/color/index.d.ts +4 -0
- package/dist/components/fields/index.d.ts +10 -4
- 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.d.ts +26 -0
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Board/Board.d.ts +8 -0
- package/dist/components/layout/Board/Board.js +6 -5
- 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.js +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/WidgetHost.js +1 -1
- package/dist/components/layout/Board/board-context.js +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +2 -2
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/group-move.js +84 -4
- package/dist/components/layout/Board/grid-core/group-move.js.map +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.d.ts +9 -0
- package/dist/components/navigation/Pagination/Pagination.js +258 -0
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -0
- package/dist/components/navigation/Pagination/index.d.ts +4 -0
- package/dist/components/navigation/Pagination/types.d.ts +81 -0
- package/dist/components/navigation/Pagination/use-pagination.d.ts +52 -0
- package/dist/components/navigation/Pagination/use-pagination.js +83 -0
- package/dist/components/navigation/Pagination/use-pagination.js.map +1 -0
- 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/navigation/index.d.ts +5 -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/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +24 -8
- package/dist/components/shared/DraggableCollection.js.map +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 +223 -5
- 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 +36 -1
- package/dist/i18n/locales/en-US/uikit.js +36 -1
- package/dist/i18n/locales/en-US/uikit.json.d.ts +41 -1
- package/dist/i18n/locales/es-ES/uikit.js +36 -1
- package/dist/i18n/locales/es-MX/uikit.js +36 -1
- package/dist/i18n/locales/fr-FR/uikit.js +36 -1
- package/dist/i18n/locales/it-IT/uikit.js +36 -1
- package/dist/i18n/locales/ja-JP/uikit.js +36 -1
- package/dist/i18n/locales/nb-NO/uikit.js +36 -1
- package/dist/i18n/locales/pt-BR/uikit.js +36 -1
- package/dist/i18n/locales/pt-PT/uikit.js +36 -1
- package/dist/i18n/locales/sv-SE/uikit.js +36 -1
- package/dist/i18n/locales/vi-VN/uikit.js +36 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/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 +28 -14
- package/dist/index.js +15 -7
- package/dist/index.js.map +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/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.d.ts +1 -1
- package/dist/tokens/typography.js +11 -2
- package/dist/tokens/typography.js.map +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.d.ts +1 -0
- package/dist/utils/react/index.js +2 -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.d.ts +56 -0
- package/dist/utils/react/useBufferedValue.js +86 -0
- package/dist/utils/react/useBufferedValue.js.map +1 -0
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/components/actions/ButtonGroup.md +1 -1
- package/docs/components/data/DataTable.md +298 -0
- package/docs/components/data/ItemTable.md +984 -0
- package/docs/components/fields/ColorInput.md +284 -0
- package/docs/components/fields/ColorPicker.md +85 -144
- package/docs/components/fields/ColorSwatchGroup.md +206 -0
- package/docs/components/fields/FilterPicker.md +1 -1
- package/docs/components/fields/ListBox.md +4 -0
- package/docs/components/fields/PasswordInput.md +1 -0
- package/docs/components/fields/Picker.md +1 -1
- package/docs/components/fields/SearchInput.md +1 -0
- package/docs/components/fields/TextArea.md +1 -0
- package/docs/components/fields/TextInput.md +1 -0
- package/docs/components/layout/Board.md +2 -1
- package/docs/components/navigation/Pagination.md +245 -0
- package/package.json +8 -3
- package/dist/components/fields/ColorPicker/ColorPickerPanel.js.map +0 -1
- package/dist/components/fields/ColorPicker/channels.js.map +0 -1
- package/dist/components/fields/ColorPicker/color.d.ts +0 -15
- package/dist/components/fields/ColorPicker/color.js.map +0 -1
- package/dist/components/organisms/FileTabs/FileTabs.d.ts +0 -54
- package/dist/components/organisms/FileTabs/FileTabs.js +0 -282
- package/dist/components/organisms/FileTabs/FileTabs.js.map +0 -1
- package/docs/components/organisms/FileTabs.md +0 -51
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# ColorSwatchGroup
|
|
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.
|
|
7
|
+
|
|
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.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- A brand or theme palette where freeform color would be wrong
|
|
15
|
+
- Chart series, tag and label colors — a small approved set
|
|
16
|
+
- Inside a `ColorPicker` popover, as a shortcut past the sliders
|
|
17
|
+
|
|
18
|
+
## Component
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### Properties
|
|
23
|
+
|
|
24
|
+
- **`colors`** `Array<string | { color: string; label?: string }>` — The colors to offer
|
|
25
|
+
- **`value`** `string | null` — The selected color (controlled)
|
|
26
|
+
- **`defaultValue`** `string | null` — The selected color (uncontrolled)
|
|
27
|
+
- **`onChange`** `(value: string | null) => void` — Fired with the chosen color, written in `format`
|
|
28
|
+
- **`format`** `'hex' | 'rgb' | 'hsl' | 'okhsl' | 'okhst' | 'oklch'` (default: `hex`) — Notation the value is written in
|
|
29
|
+
- **`columns`** `number` — Pin the swatches to a fixed grid. By default they wrap to fill the available width
|
|
30
|
+
- **`allowCustom`** `boolean` (default: `false`) — Append a `ColorPicker` for colors outside the set
|
|
31
|
+
- **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Size of each swatch
|
|
32
|
+
|
|
33
|
+
### Base Properties
|
|
34
|
+
|
|
35
|
+
Supports [Base properties](../../BaseProperties.md)
|
|
36
|
+
|
|
37
|
+
### Field Properties
|
|
38
|
+
|
|
39
|
+
Supports all [Field properties](../../FieldProperties.md)
|
|
40
|
+
|
|
41
|
+
### Styling Properties
|
|
42
|
+
|
|
43
|
+
#### styles
|
|
44
|
+
|
|
45
|
+
Customizes the grid.
|
|
46
|
+
|
|
47
|
+
#### swatchStyles
|
|
48
|
+
|
|
49
|
+
Customizes an individual swatch.
|
|
50
|
+
|
|
51
|
+
### Style Properties
|
|
52
|
+
|
|
53
|
+
These properties allow direct style application without using the `styles` prop:
|
|
54
|
+
|
|
55
|
+
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
|
|
56
|
+
- **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
|
|
57
|
+
- **Block:** `border`, `radius`, `shadow`, `outline`, `padding`, `paddingInline`, `paddingBlock`, `overflow`, `scrollbar`, `textAlign`
|
|
58
|
+
|
|
59
|
+
### Style Props on the group
|
|
60
|
+
|
|
61
|
+
`ColorSwatchGroup` and `ColorPicker` both take the outer and block style props,
|
|
62
|
+
so `radius`, `border`, `padding` and `shadow` work directly on them.
|
|
63
|
+
|
|
64
|
+
### Modifiers
|
|
65
|
+
|
|
66
|
+
The `mods` property accepts the following modifiers you can override:
|
|
67
|
+
|
|
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 |
|
|
73
|
+
|
|
74
|
+
## ColorSwatch
|
|
75
|
+
|
|
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:
|
|
79
|
+
|
|
80
|
+
```jsx
|
|
81
|
+
<ColorSwatch color="#7a4dbf" radius="round" width="4x" height="4x" />
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
It is decorative on its own: pair it with the value as text, or with something
|
|
85
|
+
that names it.
|
|
86
|
+
|
|
87
|
+
## Swatches must be unique
|
|
88
|
+
|
|
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.
|
|
93
|
+
|
|
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.
|
|
96
|
+
|
|
97
|
+
## Examples
|
|
98
|
+
|
|
99
|
+
### Basic usage
|
|
100
|
+
|
|
101
|
+
```jsx
|
|
102
|
+
<ColorSwatchGroup
|
|
103
|
+
label="Brand color"
|
|
104
|
+
colors={['#7a4dbf', '#26fcb2', '#ff0000']}
|
|
105
|
+
value={color}
|
|
106
|
+
onChange={setColor}
|
|
107
|
+
/>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Wrapping onto rows
|
|
111
|
+
|
|
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.
|
|
116
|
+
|
|
117
|
+
```jsx
|
|
118
|
+
<ColorSwatchGroup colors={palette} columns={4} />
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Naming the swatches
|
|
122
|
+
|
|
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.
|
|
125
|
+
|
|
126
|
+
```jsx
|
|
127
|
+
<ColorSwatchGroup
|
|
128
|
+
colors={[
|
|
129
|
+
{ color: '#7a4dbf', label: 'Primary' },
|
|
130
|
+
{ color: '#26fcb2', label: 'Success' },
|
|
131
|
+
]}
|
|
132
|
+
/>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Allowing a color outside the set
|
|
136
|
+
|
|
137
|
+
```jsx
|
|
138
|
+
<ColorSwatchGroup colors={palette} allowCustom />
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
The trailing picker shows the current color whenever that color is not one of
|
|
142
|
+
the swatches, so a custom choice stays visible.
|
|
143
|
+
|
|
144
|
+
### Inside a ColorPicker
|
|
145
|
+
|
|
146
|
+
```jsx
|
|
147
|
+
<ColorPicker label="Brand color" swatches={palette} swatchColumns={4} />
|
|
148
|
+
```
|
|
149
|
+
|
|
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.
|
|
154
|
+
|
|
155
|
+
## Accessibility
|
|
156
|
+
|
|
157
|
+
### Keyboard Navigation
|
|
158
|
+
|
|
159
|
+
- `Tab` — moves focus into the group, landing on the selected swatch
|
|
160
|
+
- `Left` / `Right`, `Up` / `Down` — move between swatches, selecting as they go
|
|
161
|
+
- `Space` — selects the focused swatch
|
|
162
|
+
|
|
163
|
+
### Screen Reader Support
|
|
164
|
+
|
|
165
|
+
- The group announces as a radiogroup, named by its label or `aria-label`
|
|
166
|
+
- Each swatch announces as a radio named by its `label`, or by its color
|
|
167
|
+
- Give the group a name: "radiogroup" alone says nothing about what is chosen
|
|
168
|
+
|
|
169
|
+
### ARIA Properties
|
|
170
|
+
|
|
171
|
+
- `aria-label` — names the group when there is no visible label
|
|
172
|
+
|
|
173
|
+
## Best Practices
|
|
174
|
+
|
|
175
|
+
1. **Do**: name the colors when they mean something
|
|
176
|
+
|
|
177
|
+
```jsx
|
|
178
|
+
<ColorSwatchGroup colors={[{ color: '#ff0000', label: 'Danger' }]} />
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
2. **Don't**: pass the same color twice expecting two swatches — one is dropped
|
|
182
|
+
|
|
183
|
+
```jsx
|
|
184
|
+
<ColorSwatchGroup colors={['#ff0000', 'rgb(255 0 0)']} />
|
|
185
|
+
```
|
|
186
|
+
|
|
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.
|
|
189
|
+
|
|
190
|
+
## Integration with Forms
|
|
191
|
+
|
|
192
|
+
This component supports all
|
|
193
|
+
[Field properties](../../FieldProperties.md) when used
|
|
194
|
+
within a Form. The field value is the color string.
|
|
195
|
+
|
|
196
|
+
## Suggested Improvements
|
|
197
|
+
|
|
198
|
+
- Sections with headings, for palettes with more than one group
|
|
199
|
+
- An optional "no color" swatch that clears the value
|
|
200
|
+
- Multi-selection, for palettes that build a series
|
|
201
|
+
|
|
202
|
+
## Related Components
|
|
203
|
+
|
|
204
|
+
- [ColorPicker](./ColorPicker.md) — freeform color behind a swatch button
|
|
205
|
+
- [ColorInput](./ColorInput.md) — freeform color as editable text
|
|
206
|
+
- [RadioGroup](./RadioGroup.md) — the selection primitive this is built on
|
|
@@ -32,7 +32,7 @@ Choose a different component when the interaction has another shape:
|
|
|
32
32
|
- **`allowsCustomValue`** `boolean` (default: `false`) — Whether to allow entering custom values that are not present in the predefined options
|
|
33
33
|
- **`isClearable`** `boolean` (default: `false`) — Whether the filter picker is clearable using a clear button in the rightIcon slot
|
|
34
34
|
- **`isLoadingItems`** `boolean` (default: `false`) — Whether items are currently loading. Shows a loading spinner in the search input suffix inside the popover. Unlike `isLoading`, does not disable the trigger.
|
|
35
|
-
- **`disallowEmptySelection`** `boolean` (default: `false`) — Whether to disallow empty selection
|
|
35
|
+
- **`disallowEmptySelection`** `boolean` (default: `false`) — Whether to disallow empty selection. In single selection mode, re-selecting the current item becomes a no-op: `onSelectionChange` is not fired and the popover closes
|
|
36
36
|
- **`disabledKeys`** `Key[]` — Array of keys for disabled items
|
|
37
37
|
- **`items`** `Iterable<T>` — Array of items to render when using the render function pattern for large datasets with dynamic content
|
|
38
38
|
- **`placeholder`** `string` — Placeholder text when no selection is made
|
|
@@ -147,6 +147,10 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
147
147
|
- When `true`, prevents the user from deselecting the last selected item
|
|
148
148
|
- Ensures at least one item is always selected in single selection mode
|
|
149
149
|
|
|
150
|
+
**allowDuplicateSelectionEvents** (`boolean`, default: `false`)
|
|
151
|
+
- When `true`, `onSelectionChange` fires even when the new selection equals the current one (React Stately suppresses such duplicate events by default)
|
|
152
|
+
- Used by popover-based wrappers (Picker, FilterPicker) together with `disallowEmptySelection` to close the popover when the user re-selects the current item
|
|
153
|
+
|
|
150
154
|
**disableSelectionToggle** (`boolean`, default: `false`)
|
|
151
155
|
- When `true`, clicking an already-selected item keeps it selected instead of toggling it off
|
|
152
156
|
- Useful when embedding ListBox inside components like ComboBox
|
|
@@ -18,6 +18,7 @@ A password input is a specialized text field that masks user input to protect se
|
|
|
18
18
|
|
|
19
19
|
- **`value`** `string` — The password value in controlled mode
|
|
20
20
|
- **`defaultValue`** `string` — The default password value in uncontrolled mode
|
|
21
|
+
- **`isBuffered`** `boolean` (default: `true`) — Whether typed text is held locally until the controlled `value` catches up. This is what keeps the caret in place when the value round-trips through a store that re-renders a pass late; `onChange` still fires on every keystroke. Set to `false` for a caller that must see the field snap back to its own `value` the moment it declines a keystroke.
|
|
21
22
|
- **`placeholder`** `string` — Placeholder text when input is empty
|
|
22
23
|
- **`icon`** — Icon element rendered before the input
|
|
23
24
|
- **`prefix`** — Input decoration before the main input
|
|
@@ -45,7 +45,7 @@ Choose a different component when the interaction has another shape:
|
|
|
45
45
|
- **`isCheckable`** `boolean` (default: `false`) — Whether to show checkboxes for multiple selection mode
|
|
46
46
|
- **`showSelectAll`** `boolean` (default: `false`) — Whether to show "Select All" option in multiple selection mode
|
|
47
47
|
- **`selectAllLabel`** `ReactNode` (default: `Select All`) — Label for the "Select All" option
|
|
48
|
-
- **`disallowEmptySelection`** `boolean` (default: `false`) — Whether to disallow empty selection
|
|
48
|
+
- **`disallowEmptySelection`** `boolean` (default: `false`) — Whether to disallow empty selection. In single selection mode, re-selecting the current item becomes a no-op: `onSelectionChange` is not fired and the popover closes
|
|
49
49
|
- **`disabledKeys`** `Key[]` — Array of keys for disabled items
|
|
50
50
|
- **`isClearable`** `boolean` (default: `false`) — Whether the picker shows a clear button when a selection is made
|
|
51
51
|
- **`onClear`** `() => void` — Callback called when the clear button is pressed
|
|
@@ -18,6 +18,7 @@ A search input provides a specialized text field for search functionality, featu
|
|
|
18
18
|
|
|
19
19
|
- **`value`** `string` — The search value in controlled mode
|
|
20
20
|
- **`defaultValue`** `string` — The default search value in uncontrolled mode
|
|
21
|
+
- **`isBuffered`** `boolean` (default: `true`) — Whether typed text is held locally until the controlled `value` catches up. This is what keeps the caret in place when the value round-trips through a store that re-renders a pass late; `onChange` still fires on every keystroke. Set to `false` for a caller that must see the field snap back to its own `value` the moment it declines a keystroke.
|
|
21
22
|
- **`placeholder`** `string` — Placeholder text when input is empty
|
|
22
23
|
- **`icon`** `ReactElement` — Icon element rendered before the input (default: search icon)
|
|
23
24
|
- **`prefix`** `ReactNode` — Content rendered before the input
|
|
@@ -39,6 +39,7 @@ These properties allow direct style application without using the `styles` prop:
|
|
|
39
39
|
- **`rows`** `number` (default: `3`) — Number of visible text rows
|
|
40
40
|
- **`value`** `string` — The text value in controlled mode
|
|
41
41
|
- **`defaultValue`** `string` — The default text value in uncontrolled mode
|
|
42
|
+
- **`isBuffered`** `boolean` (default: `true`) — Whether typed text is held locally until the controlled `value` catches up. This is what keeps the caret in place when the value round-trips through a store that re-renders a pass late; `onChange` still fires on every keystroke. Set to `false` for a caller that must see the field snap back to its own `value` the moment it declines a keystroke.
|
|
42
43
|
- **`placeholder`** `string` — Placeholder text when input is empty
|
|
43
44
|
- **`icon`** `ReactElement` — Icon element rendered before the input
|
|
44
45
|
- **`prefix`** `ReactNode` — Input decoration before the main input
|
|
@@ -18,6 +18,7 @@ A text input component that allows users to input custom text entries with a key
|
|
|
18
18
|
|
|
19
19
|
- **`value`** `string` — The text value in controlled mode
|
|
20
20
|
- **`defaultValue`** `string` — The default text value in uncontrolled mode
|
|
21
|
+
- **`isBuffered`** `boolean` (default: `true`) — Whether typed text is held locally until the controlled `value` catches up. This is what keeps the caret in place when the value round-trips through a store that re-renders a pass late; `onChange` still fires on every keystroke. Set to `false` for a caller that must see the field snap back to its own `value` the moment it declines a keystroke.
|
|
21
22
|
- **`placeholder`** `string` — Placeholder text when input is empty
|
|
22
23
|
- **`icon`** — Icon element rendered before the input
|
|
23
24
|
- **`prefix`** — Input decoration before the main input
|
|
@@ -57,6 +57,7 @@ clipped by an ancestor's `overflow: hidden`.
|
|
|
57
57
|
- **`margin`** `[number, number]` (default: `[8, 8]`) — Horizontal/vertical gap between widgets.
|
|
58
58
|
- **`containerPadding`** `[number, number]` — Inner padding. Defaults to `margin`, or to `[0, 0]` for an aligned nested board (`isAligned`) so its grid lines up with the ancestor board's.
|
|
59
59
|
- **`maxRows`** `number` (default: `Infinity`) — Maximum number of rows.
|
|
60
|
+
- **`extraRows`** `number` (default: `0`) — Empty grid rows kept below the content. The board renders this many rows taller than its widgets need, so there is always somewhere to start a marquee and somewhere to drop a widget past the end. A board hugs its content by default, so on a full grid it has neither. Clamped by `maxRows`.
|
|
60
61
|
- **`compact`** `'vertical' | 'horizontal' | 'free' | null` (default: `'vertical'`) — Compaction behavior. `'vertical'`/`'horizontal'` reflow widgets to remove gaps; `'free'` places each widget exactly where dropped and never pushes its neighbours (blocked from occupied cells unless `allowOverlap`); `null` disables compaction but still resolves collisions the legacy react-grid-layout way.
|
|
61
62
|
- **`allowOverlap`** `boolean` (default: `false`) — Allow widgets to overlap (stack). In `'free'` mode this is what distinguishes stacking from blocking a drop onto an occupied cell.
|
|
62
63
|
- **`preventCollision`** `boolean` (default: `false`) — Block movement into occupied cells instead of pushing.
|
|
@@ -73,7 +74,7 @@ clipped by an ancestor's `overflow: hidden`.
|
|
|
73
74
|
- **`defaultSelectedKeys`** `string[]` — Initial selection for uncontrolled usage.
|
|
74
75
|
- **`onSelectionChange`** `(keys: string[]) => void` — Called when the selection changes. Keys are deduped and returned in the board's layout order, never in click order.
|
|
75
76
|
- **`selectionCancel`** `string` (default: `BOARD_SELECTION_CANCEL`) — CSS selector marking interactive descendants. A press on one never selects and never starts a drag, so the control keeps its own click *and* its native focus; it also drops the selection, since interacting with a widget's content means the user has moved on. On a selectable board this doubles as the drag guard, so form controls stay usable without also configuring `dragCancel`. The default covers native form controls, links, and the common ARIA widget roles, plus `[data-no-select]` as an escape hatch. Pass `''` to disable the guard. Can be overridden per widget.
|
|
76
|
-
- **`allowMarqueeSelection`** `boolean` (default: `selectionMode === 'multiple'`) — Draw a rubber-band selection when a drag starts on empty board space. A press on a widget selects and drags instead, so the lasso owns empty canvas only. Hold <kbd>Shift</kbd> or <kbd>Cmd</kbd>/<kbd>Ctrl</kbd> to add to the existing selection rather than replacing it.
|
|
77
|
+
- **`allowMarqueeSelection`** `boolean` (default: `selectionMode === 'multiple'`) — Draw a rubber-band selection when a drag starts on empty board space. A press on a widget selects and drags instead, so the lasso owns empty canvas only. Hold <kbd>Shift</kbd> or <kbd>Cmd</kbd>/<kbd>Ctrl</kbd> to add to the existing selection rather than replacing it. A board sized to its content has no empty space left once the grid fills up, which makes the lasso undiscoverable — use `extraRows` to keep a band of it.
|
|
77
78
|
- **`onWidgetsDelete`** `(keys: string[]) => void` — Called when <kbd>Delete</kbd>/<kbd>Backspace</kbd> is pressed with a non-empty selection and focus is not in an editable field. **Board never mutates the layout itself** — removing the widgets is yours to do, which is what lets you make it undoable. Board only handles these keys when this handler is set.
|
|
78
79
|
- **`constraints`** `LayoutConstraint[]` — Grid/item layout constraints.
|
|
79
80
|
- **`width`** `number` — Explicit width (disables measurement; useful for SSR/tests).
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# Pagination
|
|
2
|
+
|
|
3
|
+
Pagination is the control for moving through a paged collection. It renders a
|
|
4
|
+
bounded run of page buttons, optional first/last jumps, an optional page-size
|
|
5
|
+
selector, and an optional item-range summary.
|
|
6
|
+
|
|
7
|
+
It is a pure control: it owns no data. Client-side slicing lives in the
|
|
8
|
+
companion `usePagination` hook, and `ItemTable` composes the two.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- Paging through a list, table, or grid where the user needs to jump around
|
|
13
|
+
rather than scroll.
|
|
14
|
+
- Cursor pagination with an unknown total — supply `hasNextPage` and omit
|
|
15
|
+
`total`/`totalPages`, and the control degrades to prev/next.
|
|
16
|
+
- Anywhere you need a page-size selector wired to the same state.
|
|
17
|
+
|
|
18
|
+
Prefer infinite scroll when the collection is a feed the user skims, and
|
|
19
|
+
pagination when they need stable, addressable positions.
|
|
20
|
+
|
|
21
|
+
## Component
|
|
22
|
+
|
|
23
|
+
### Properties
|
|
24
|
+
|
|
25
|
+
- **`page`** `number` — Controlled current page, 1-based. Pair with
|
|
26
|
+
`onPageChange`.
|
|
27
|
+
- **`defaultPage`** `number` (default: `1`) — Initial page for uncontrolled
|
|
28
|
+
usage.
|
|
29
|
+
- **`onPageChange`** `(page: number) => void` — Never fires with a page outside
|
|
30
|
+
`1…totalPages` when the total is known.
|
|
31
|
+
- **`total`** `number` — Total items across all pages. Preferred over
|
|
32
|
+
`totalPages`; it also powers the range summary and the `select` type's range
|
|
33
|
+
labels.
|
|
34
|
+
- **`totalPages`** `number` — Total pages. Only needed when the item count is
|
|
35
|
+
genuinely unavailable. Wins over the value derived from `total` + `pageSize`.
|
|
36
|
+
- **`pageSize`** `number` — Controlled page size.
|
|
37
|
+
- **`defaultPageSize`** `number` (default: `50`) — Initial page size for
|
|
38
|
+
uncontrolled usage.
|
|
39
|
+
- **`onPageSizeChange`** `(pageSize: number) => void` — Changing the size also
|
|
40
|
+
resets to page 1, because the old page index no longer refers to the same
|
|
41
|
+
items.
|
|
42
|
+
- **`pageSizeOptions`** `number[]` — Supplying this **and** `onPageSizeChange`
|
|
43
|
+
renders the size selector.
|
|
44
|
+
- **`type`** `'numbers' | 'select' | 'compact'` (default: `'numbers'`) — How the
|
|
45
|
+
page control is rendered. `numbers` is the default because it is the only mode
|
|
46
|
+
whose rendered element count is independent of the page count; `select`
|
|
47
|
+
materializes one entry per page, so above a safety cap the component falls
|
|
48
|
+
back to `compact` on its own.
|
|
49
|
+
- **`siblingCount`** `number` (default: `1`) — Page buttons either side of the
|
|
50
|
+
current page.
|
|
51
|
+
- **`boundaryCount`** `number` (default: `1`) — Page buttons pinned at each end.
|
|
52
|
+
Together with `siblingCount` this bounds the rendered count at
|
|
53
|
+
`boundaryCount * 2 + siblingCount * 2 + 3`.
|
|
54
|
+
- **`size`** `'small' | 'medium'` (default: `'small'`) — Control size.
|
|
55
|
+
- **`isDisabled`** `boolean` — Disable every control.
|
|
56
|
+
- **`hasNextPage`** `boolean` — Keeps "next" enabled when the total is unknown.
|
|
57
|
+
Ignored once `total` or `totalPages` is supplied — a known total is always
|
|
58
|
+
authoritative.
|
|
59
|
+
- **`isCompact`** `boolean` (default: `false`) — Hide the first/last jump
|
|
60
|
+
buttons.
|
|
61
|
+
- **`summary`** `boolean | ((info: CubeTablePageInfo) => ReactNode)` (default:
|
|
62
|
+
`false`) — `true` renders the localized `1–50 of 1,204`, with numbers
|
|
63
|
+
formatted for the active locale. Pass a function for full control.
|
|
64
|
+
- **`labelFormatter`** `(info: CubeTablePageInfo) => ReactNode` — Labels the
|
|
65
|
+
entries of `type="select"`. Receives the page info with `page` set to the
|
|
66
|
+
entry being labelled.
|
|
67
|
+
- **`ariaLabel`** `string` — Labels the `<nav>` landmark. Defaults to the
|
|
68
|
+
localized "Pagination".
|
|
69
|
+
|
|
70
|
+
#### `CubeTablePageInfo`
|
|
71
|
+
|
|
72
|
+
Handed to `summary` and `labelFormatter`:
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
interface CubeTablePageInfo {
|
|
76
|
+
page: number; // 1-based
|
|
77
|
+
pageSize: number;
|
|
78
|
+
totalPages: number;
|
|
79
|
+
total: number; // 0 when unknown
|
|
80
|
+
from: number; // 1-based index of the first item on this page
|
|
81
|
+
to: number; // 1-based index of the last item on this page
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Base Properties
|
|
86
|
+
|
|
87
|
+
Supports Base Properties.
|
|
88
|
+
|
|
89
|
+
### Styling Properties
|
|
90
|
+
|
|
91
|
+
#### styles
|
|
92
|
+
|
|
93
|
+
Customizes the root element.
|
|
94
|
+
|
|
95
|
+
**Sub-elements:**
|
|
96
|
+
|
|
97
|
+
- `Summary` — the range summary and the `compact` page label
|
|
98
|
+
- `Controls` — the row of nav and page buttons
|
|
99
|
+
- `Gap` — the `…` between two runs of page numbers
|
|
100
|
+
|
|
101
|
+
#### pageSizeSelectStyles
|
|
102
|
+
|
|
103
|
+
Customizes the page-size `Select`.
|
|
104
|
+
|
|
105
|
+
### Style Properties
|
|
106
|
+
|
|
107
|
+
These properties allow direct style application without using the `styles` prop:
|
|
108
|
+
|
|
109
|
+
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
|
|
110
|
+
- **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
|
|
111
|
+
- **Block:** `border`, `radius`, `shadow`, `outline`
|
|
112
|
+
|
|
113
|
+
### Modifiers
|
|
114
|
+
|
|
115
|
+
| Modifier | Type | Description |
|
|
116
|
+
| -------- | ---- | ----------- |
|
|
117
|
+
| `size` | `'small' \| 'medium'` | Control size |
|
|
118
|
+
|
|
119
|
+
## Examples
|
|
120
|
+
|
|
121
|
+
### Basic Usage
|
|
122
|
+
|
|
123
|
+
```jsx
|
|
124
|
+
const [page, setPage] = useState(1);
|
|
125
|
+
|
|
126
|
+
<Pagination page={page} pageSize={50} total={1204} onPageChange={setPage} />;
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### With a Summary
|
|
130
|
+
|
|
131
|
+
```jsx
|
|
132
|
+
<Pagination page={3} pageSize={50} total={1204} summary onPageChange={setPage} />
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Many Pages
|
|
136
|
+
|
|
137
|
+
A million rows at 50 per page is 20 000 pages — and still ~7 buttons.
|
|
138
|
+
|
|
139
|
+
```jsx
|
|
140
|
+
<Pagination page={9421} pageSize={50} total={1000000} summary onPageChange={setPage} />
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Page Size Selector
|
|
144
|
+
|
|
145
|
+
```jsx
|
|
146
|
+
const [page, setPage] = useState(1);
|
|
147
|
+
const [pageSize, setPageSize] = useState(50);
|
|
148
|
+
|
|
149
|
+
<Pagination
|
|
150
|
+
page={page}
|
|
151
|
+
pageSize={pageSize}
|
|
152
|
+
total={1204}
|
|
153
|
+
pageSizeOptions={[10, 20, 50, 100, 500]}
|
|
154
|
+
summary
|
|
155
|
+
onPageChange={setPage}
|
|
156
|
+
onPageSizeChange={setPageSize}
|
|
157
|
+
/>;
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Unknown Total (Cursor Pagination)
|
|
161
|
+
|
|
162
|
+
```jsx
|
|
163
|
+
<Pagination page={page} hasNextPage={hasNextPage} onPageChange={setPage} />
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Compact
|
|
167
|
+
|
|
168
|
+
```jsx
|
|
169
|
+
<Pagination type="compact" page={3} pageSize={50} total={1204} summary />
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Client-side Slicing with `usePagination`
|
|
173
|
+
|
|
174
|
+
```jsx
|
|
175
|
+
const { pageItems, page, pageSize, total, setPage, setPageSize } =
|
|
176
|
+
usePagination(items, { defaultPageSize: 10 });
|
|
177
|
+
|
|
178
|
+
return (
|
|
179
|
+
<>
|
|
180
|
+
{pageItems.map((item) => (
|
|
181
|
+
<Text key={item}>{item}</Text>
|
|
182
|
+
))}
|
|
183
|
+
<Pagination
|
|
184
|
+
page={page}
|
|
185
|
+
pageSize={pageSize}
|
|
186
|
+
total={total}
|
|
187
|
+
pageSizeOptions={[5, 10, 25]}
|
|
188
|
+
summary
|
|
189
|
+
onPageChange={setPage}
|
|
190
|
+
onPageSizeChange={setPageSize}
|
|
191
|
+
/>
|
|
192
|
+
</>
|
|
193
|
+
);
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Accessibility
|
|
197
|
+
|
|
198
|
+
### Keyboard Navigation
|
|
199
|
+
|
|
200
|
+
- `Tab` — moves through the controls in visual order.
|
|
201
|
+
- `Enter` / `Space` — activates the focused button.
|
|
202
|
+
|
|
203
|
+
Every control is a real `<button>`, so there is nothing bespoke to learn.
|
|
204
|
+
|
|
205
|
+
### Screen Reader Support
|
|
206
|
+
|
|
207
|
+
- The root is a `<nav>` landmark labelled "Pagination" (override with
|
|
208
|
+
`ariaLabel`).
|
|
209
|
+
- The current page button carries `aria-current="page"`.
|
|
210
|
+
- Every button has an explicit `aria-label` — "Page 3", "Next page", and so on
|
|
211
|
+
— so an icon-only button is never announced as unlabelled.
|
|
212
|
+
- The `…` gap is `aria-hidden`; it conveys nothing a screen reader user needs.
|
|
213
|
+
|
|
214
|
+
### ARIA Properties
|
|
215
|
+
|
|
216
|
+
| Property | Applied to |
|
|
217
|
+
| -------- | ---------- |
|
|
218
|
+
| `aria-label` | The `<nav>` and every button |
|
|
219
|
+
| `aria-current="page"` | The current page button |
|
|
220
|
+
| `aria-hidden="true"` | The `…` gap |
|
|
221
|
+
|
|
222
|
+
## Best Practices
|
|
223
|
+
|
|
224
|
+
- Do: pass `total` rather than `totalPages` when you know the item count — the
|
|
225
|
+
summary and range labels both need it.
|
|
226
|
+
- Do: use `type="numbers"` (the default) for anything that can grow. It is the
|
|
227
|
+
only mode whose cost does not scale with the page count.
|
|
228
|
+
- Do: reset to page 1 whenever the underlying query changes (a new search term,
|
|
229
|
+
a new filter). A stale page index against a smaller result set shows an empty
|
|
230
|
+
page.
|
|
231
|
+
- Don't: render `type="select"` over a large page count. It builds one
|
|
232
|
+
collection item per page.
|
|
233
|
+
- Don't: pass both `hasNextPage` and a known total and expect the former to win
|
|
234
|
+
— it doesn't.
|
|
235
|
+
|
|
236
|
+
## Suggested Improvements
|
|
237
|
+
|
|
238
|
+
- A "jump to page" input for very large page counts.
|
|
239
|
+
- Optional URL synchronization, so a page is linkable.
|
|
240
|
+
|
|
241
|
+
## Related Components
|
|
242
|
+
|
|
243
|
+
- ItemTable — composes `Pagination` in its footer
|
|
244
|
+
- [Select](../fields/Select.md) — used for the page-size selector
|
|
245
|
+
- [Button](../actions/Button.md) — used for every nav and page control
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cube-dev/ui-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.157.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "UIKit for Cube Projects",
|
|
6
6
|
"repository": {
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"@react-aria/ssr": "^3.9.10",
|
|
49
49
|
"@react-aria/utils": "^3.32.0",
|
|
50
50
|
"@react-spectrum/utils": "^3.12.10",
|
|
51
|
+
"@react-stately/selection": "^3.20.7",
|
|
51
52
|
"@react-stately/utils": "^3.11.0",
|
|
52
53
|
"@react-types/shared": "^3.32.1",
|
|
53
54
|
"@tabler/icons-react": "^3.31.0",
|
|
@@ -104,7 +105,9 @@
|
|
|
104
105
|
"@types/react-test-renderer": "^18.0.7",
|
|
105
106
|
"@uiw/react-codemirror": "^4.25.4",
|
|
106
107
|
"@vitejs/plugin-react": "^6.0.0",
|
|
107
|
-
"@vitest/
|
|
108
|
+
"@vitest/browser": "^4.1.10",
|
|
109
|
+
"@vitest/browser-playwright": "^4.1.10",
|
|
110
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
108
111
|
"best-effort-json-parser": "^1.2.1",
|
|
109
112
|
"bytes": "^3.1.2",
|
|
110
113
|
"chromatic": "^13.1.4",
|
|
@@ -117,6 +120,7 @@
|
|
|
117
120
|
"markdown-table": "^3.0.3",
|
|
118
121
|
"npm-run-all": "^4.1.5",
|
|
119
122
|
"oxlint": "^1.72.0",
|
|
123
|
+
"playwright": "^1.62.1",
|
|
120
124
|
"prettier": "^3.2.5",
|
|
121
125
|
"react": "^19.1.1",
|
|
122
126
|
"react-dom": "^19.1.1",
|
|
@@ -131,7 +135,7 @@
|
|
|
131
135
|
"tsdown": "^0.20.3",
|
|
132
136
|
"typescript": "^5.6.3",
|
|
133
137
|
"vite": "^8.0.0",
|
|
134
|
-
"vitest": "^4.1.
|
|
138
|
+
"vitest": "^4.1.10"
|
|
135
139
|
},
|
|
136
140
|
"browserslist": [
|
|
137
141
|
"last 2 Chrome versions",
|
|
@@ -148,6 +152,7 @@
|
|
|
148
152
|
"build": "tsdown",
|
|
149
153
|
"watch": "tsdown --watch",
|
|
150
154
|
"test": "vitest run",
|
|
155
|
+
"test:browser": "vitest run --config vitest.browser.config.ts",
|
|
151
156
|
"test-cover": "vitest run --coverage",
|
|
152
157
|
"test-watch": "vitest",
|
|
153
158
|
"prettier": "prettier --check \"src/**/*.{js,jsx,ts,tsx}\"",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPickerPanel.js","names":["Slider","Radio"],"sources":["../../../../src/components/fields/ColorPicker/ColorPickerPanel.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport { useMemo } from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { Radio } from '../RadioGroup';\nimport { Slider } from '../Slider';\n\nimport {\n CHANNELS,\n COLOR_SPACE_HINTS,\n COLOR_SPACE_LABELS,\n COLOR_SPACES,\n ColorChannel,\n ColorSpace,\n} from './channels';\nimport {\n ColorFormat,\n ColorValue,\n formatColor,\n getContrastingColor,\n toHex,\n} from './color';\n\nconst PanelElement = tasty({\n qa: 'ColorPickerPanel',\n styles: {\n display: 'grid',\n flow: 'row',\n gap: '1x',\n padding: '1x',\n width: '34x',\n },\n});\n\nconst PreviewElement = tasty({\n qa: 'ColorPreview',\n styles: {\n display: 'grid',\n placeItems: 'center',\n height: '6x',\n radius: true,\n preset: 's4',\n fill: '(#color-picker, #clear)',\n color: '(#color-picker-contrast, #dark)',\n shadow: 'inset 0 0 0 1bw #dark.1',\n },\n});\n\nconst ChannelsElement = tasty({\n styles: {\n display: 'grid',\n gridColumns: 'max-content 1sf max-content',\n placeItems: 'center stretch',\n gap: '1x',\n },\n});\n\nconst ChannelLabelElement = tasty({\n styles: {\n preset: 'c2',\n color: '#dark-03',\n textAlign: 'center',\n width: '2x',\n },\n});\n\nconst ChannelTrackElement = tasty({\n styles: {\n display: 'grid',\n placeItems: 'center stretch',\n },\n});\n\nconst ChannelValueElement = tasty({\n styles: {\n preset: 's4',\n color: '#dark-02',\n textAlign: 'right',\n whiteSpace: 'nowrap',\n width: '5.5x',\n },\n});\n\n/**\n * The gradient reaches the track through a plain custom property so the track\n * keeps a single cached style rule. A color picker moves its channels\n * continuously, and a fresh `styles` object per frame would emit a fresh CSS\n * rule per frame.\n */\nconst TRACK_STYLES: Styles = {\n height: '1x',\n top: '.5x',\n radius: '1r',\n fill: '#clear',\n image: '$channel-gradient',\n shadow: 'inset 0 0 0 1bw #dark.1',\n Fill: false,\n};\n\n/** A ring keeps the thumb visible wherever it sits on its own gradient. */\nconst THUMB_STYLES: Styles = {\n shadow: '0 0 0 2bw #surface, 0 0 0 3bw #dark.2',\n};\n\nconst THUMB_TOKENS = { '#slider-thumb': '(#color-picker, #surface)' };\n\nconst SPACE_STYLES: Styles = { width: '100%' };\nconst TAB_STYLES: Styles = { flexGrow: 1 };\n\nexport interface ColorPickerPanelProps {\n color: ColorValue;\n space: ColorSpace;\n isDisabled?: boolean;\n /** Notation used for the preview caption. */\n previewFormat: ColorFormat;\n onChange: (color: ColorValue) => void;\n onSpaceChange: (space: ColorSpace) => void;\n}\n\ninterface ChannelRowProps {\n channel: ColorChannel;\n color: ColorValue;\n isDisabled?: boolean;\n onChange: (color: ColorValue) => void;\n}\n\nfunction ChannelRow({ channel, color, isDisabled, onChange }: ChannelRowProps) {\n const max = channel.max(color);\n\n const handleChange = useEvent((value: number) => {\n onChange(channel.apply(color, value));\n });\n\n return (\n <>\n <ChannelLabelElement aria-hidden=\"true\">\n {channel.label}\n </ChannelLabelElement>\n <ChannelTrackElement\n style={{\n '--channel-gradient': `linear-gradient(to right, ${channel.stops(\n color,\n )})`,\n }}\n >\n <Slider\n aria-label={channel.title}\n value={Math.min(channel.value(color), max)}\n minValue={channel.min}\n maxValue={max}\n step={channel.step}\n isDisabled={isDisabled}\n trackStyles={TRACK_STYLES}\n thumbStyles={THUMB_STYLES}\n thumbTokens={THUMB_TOKENS}\n onChange={handleChange}\n />\n </ChannelTrackElement>\n <ChannelValueElement>{channel.display(color)}</ChannelValueElement>\n </>\n );\n}\n\n/**\n * The popover body of `ColorPicker`: a preview, a switch between the three\n * color concepts, and one gradient slider per channel of the active one.\n */\nexport function ColorPickerPanel(props: ColorPickerPanelProps) {\n const { color, space, isDisabled, previewFormat, onChange, onSpaceChange } =\n props;\n\n const colorTokens = useMemo(\n () => ({\n '--color-picker-color': toHex(color),\n '--color-picker-contrast-color': getContrastingColor(color),\n }),\n [color],\n );\n\n const handleSpaceChange = useEvent((value: string) => {\n onSpaceChange(value as ColorSpace);\n });\n\n return (\n <PanelElement style={colorTokens}>\n <PreviewElement>{formatColor(color, previewFormat)}</PreviewElement>\n <Radio.Tabs\n aria-label=\"Color space\"\n value={space}\n isDisabled={isDisabled}\n styles={SPACE_STYLES}\n onChange={handleSpaceChange}\n >\n {COLOR_SPACES.map((item) => (\n <Radio\n key={item}\n value={item}\n aria-label={COLOR_SPACE_LABELS[item]}\n tooltip={COLOR_SPACE_HINTS[item]}\n styles={TAB_STYLES}\n >\n {COLOR_SPACE_LABELS[item]}\n </Radio>\n ))}\n </Radio.Tabs>\n <ChannelsElement>\n {CHANNELS[space].map((channel) => (\n <ChannelRow\n key={`${space}-${channel.label}`}\n channel={channel}\n color={color}\n isDisabled={isDisabled}\n onChange={onChange}\n />\n ))}\n </ChannelsElement>\n </PanelElement>\n );\n}\n"],"mappings":";;;;;;;;;;;AAuBA,MAAM,eAAe,MAAM;CACzB,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,MAAM;EACN,KAAK;EACL,SAAS;EACT,OAAO;EACR;CACF,CAAC;AAEF,MAAM,iBAAiB,MAAM;CAC3B,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,YAAY;EACZ,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,MAAM;EACN,OAAO;EACP,QAAQ;EACT;CACF,CAAC;AAEF,MAAM,kBAAkB,MAAM,EAC5B,QAAQ;CACN,SAAS;CACT,aAAa;CACb,YAAY;CACZ,KAAK;CACN,EACF,CAAC;AAEF,MAAM,sBAAsB,MAAM,EAChC,QAAQ;CACN,QAAQ;CACR,OAAO;CACP,WAAW;CACX,OAAO;CACR,EACF,CAAC;AAEF,MAAM,sBAAsB,MAAM,EAChC,QAAQ;CACN,SAAS;CACT,YAAY;CACb,EACF,CAAC;AAEF,MAAM,sBAAsB,MAAM,EAChC,QAAQ;CACN,QAAQ;CACR,OAAO;CACP,WAAW;CACX,YAAY;CACZ,OAAO;CACR,EACF,CAAC;;;;;;;AAQF,MAAM,eAAuB;CAC3B,QAAQ;CACR,KAAK;CACL,QAAQ;CACR,MAAM;CACN,OAAO;CACP,QAAQ;CACR,MAAM;CACP;;AAGD,MAAM,eAAuB,EAC3B,QAAQ,yCACT;AAED,MAAM,eAAe,EAAE,iBAAiB,6BAA6B;AAErE,MAAM,eAAuB,EAAE,OAAO,QAAQ;AAC9C,MAAM,aAAqB,EAAE,UAAU,GAAG;AAmB1C,SAAS,WAAW,EAAE,SAAS,OAAO,YAAY,YAA6B;CAC7E,MAAM,MAAM,QAAQ,IAAI,MAAM;CAE9B,MAAM,eAAe,UAAU,UAAkB;AAC/C,WAAS,QAAQ,MAAM,OAAO,MAAM,CAAC;GACrC;AAEF,QACE;EACE,oBAAC;GAAoB,eAAY;aAC9B,QAAQ;IACW;EACtB,oBAAC;GACC,OAAO,EACL,sBAAsB,6BAA6B,QAAQ,MACzD,MACD,CAAC,IACH;aAED,oBAACA;IACC,cAAY,QAAQ;IACpB,OAAO,KAAK,IAAI,QAAQ,MAAM,MAAM,EAAE,IAAI;IAC1C,UAAU,QAAQ;IAClB,UAAU;IACV,MAAM,QAAQ;IACF;IACZ,aAAa;IACb,aAAa;IACb,aAAa;IACb,UAAU;KACV;IACkB;EACtB,oBAAC,iCAAqB,QAAQ,QAAQ,MAAM,GAAuB;KAClE;;;;;;AAQP,SAAgB,iBAAiB,OAA8B;CAC7D,MAAM,EAAE,OAAO,OAAO,YAAY,eAAe,UAAU,kBACzD;CAEF,MAAM,cAAc,eACX;EACL,wBAAwB,MAAM,MAAM;EACpC,iCAAiC,oBAAoB,MAAM;EAC5D,GACD,CAAC,MAAM,CACR;CAED,MAAM,oBAAoB,UAAU,UAAkB;AACpD,gBAAc,MAAoB;GAClC;AAEF,QACE,qBAAC;EAAa,OAAO;;GACnB,oBAAC,4BAAgB,YAAY,OAAO,cAAc,GAAkB;GACpE,oBAACC,QAAM;IACL,cAAW;IACX,OAAO;IACK;IACZ,QAAQ;IACR,UAAU;cAET,aAAa,KAAK,SACjB,oBAACA;KAEC,OAAO;KACP,cAAY,mBAAmB;KAC/B,SAAS,kBAAkB;KAC3B,QAAQ;eAEP,mBAAmB;OANf,KAOC,CACR;KACS;GACb,oBAAC,6BACE,SAAS,OAAO,KAAK,YACpB,oBAAC;IAEU;IACF;IACK;IACF;MAJL,GAAG,MAAM,GAAG,QAAQ,QAKzB,CACF,GACc;;GACL"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channels.js","names":[],"sources":["../../../../src/components/fields/ColorPicker/channels.ts"],"sourcesContent":["import {\n ColorValue,\n fromOkhst,\n fromOklch,\n fromRgb,\n isAchromatic,\n maxChroma,\n normalizeHue,\n toHex,\n toOkhst,\n toOklch,\n toRgb,\n} from './color';\n\n/**\n * The three color concepts the popover can be driven by. They all edit the\n * same canonical value — only the axes the user manipulates differ.\n */\nexport const COLOR_SPACES = ['hst', 'lch', 'rgb'] as const;\n\nexport type ColorSpace = (typeof COLOR_SPACES)[number];\n\nexport const COLOR_SPACE_LABELS: Record<ColorSpace, string> = {\n hst: 'HST',\n lch: 'LCH',\n rgb: 'RGB',\n};\n\nexport const COLOR_SPACE_HINTS: Record<ColorSpace, string> = {\n hst: 'OKHST — hue, saturation, tone',\n lch: 'OKLCH — lightness, chroma, hue',\n rgb: 'sRGB — red, green, blue',\n};\n\nexport interface ColorChannel {\n /** Single-letter axis name shown next to the slider. */\n label: string;\n /** Accessible name for the slider. */\n title: string;\n min: number;\n step: number;\n /** The upper bound. Chroma is gamut-bound, so it depends on the color. */\n max: (color: ColorValue) => number;\n value: (color: ColorValue) => number;\n /** The color this channel produces when moved to `value`. */\n apply: (color: ColorValue, value: number) => ColorValue;\n /** Comma-separated gradient stops describing the channel's whole range. */\n stops: (color: ColorValue) => string;\n /** Human-readable rendering of the current channel value. */\n display: (color: ColorValue) => string;\n}\n\nconst constant = (value: number) => () => value;\n\nfunction round(value: number, precision = 2): number {\n const factor = 10 ** precision;\n\n return Math.round(value * factor) / factor;\n}\n\n/**\n * `count` evenly spaced gradient stops, always as hex. Perceptual channels are\n * not linear in sRGB, so a two-stop gradient would misrepresent them —\n * sampling the real conversion keeps the track honest. Hex (rather than an\n * `okhsl()` string) because the gradient reaches the DOM as a raw custom\n * property, without passing through Tasty's color functions.\n */\nfunction ramp(count: number, at: (position: number) => ColorValue): string {\n return Array.from({ length: count }, (_, index) =>\n toHex(at(index / (count - 1))),\n ).join(', ');\n}\n\n/**\n * The hue strip is drawn at full saturation and a fixed OKHSL lightness, which\n * keeps it perceptually even instead of spiking at yellow the way a CSS-HSL\n * rainbow does. Its own saturation and tone stay fixed: the strip is the same\n * in HST and in LCH, where `H` means the same thing.\n */\nconst HUE_STOPS = ramp(25, (position) => ({\n h: position * 360,\n s: 1,\n l: 0.6,\n}));\n\nconst hueChannel: ColorChannel = {\n label: 'H',\n title: 'Hue',\n min: 0,\n // 360° is the same angle as 0°, so the last usable stop is 359 — the range\n // `HueSlider` exposes as well.\n max: constant(359),\n step: 1,\n value: (color) => round(color.h, 1),\n apply: (color, value) => ({ ...color, h: normalizeHue(value) }),\n stops: () => HUE_STOPS,\n display: (color) => `${Math.round(color.h)}°`,\n};\n\nconst saturationChannel: ColorChannel = {\n label: 'S',\n title: 'Saturation',\n min: 0,\n max: constant(100),\n step: 1,\n value: (color) => round(color.s * 100, 1),\n apply: (color, value) => ({ ...color, s: value / 100 }),\n stops: (color) => ramp(7, (position) => ({ ...color, s: position })),\n display: (color) => `${Math.round(color.s * 100)}%`,\n};\n\nconst toneChannel: ColorChannel = {\n label: 'T',\n title: 'Tone',\n min: 0,\n max: constant(100),\n step: 1,\n value: (color) => round(toOkhst(color).t * 100, 1),\n apply: (color, value) =>\n fromOkhst({ h: color.h, s: color.s, t: value / 100 }),\n stops: (color) =>\n ramp(7, (position) => fromOkhst({ h: color.h, s: color.s, t: position })),\n display: (color) => `${Math.round(toOkhst(color).t * 100)}%`,\n};\n\nconst lightnessChannel: ColorChannel = {\n label: 'L',\n title: 'Lightness',\n min: 0,\n max: constant(100),\n step: 1,\n value: (color) => round(toOklch(color).l * 100, 1),\n apply: (color, value) => {\n const { c, h } = toOklch(color);\n\n return fromOklch({ l: value / 100, c, h });\n },\n stops: (color) => {\n const { c, h } = toOklch(color);\n\n return ramp(7, (position) => fromOklch({ l: position, c, h }));\n },\n display: (color) => `${Math.round(toOklch(color).l * 100)}%`,\n};\n\nconst chromaChannel: ColorChannel = {\n label: 'C',\n title: 'Chroma',\n min: 0,\n // Chroma has no fixed ceiling: how far it can go depends on how far the sRGB\n // gamut reaches at the current lightness and hue. Never zero, so the slider\n // always has a range to divide by.\n max: (color) => Math.max(round(maxChroma(color.h, color.l), 4), 0.001),\n step: 0.001,\n value: (color) => round(toOklch(color).c, 4),\n apply: (color, value) => {\n const { l, h } = toOklch(color);\n\n return fromOklch({ l, c: value, h });\n },\n stops: (color) => {\n const { l, h } = toOklch(color);\n const limit = maxChroma(color.h, color.l);\n\n return ramp(7, (position) => fromOklch({ l, c: position * limit, h }));\n },\n display: (color) => toOklch(color).c.toFixed(3),\n};\n\nfunction rgbChannel(\n key: 'r' | 'g' | 'b',\n label: string,\n title: string,\n): ColorChannel {\n const at = (color: ColorValue, value: number) =>\n fromRgb({ ...toRgb(color), [key]: value });\n\n return {\n label,\n title,\n min: 0,\n max: constant(255),\n step: 1,\n value: (color) => toRgb(color)[key],\n apply: (color, value) => {\n const next = at(color, value);\n\n // A gray has no hue of its own, and the conversion invents one. Keeping\n // the authored hue means switching back to HST or LCH resumes where the\n // user left off.\n return isAchromatic(next) ? { ...next, h: color.h } : next;\n },\n // An sRGB channel is linear in the space CSS interpolates gradients in, so\n // the two ends describe the whole ramp exactly.\n stops: (color) => ramp(2, (position) => at(color, position * 255)),\n display: (color) => `${toRgb(color)[key]}`,\n };\n}\n\nexport const CHANNELS: Record<ColorSpace, ColorChannel[]> = {\n hst: [hueChannel, saturationChannel, toneChannel],\n lch: [lightnessChannel, chromaChannel, hueChannel],\n rgb: [\n rgbChannel('r', 'R', 'Red'),\n rgbChannel('g', 'G', 'Green'),\n rgbChannel('b', 'B', 'Blue'),\n ],\n};\n"],"mappings":";;;;;;;;AAkBA,MAAa,eAAe;CAAC;CAAO;CAAO;CAAM;AAIjD,MAAa,qBAAiD;CAC5D,KAAK;CACL,KAAK;CACL,KAAK;CACN;AAED,MAAa,oBAAgD;CAC3D,KAAK;CACL,KAAK;CACL,KAAK;CACN;AAoBD,MAAM,YAAY,gBAAwB;AAE1C,SAAS,MAAM,OAAe,YAAY,GAAW;CACnD,MAAM,SAAS,MAAM;AAErB,QAAO,KAAK,MAAM,QAAQ,OAAO,GAAG;;;;;;;;;AAUtC,SAAS,KAAK,OAAe,IAA8C;AACzE,QAAO,MAAM,KAAK,EAAE,QAAQ,OAAO,GAAG,GAAG,UACvC,MAAM,GAAG,SAAS,QAAQ,GAAG,CAAC,CAC/B,CAAC,KAAK,KAAK;;;;;;;;AASd,MAAM,YAAY,KAAK,KAAK,cAAc;CACxC,GAAG,WAAW;CACd,GAAG;CACH,GAAG;CACJ,EAAE;AAEH,MAAM,aAA2B;CAC/B,OAAO;CACP,OAAO;CACP,KAAK;CAGL,KAAK,SAAS,IAAI;CAClB,MAAM;CACN,QAAQ,UAAU,MAAM,MAAM,GAAG,EAAE;CACnC,QAAQ,OAAO,WAAW;EAAE,GAAG;EAAO,GAAG,aAAa,MAAM;EAAE;CAC9D,aAAa;CACb,UAAU,UAAU,GAAG,KAAK,MAAM,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,oBAAkC;CACtC,OAAO;CACP,OAAO;CACP,KAAK;CACL,KAAK,SAAS,IAAI;CAClB,MAAM;CACN,QAAQ,UAAU,MAAM,MAAM,IAAI,KAAK,EAAE;CACzC,QAAQ,OAAO,WAAW;EAAE,GAAG;EAAO,GAAG,QAAQ;EAAK;CACtD,QAAQ,UAAU,KAAK,IAAI,cAAc;EAAE,GAAG;EAAO,GAAG;EAAU,EAAE;CACpE,UAAU,UAAU,GAAG,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC;CAClD;AAED,MAAM,cAA4B;CAChC,OAAO;CACP,OAAO;CACP,KAAK;CACL,KAAK,SAAS,IAAI;CAClB,MAAM;CACN,QAAQ,UAAU,MAAM,QAAQ,MAAM,CAAC,IAAI,KAAK,EAAE;CAClD,QAAQ,OAAO,UACb,UAAU;EAAE,GAAG,MAAM;EAAG,GAAG,MAAM;EAAG,GAAG,QAAQ;EAAK,CAAC;CACvD,QAAQ,UACN,KAAK,IAAI,aAAa,UAAU;EAAE,GAAG,MAAM;EAAG,GAAG,MAAM;EAAG,GAAG;EAAU,CAAC,CAAC;CAC3E,UAAU,UAAU,GAAG,KAAK,MAAM,QAAQ,MAAM,CAAC,IAAI,IAAI,CAAC;CAC3D;AAED,MAAM,mBAAiC;CACrC,OAAO;CACP,OAAO;CACP,KAAK;CACL,KAAK,SAAS,IAAI;CAClB,MAAM;CACN,QAAQ,UAAU,MAAM,QAAQ,MAAM,CAAC,IAAI,KAAK,EAAE;CAClD,QAAQ,OAAO,UAAU;EACvB,MAAM,EAAE,GAAG,MAAM,QAAQ,MAAM;AAE/B,SAAO,UAAU;GAAE,GAAG,QAAQ;GAAK;GAAG;GAAG,CAAC;;CAE5C,QAAQ,UAAU;EAChB,MAAM,EAAE,GAAG,MAAM,QAAQ,MAAM;AAE/B,SAAO,KAAK,IAAI,aAAa,UAAU;GAAE,GAAG;GAAU;GAAG;GAAG,CAAC,CAAC;;CAEhE,UAAU,UAAU,GAAG,KAAK,MAAM,QAAQ,MAAM,CAAC,IAAI,IAAI,CAAC;CAC3D;AAED,MAAM,gBAA8B;CAClC,OAAO;CACP,OAAO;CACP,KAAK;CAIL,MAAM,UAAU,KAAK,IAAI,MAAM,UAAU,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,KAAM;CACtE,MAAM;CACN,QAAQ,UAAU,MAAM,QAAQ,MAAM,CAAC,GAAG,EAAE;CAC5C,QAAQ,OAAO,UAAU;EACvB,MAAM,EAAE,GAAG,MAAM,QAAQ,MAAM;AAE/B,SAAO,UAAU;GAAE;GAAG,GAAG;GAAO;GAAG,CAAC;;CAEtC,QAAQ,UAAU;EAChB,MAAM,EAAE,GAAG,MAAM,QAAQ,MAAM;EAC/B,MAAM,QAAQ,UAAU,MAAM,GAAG,MAAM,EAAE;AAEzC,SAAO,KAAK,IAAI,aAAa,UAAU;GAAE;GAAG,GAAG,WAAW;GAAO;GAAG,CAAC,CAAC;;CAExE,UAAU,UAAU,QAAQ,MAAM,CAAC,EAAE,QAAQ,EAAE;CAChD;AAED,SAAS,WACP,KACA,OACA,OACc;CACd,MAAM,MAAM,OAAmB,UAC7B,QAAQ;EAAE,GAAG,MAAM,MAAM;GAAG,MAAM;EAAO,CAAC;AAE5C,QAAO;EACL;EACA;EACA,KAAK;EACL,KAAK,SAAS,IAAI;EAClB,MAAM;EACN,QAAQ,UAAU,MAAM,MAAM,CAAC;EAC/B,QAAQ,OAAO,UAAU;GACvB,MAAM,OAAO,GAAG,OAAO,MAAM;AAK7B,UAAO,aAAa,KAAK,GAAG;IAAE,GAAG;IAAM,GAAG,MAAM;IAAG,GAAG;;EAIxD,QAAQ,UAAU,KAAK,IAAI,aAAa,GAAG,OAAO,WAAW,IAAI,CAAC;EAClE,UAAU,UAAU,GAAG,MAAM,MAAM,CAAC;EACrC;;AAGH,MAAa,WAA+C;CAC1D,KAAK;EAAC;EAAY;EAAmB;EAAY;CACjD,KAAK;EAAC;EAAkB;EAAe;EAAW;CAClD,KAAK;EACH,WAAW,KAAK,KAAK,MAAM;EAC3B,WAAW,KAAK,KAAK,QAAQ;EAC7B,WAAW,KAAK,KAAK,OAAO;EAC7B;CACF"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import "@tenphi/glaze";
|
|
3
|
-
|
|
4
|
-
//#region src/components/fields/ColorPicker/color.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Every color format the picker can read and write.
|
|
7
|
-
*
|
|
8
|
-
* `okhsl` and `okhst` are Glaze / Tasty spaces rather than native CSS ones,
|
|
9
|
-
* but Tasty parses both, so the produced strings are usable as style values.
|
|
10
|
-
*/
|
|
11
|
-
declare const COLOR_FORMATS: readonly ["hex", "rgb", "hsl", "okhsl", "okhst", "oklch"];
|
|
12
|
-
type ColorFormat = (typeof COLOR_FORMATS)[number];
|
|
13
|
-
//#endregion
|
|
14
|
-
export { COLOR_FORMATS, ColorFormat };
|
|
15
|
-
//# sourceMappingURL=color.d.ts.map
|