@cube-dev/ui-kit 0.163.0 → 0.164.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 +1 -1
- package/dist/CHANGELOG.md +377 -0
- package/dist/README.md +1 -1
- 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.d.ts +3 -2
- package/dist/components/Root.js +1 -1
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +2 -5
- package/dist/components/actions/Banner/Banner.js.map +1 -1
- package/dist/components/actions/Button/Button.d.ts +3 -2
- package/dist/components/actions/Button/Button.js +8 -5
- package/dist/components/actions/Button/Button.js.map +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.d.ts +2 -2
- package/dist/components/actions/ItemAction/ItemAction.js +15 -6
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.d.ts +14 -0
- package/dist/components/actions/ItemActionContext.js +2 -2
- package/dist/components/actions/ItemActionContext.js.map +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +56 -46
- package/dist/components/actions/ItemButton/ItemButton.js.map +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.d.ts +13 -0
- package/dist/components/actions/Menu/MenuTrigger.js +27 -15
- package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.d.ts +10 -0
- package/dist/components/content/CopySnippet/CopySnippet.js +7 -4
- package/dist/components/content/CopySnippet/CopySnippet.js.map +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/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.d.ts +2 -2
- package/dist/components/content/Item/Item.js +13 -58
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.d.ts +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +7 -4
- package/dist/components/content/ItemBadge/ItemBadge.js.map +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.d.ts +6 -0
- package/dist/components/content/PrismCode/PrismCode.js +12 -3
- package/dist/components/content/PrismCode/PrismCode.js.map +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 +12 -2
- package/dist/components/data/TableBase/column-tint.js.map +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/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 +12 -7
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +3 -2
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/{color → ColorSwatch}/ColorSwatch.d.ts +8 -2
- package/dist/components/fields/{color → ColorSwatch}/ColorSwatch.js +14 -6
- package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +1 -0
- package/dist/components/fields/ColorSwatch/index.d.ts +2 -0
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +2 -6
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +32 -2
- package/dist/components/fields/DatePicker/DatePickerButton.js.map +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 +3 -2
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +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/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +9 -6
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +2 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +2 -6
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +18 -16
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.js +3 -6
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +15 -2
- package/dist/components/fields/Slider/HueSlider.js.map +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +4 -4
- package/dist/components/fields/color/color.js.map +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/color/index.d.ts +0 -1
- package/dist/components/fields/index.d.ts +2 -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 +35 -5
- package/dist/components/layout/Board/Board.js +11 -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.d.ts +16 -1
- package/dist/components/layout/Board/Widget.js +3 -2
- package/dist/components/layout/Board/Widget.js.map +1 -1
- package/dist/components/layout/Board/WidgetHost.js +92 -17
- package/dist/components/layout/Board/WidgetHost.js.map +1 -1
- package/dist/components/layout/Board/board-context.js +5 -5
- package/dist/components/layout/Board/board-context.js.map +1 -1
- package/dist/components/layout/Board/board-store.d.ts +1 -0
- 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 +183 -0
- package/dist/components/layout/Board/grid-core/collision-modes.js.map +1 -0
- 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 +12 -2
- package/dist/components/layout/Board/grid-core/layout.js.map +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/grid-core/types.d.ts +17 -1
- package/dist/components/layout/Board/index.d.ts +2 -2
- package/dist/components/layout/Board/index.js +1 -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.js +1 -1
- package/dist/components/layout/Board/use-board-registry.js +57 -9
- 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 +2 -29
- package/dist/components/navigation/Tabs/TabButton.js.map +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.d.ts +37 -0
- package/dist/components/other/NoDataIcon/NoDataIcon.js +56 -0
- package/dist/components/other/NoDataIcon/NoDataIcon.js.map +1 -0
- package/dist/components/other/NoDataIcon/index.d.ts +2 -0
- 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 +4 -3
- package/dist/components/overlays/Dialog/Dialog.js.map +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.d.ts +13 -0
- package/dist/components/overlays/Dialog/DialogTrigger.js +24 -5
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/context.js.map +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +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.d.ts +1 -1
- package/dist/data/item-themes.js +217 -46
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +29 -13
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.js +6 -4
- 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/base.js +1 -1
- package/dist/tokens/color-seed.d.ts +44 -0
- package/dist/tokens/color-seed.js +48 -0
- package/dist/tokens/color-seed.js.map +1 -0
- package/dist/tokens/color-theme.d.ts +9 -1
- package/dist/tokens/color-theme.js +20 -7
- package/dist/tokens/color-theme.js.map +1 -1
- package/dist/tokens/colors.js +20 -3
- package/dist/tokens/colors.js.map +1 -1
- package/dist/tokens/index.d.ts +2 -1
- package/dist/tokens/index.js +3 -2
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/palette-config.d.ts +304 -77
- package/dist/tokens/palette-config.js +188 -49
- package/dist/tokens/palette-config.js.map +1 -1
- package/dist/tokens/palette.js +617 -163
- package/dist/tokens/palette.js.map +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +3 -3
- package/docs/Theming.md +471 -83
- package/docs/Usage.md +37 -2
- package/docs/components/Root.md +1 -1
- package/docs/components/actions/Button.md +9 -3
- package/docs/components/actions/ItemAction.md +3 -3
- package/docs/components/actions/MenuTrigger.md +54 -2
- package/docs/components/actions/SubMenuTrigger.md +2 -2
- package/docs/components/content/CopySnippet.md +5 -5
- package/docs/components/content/InlineInput.md +1 -1
- package/docs/components/content/Item.md +10 -10
- package/docs/components/content/ItemBadge.md +2 -2
- package/docs/components/content/PrismCode.md +1 -0
- package/docs/components/fields/ColorSwatch.md +155 -0
- package/docs/components/layout/Board.md +20 -2
- package/docs/components/other/NoDataIcon.md +48 -0
- package/docs/components/overlays/DialogTrigger.md +3 -2
- package/docs/components/status/LoadingAnimation.md +12 -0
- package/docs/glaze/api.md +155 -47
- package/docs/glaze/methodology.md +15 -13
- package/docs/glaze/migration.md +36 -0
- package/docs/glaze/okhst.md +4 -0
- package/docs/tasty/ai-agents.md +3 -0
- package/docs/tasty/configuration.md +1 -0
- package/package.json +3 -3
- package/dist/components/fields/color/ColorSwatch.js.map +0 -1
package/docs/Usage.md
CHANGED
|
@@ -142,6 +142,33 @@ The neutral palette uses a `surface` / `surface-text` model. Each surface depth
|
|
|
142
142
|
| `#overlay` | Dim backdrop (50% transparent) |
|
|
143
143
|
| `#clear` | `transparent` |
|
|
144
144
|
|
|
145
|
+
### Context Hooks
|
|
146
|
+
|
|
147
|
+
Tokens a **container** sets to steer a component that cannot resolve the color on
|
|
148
|
+
its own. They ship with a default, so nothing has to be set unless the default is
|
|
149
|
+
wrong.
|
|
150
|
+
|
|
151
|
+
| Token | Default | Role |
|
|
152
|
+
|-------|---------|------|
|
|
153
|
+
| `#current-fill` | `#surface` | The label color `current.primary` punches out of its `currentcolor` chip — read by that one flavour and nothing else |
|
|
154
|
+
|
|
155
|
+
`theme="current" type="primary"` fills with the color it **inherits**, so its
|
|
156
|
+
label cannot come from that color too and reads `#current-fill` instead. The page
|
|
157
|
+
(`#surface`) is the right answer almost everywhere, and wrong in exactly one
|
|
158
|
+
place: a container whose own text color is the page paints `#white`, which *is*
|
|
159
|
+
`#surface` in light mode, so the label would vanish into its own chip. Such a container sets
|
|
160
|
+
the token to its own fill, which contrasts with its own text by construction:
|
|
161
|
+
|
|
162
|
+
```jsx
|
|
163
|
+
<Block fill="#fixed-dark" color="#white" styles={{ '#current-fill': '#fixed-dark' }}>
|
|
164
|
+
<Button theme="current" type="primary">Legible in both schemes</Button>
|
|
165
|
+
</Block>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Setting it moves the label, the icon slots and the chip's rim together. It also
|
|
169
|
+
takes the alpha suffix like any other token (`#current-fill.5` is the disabled
|
|
170
|
+
label), because it is a declared token rather than a bare custom property.
|
|
171
|
+
|
|
145
172
|
### Accent System
|
|
146
173
|
|
|
147
174
|
Each themed color (default, primary, success, danger, warning, note) provides an `accent-*` family anchored to a fixed white "accent surface text". These tokens stay recognizable across schemes (used for branded buttons, CTAs, etc.):
|
|
@@ -179,7 +206,7 @@ For example, a success banner uses `fill: '#success-surface'` + `color: '#succes
|
|
|
179
206
|
```ts
|
|
180
207
|
import { resetPaletteConfig, setPaletteConfig } from '@cube-dev/ui-kit';
|
|
181
208
|
|
|
182
|
-
setPaletteConfig({ hue: 210, themes: { danger:
|
|
209
|
+
setPaletteConfig({ accent: { hue: 210 }, themes: { danger: '#b91c1c' } });
|
|
183
210
|
resetPaletteConfig();
|
|
184
211
|
```
|
|
185
212
|
|
|
@@ -188,7 +215,7 @@ Also available: `getPaletteConfig()`, `subscribePaletteConfig()`, the `usePalett
|
|
|
188
215
|
To theme a *region* instead of the document — a theme preview, or a dark panel inside a light page — use `renderColorTokens()`. It resolves one config and one scheme to flat values you apply via a `tokens` prop, without touching the live palette:
|
|
189
216
|
|
|
190
217
|
```tsx
|
|
191
|
-
<Block tokens={renderColorTokens({ hue: 210, scheme: 'dark' })} fill="#surface">
|
|
218
|
+
<Block tokens={renderColorTokens({ accent: { hue: 210 }, scheme: 'dark' })} fill="#surface">
|
|
192
219
|
…
|
|
193
220
|
</Block>
|
|
194
221
|
```
|
|
@@ -306,6 +333,7 @@ Component themes are set via the `theme` prop or `theme=name` modifier:
|
|
|
306
333
|
| `success` | Success / positive states |
|
|
307
334
|
| `warning` | Warning / caution states |
|
|
308
335
|
| `note` | Informational / note states |
|
|
336
|
+
| `current` | No palette of its own — every color is mixed from the inherited text color (`#current`), so the component adopts whatever its container paints with. Supported by `Button`, `Item` (and `ItemButton`, `Item.Action`, `ItemBadge`) |
|
|
309
337
|
|
|
310
338
|
## Recipes
|
|
311
339
|
|
|
@@ -367,6 +395,13 @@ Icons live in `src/icons/`. Use existing icons when possible; otherwise use `@ta
|
|
|
367
395
|
- Always wrap tabler icons with `<Icon>` for custom size/color. Never add props directly to tabler icons.
|
|
368
396
|
- To add new icons run: `pnpm add-icons`
|
|
369
397
|
|
|
398
|
+
Illustrations are not icons and do not live in `src/icons/`: `CubeLogo` and
|
|
399
|
+
`NoDataIcon` are `Icon`-based components under `src/components/other/`. They size
|
|
400
|
+
like an icon, but `NoDataIcon` is a three-tone drawing on the shared cube-face
|
|
401
|
+
tokens (`#loading-face-1` … `#loading-face-3`) rather than a `currentColor`
|
|
402
|
+
glyph, so it ignores `color` and belongs at illustration sizes (`size="8x"` and
|
|
403
|
+
up).
|
|
404
|
+
|
|
370
405
|
## Form System
|
|
371
406
|
|
|
372
407
|
### Form Component
|
package/docs/components/Root.md
CHANGED
|
@@ -13,7 +13,7 @@ The root application wrapper. Provides theme context, global styles, portal cont
|
|
|
13
13
|
- **`navigation`** `NavigationAdapter` — Custom navigation adapter for routing
|
|
14
14
|
- **`tracking`** `TrackingProps` — Analytics/tracking event configuration
|
|
15
15
|
- **`tokens`** `Record<string, string>` — Custom design tokens (CSS custom properties)
|
|
16
|
-
- **`palette`** `PaletteConfig` — Tune the generated color palette
|
|
16
|
+
- **`palette`** `PaletteConfig` — Tune the generated color palette. Every zone — `accent`, `base` and each status theme — takes the same seed: a color, or `{ hue, saturation }`. Plus the global `surfaceMode`, `pastel` and `contrastLevel`. Applied during render, so the first paint is already correct. Describes the whole palette, so dropping a field drops that customization. A convenience wrapper over `setPaletteConfig()` — the palette is process-global, not per tree. See [Theming](../Theming.md)
|
|
17
17
|
- **`fonts`** `boolean` — Whether to load default fonts
|
|
18
18
|
- **`font`** `string` — Custom font family name
|
|
19
19
|
- **`monospaceFont`** `string` — Custom monospace font family name
|
|
@@ -15,8 +15,8 @@ A versatile action component that triggers commands and navigates users.
|
|
|
15
15
|
|
|
16
16
|
## Properties
|
|
17
17
|
|
|
18
|
-
- **`type`** `'primary' | 'outline' | 'outline-2' | 'clear' | 'link'
|
|
19
|
-
- **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `default`) — Semantic colour palette theme
|
|
18
|
+
- **`type`** `'primary' | 'outline' | 'outline-2' | 'clear' | 'link'` (default: `outline`) — Visual style variant of the button (`outline-2` is identical to `outline` but uses `#surface-3` as the base fill; not available for the `special` theme)
|
|
19
|
+
- **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special' | 'current'` (default: `default`) — Semantic colour palette theme. `current` is not a brand palette: it mixes every color from the inherited text color, so the button adopts the color of whatever container it sits in
|
|
20
20
|
- **`size`** `'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'inline' | number` (default: `medium`) — Button size. Use `'inline'` for link-type buttons or a number/string for custom sizes (e.g. `64` or `'8x'`)
|
|
21
21
|
- **`icon`** — Icon rendered before the content. Can be: ReactNode, `true` (empty slot), or function `({ loading, selected, ...mods }) => ReactNode | true`
|
|
22
22
|
- **`rightIcon`** — Icon rendered after the content. Can be: ReactNode, `true` (empty slot), or function `({ loading, selected, ...mods }) => ReactNode | true`
|
|
@@ -82,7 +82,6 @@ The `mods` prop accepts the following modifiers you can override:
|
|
|
82
82
|
- `outline` – Border with transparent background; `isSelected` adds brand-tinted fill.
|
|
83
83
|
- `clear` – No border, transparent background; `isSelected` adds brand-tinted fill.
|
|
84
84
|
- `link` – Styled as a textual link.
|
|
85
|
-
- `current` – Fill, border and label are mixed from the inherited text color (`#current`), so the button adopts the color of whatever container it sits in. The resting chip is a `#current.03` fill inside a `#current.08` border, and hover, pressed and selected step the same alpha ramp up from there; the label stays fully opaque. The focus ring stays `#primary-accent-text`, like every other type. Theme-agnostic — there is a single variant, and `theme` has no effect. Use it inside colored containers (alerts, banners, dark overlays, tooltips). `Item` has a `current` type too, shaped like its neutral `item` type instead: borderless and invisible at rest.
|
|
86
85
|
|
|
87
86
|
### Themes. `theme` prop
|
|
88
87
|
|
|
@@ -92,6 +91,13 @@ The `mods` prop accepts the following modifiers you can override:
|
|
|
92
91
|
- `warning` – Yellow/amber palette for caution or attention.
|
|
93
92
|
- `note` – Violet palette for informational context.
|
|
94
93
|
- `special` – White palette for dark backgrounds.
|
|
94
|
+
- `current` – Not a palette at all: fill, border and label are mixed from the inherited text color (`#current`), so the button adopts the color of whatever container it sits in and keeps adopting it if that color changes. Every `type` has a `current` flavour, so the shape is still yours to pick — `outline` is the resting `#current.03` chip inside a `#current.08` border, `primary` escalates the same construction to a filled chip, `clear` paints nothing at rest, `link` is the label alone. `primary` is the one flavour that needs a second color: the fill is the inherited color at full strength, so the label is punched out of it with `#current-fill`, which defaults to `#surface`. A container whose own text color collides with the page (a `Banner` labels itself `#white`, and `#surface` is white in light mode) should override `#current-fill` with its own fill, which contrasts with its own text by construction; ordinary containers need nothing. The label stays fully opaque and the focus ring stays `#primary-accent-text`, like every other theme. Use it inside colored containers (alerts, banners, dark overlays, tooltips), where a brand theme would either clash with the container or have to be picked to match it.
|
|
95
|
+
|
|
96
|
+
```jsx
|
|
97
|
+
<Alert theme="note">
|
|
98
|
+
<Button theme="current" type="outline">Adopts the note color</Button>
|
|
99
|
+
</Alert>
|
|
100
|
+
```
|
|
95
101
|
|
|
96
102
|
### Sizes. `size` prop
|
|
97
103
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ItemAction
|
|
2
2
|
|
|
3
|
-
A compact action button designed for use inside `Item`, `ItemButton`, and `ItemCard`.
|
|
3
|
+
A compact action button designed for use inside `Item`, `ItemButton`, and `ItemCard`. Defaults to the `current` theme, so it takes its colors from whatever row hosts it.
|
|
4
4
|
|
|
5
5
|
## When to Use
|
|
6
6
|
|
|
@@ -15,8 +15,8 @@ A compact action button designed for use inside `Item`, `ItemButton`, and `ItemC
|
|
|
15
15
|
## Properties
|
|
16
16
|
|
|
17
17
|
- **`icon`** `ReactNode | 'checkmark'` — Icon element or `'checkmark'` for a selection indicator
|
|
18
|
-
- **`type`** `'primary' | 'outline' | 'clear'` (default: `'clear'`) — Visual type.
|
|
19
|
-
- **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `'
|
|
18
|
+
- **`type`** `'primary' | 'outline' | 'clear'` (default: `'clear'`) — Visual type. `clear` is borderless and paints nothing at rest, so a row full of actions does not read as busy.
|
|
19
|
+
- **`theme`** `'current' | 'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `'current'`) — Color theme. `current` derives every color from the inherited `currentcolor`, so the action tracks whatever row hosts it without being told the row's type or theme. Name any other theme to have the action paint itself instead.
|
|
20
20
|
- **`isLoading`** `boolean` (default: `false`) — Shows loading spinner
|
|
21
21
|
- **`isSelected`** `boolean` (default: `false`) — Selected state (works with `icon="checkmark"`)
|
|
22
22
|
- **`isDisabled`** `boolean` (default: `false`) — Disables the action. Inherits from parent; use `isDisabled={false}` to override.
|
|
@@ -19,6 +19,8 @@ Wraps a trigger element and a `Menu` to create a dropdown menu. Positions the me
|
|
|
19
19
|
- **`offset`** `number` (default: `8`) — Distance from trigger in pixels
|
|
20
20
|
- **`crossOffset`** `number` (default: `0`) — Cross-axis offset in pixels
|
|
21
21
|
- **`containerPadding`** `number` — Minimum padding from viewport edges in pixels
|
|
22
|
+
- **`mobileType`** `'popover' | 'tray'` (default: `'popover'`) — Overlay variant on mobile screens. `'tray'` opts into the bottom-sheet overlay
|
|
23
|
+
- **`shouldRestoreFocus`** `boolean` (default: `true`) — Whether focus returns to the trigger when the menu closes. See [Focus restoration](#focus-restoration)
|
|
22
24
|
|
|
23
25
|
Extends React Aria `AriaMenuTriggerProps` and `PositionProps`.
|
|
24
26
|
|
|
@@ -31,11 +33,61 @@ Supports [Base properties](../../BaseProperties.md).
|
|
|
31
33
|
These properties allow direct style application without using the `styles` prop:
|
|
32
34
|
|
|
33
35
|
- **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
|
|
34
|
-
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`
|
|
36
|
+
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
|
|
35
37
|
- **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
|
|
36
38
|
- **Block:** `border`, `radius`, `shadow`, `outline`, `padding`, `paddingInline`, `paddingBlock`, `overflow`, `scrollbar`, `textAlign`
|
|
37
39
|
- **Color:** `color`, `fill`, `fade`, `image`
|
|
38
|
-
- **Flow:** `flow`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
|
|
40
|
+
- **Flow:** `flow`, `place`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
|
|
41
|
+
|
|
42
|
+
## Focus restoration
|
|
43
|
+
|
|
44
|
+
When the menu closes, focus returns to the trigger — **unless the action that
|
|
45
|
+
closed it moved focus somewhere else**. An item whose action opens a panel, a
|
|
46
|
+
dialog or an inline editor just focuses that surface; a single `focus()` call
|
|
47
|
+
from a mount effect is enough, and the menu leaves it alone:
|
|
48
|
+
|
|
49
|
+
```jsx
|
|
50
|
+
function Panel() {
|
|
51
|
+
const ref = useRef(null);
|
|
52
|
+
|
|
53
|
+
// One call. No retry loop, no racing the closing menu.
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
ref.current?.focus({ preventScroll: true });
|
|
56
|
+
}, []);
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<div ref={ref} tabIndex={-1}>
|
|
60
|
+
…
|
|
61
|
+
</div>
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
<MenuTrigger>
|
|
66
|
+
<Button icon={<MoreIcon />} aria-label="Actions" />
|
|
67
|
+
<Menu onAction={(key) => key === 'configure' && setPanelOpen(true)}>
|
|
68
|
+
<Menu.Item key="configure">Configure…</Menu.Item>
|
|
69
|
+
</Menu>
|
|
70
|
+
</MenuTrigger>;
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Focusing the surface's own container rather than its first tabbable child
|
|
74
|
+
matters when a header carries a close button — `<FocusScope autoFocus>` would
|
|
75
|
+
land the user on ✕, with <kbd>Enter</kbd> already meaning "close the thing that
|
|
76
|
+
just opened".
|
|
77
|
+
|
|
78
|
+
`shouldRestoreFocus={false}` covers the remaining case: a surface that claims
|
|
79
|
+
focus *later* than the menu's restore — after an async load, an entry
|
|
80
|
+
animation, or a `requestAnimationFrame`. Without it the trigger takes focus
|
|
81
|
+
first and the user sees a flash.
|
|
82
|
+
|
|
83
|
+
```jsx
|
|
84
|
+
<MenuTrigger shouldRestoreFocus={false}>
|
|
85
|
+
<Button icon={<MoreIcon />} aria-label="Actions" />
|
|
86
|
+
<Menu onAction={openPanelThatFocusesAfterItsData}>
|
|
87
|
+
<Menu.Item key="configure">Configure…</Menu.Item>
|
|
88
|
+
</Menu>
|
|
89
|
+
</MenuTrigger>
|
|
90
|
+
```
|
|
39
91
|
|
|
40
92
|
## Examples
|
|
41
93
|
|
|
@@ -31,11 +31,11 @@ Supports [Base properties](../../BaseProperties.md).
|
|
|
31
31
|
These properties allow direct style application without using the `styles` prop:
|
|
32
32
|
|
|
33
33
|
- **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
|
|
34
|
-
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`
|
|
34
|
+
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
|
|
35
35
|
- **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
|
|
36
36
|
- **Block:** `border`, `radius`, `shadow`, `outline`, `padding`, `paddingInline`, `paddingBlock`, `overflow`, `scrollbar`, `textAlign`
|
|
37
37
|
- **Color:** `color`, `fill`, `fade`, `image`
|
|
38
|
-
- **Flow:** `flow`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
|
|
38
|
+
- **Flow:** `flow`, `place`, `placeItems`, `placeContent`, `alignItems`, `alignContent`, `justifyItems`, `justifyContent`, `align`, `justify`, `gap`, `columnGap`, `rowGap`, `gridColumns`, `gridRows`, `gridTemplate`, `gridAreas`
|
|
39
39
|
|
|
40
40
|
## Examples
|
|
41
41
|
|
|
@@ -15,6 +15,7 @@ A code block with copy-to-clipboard functionality and syntax highlighting. Exten
|
|
|
15
15
|
- **`title`** `string` (default: `'Code example'`) — Accessible title used in the copy toast message
|
|
16
16
|
- **`prefix`** `string` (default: `''`) — Prefix for each line of code (e.g. `'$ '` for bash snippets)
|
|
17
17
|
- **`nowrap`** `boolean` — Force single-line display even for multi-line code
|
|
18
|
+
- **`isWrapped`** `boolean` — Soft-wrap long content onto multiple lines instead of scrolling it horizontally. The block grows to fit, so even a single long line stays fully readable, and unbreakable runs (URLs, tokens, identifiers) wrap too. Useful for error messages and logs. Ignored when `nowrap` is set (a different axis: `nowrap` collapses newlines into one scrolling line, `isWrapped` breaks long lines).
|
|
18
19
|
- **`serif`** `boolean` — Use serif (non-monospace) font for the code
|
|
19
20
|
- **`hideText`** `string | string[] | boolean` — Hide sensitive text with bullet characters. `true` hides all text, a string hides that substring, an array hides multiple substrings. A toggle button appears to reveal hidden content.
|
|
20
21
|
- **`actions`** `ReactNode` — Additional action buttons displayed alongside the copy button. Use `CopySnippet.Button` for consistent styling.
|
|
@@ -49,14 +50,13 @@ These properties allow direct style application without using the `styles` prop:
|
|
|
49
50
|
```jsx
|
|
50
51
|
<CopySnippet code="const x = 1;" language="javascript" />
|
|
51
52
|
|
|
52
|
-
<CopySnippet
|
|
53
|
-
code={'{\n "key": "value"\n}'}
|
|
54
|
-
language="json"
|
|
55
|
-
multiline
|
|
56
|
-
/>
|
|
53
|
+
<CopySnippet code={'{\n "key": "value"\n}'} language="json" />
|
|
57
54
|
|
|
58
55
|
<CopySnippet
|
|
59
56
|
code={'<button type="button" class="primary">Save</button>'}
|
|
60
57
|
language="html"
|
|
61
58
|
/>
|
|
59
|
+
|
|
60
|
+
// Wrap a long single-line error instead of scrolling it sideways
|
|
61
|
+
<CopySnippet code={longErrorMessage} language="bash" isWrapped />
|
|
62
62
|
```
|
|
@@ -261,7 +261,7 @@ When `InlineInput` is embedded in a host that already owns keyboard activation (
|
|
|
261
261
|
|
|
262
262
|
### Focus Management
|
|
263
263
|
|
|
264
|
-
When entering edit mode, focus is taken explicitly by a `FocusScope` with `autoFocus
|
|
264
|
+
When entering edit mode, focus is taken explicitly by a `FocusScope` with `autoFocus`, and the text content is selected automatically. On top of that, a blur arriving in the same tick as a programmatic `startEditing()` re-focuses the input instead of committing, so hosts that drive editing through the imperative ref stay in edit mode even if something else grabs focus as the input mounts. The guard clears on the user's first keystroke, so later click-aways commit normally.
|
|
265
265
|
|
|
266
266
|
When leaving edit mode, focus is not restored automatically — the host is responsible for moving focus back to a meaningful element (e.g. the parent button or row).
|
|
267
267
|
|
|
@@ -22,8 +22,8 @@ A foundational component that provides a standardized layout and styling for ite
|
|
|
22
22
|
- **`suffix`** `ReactNode` — Element rendered after the content (before rightIcon)
|
|
23
23
|
- **`description`** `ReactNode` — Description text displayed with the item
|
|
24
24
|
- **`descriptionPlacement`** `'inline' | 'block'` (default: `inline`) — How the description is positioned relative to the main content. Defaults to `'block'` for `type="card"` and `type="header"`
|
|
25
|
-
- **`type`** `'item' | 'header' | 'primary' | 'outline' | 'outline-2' | 'clear' | 'link' | 'card'
|
|
26
|
-
- **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `default`) — Semantic colour palette theme
|
|
25
|
+
- **`type`** `'item' | 'header' | 'primary' | 'outline' | 'outline-2' | 'clear' | 'link' | 'card'` (default: `item`) — Visual style variant
|
|
26
|
+
- **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special' | 'current'` (default: `default`) — Semantic colour palette theme. `current` is not a brand palette: it mixes every color from the inherited text color, so the item adopts the color of whatever container it sits in
|
|
27
27
|
- **`size`** `'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'inline' | number` (default: `medium`) — Item size. Accepts custom number or string values
|
|
28
28
|
- **`shape`** `'card' | 'button' | 'sharp' | 'pill'` (default: `button`) — Shape of the item border radius. Defaults to `'card'` for `type="card"`
|
|
29
29
|
- **`isSelected`** `boolean` (default: `false`) — Marks the item as selected
|
|
@@ -84,8 +84,8 @@ The `mods` property accepts the following modifiers:
|
|
|
84
84
|
- **`disabled`** `boolean` — Applied when isDisabled is true or when loading
|
|
85
85
|
- **`loading`** `boolean` — Applied when isLoading is true
|
|
86
86
|
- **`size`** `string` — Applied based on size prop value (xsmall, small, medium, large, xlarge, inline)
|
|
87
|
-
- **`type`** `string` — Applied based on type prop value (item, header, primary, outline, outline-2, clear, link, card
|
|
88
|
-
- **`theme`** `string` — Applied based on theme prop value (default, danger, success, special, warning, note)
|
|
87
|
+
- **`type`** `string` — Applied based on type prop value (item, header, primary, outline, outline-2, clear, link, card)
|
|
88
|
+
- **`theme`** `string` — Applied based on theme prop value (default, danger, success, special, warning, note, current)
|
|
89
89
|
- **`shape`** `string` — Applied based on shape prop value (card, button, sharp, pill)
|
|
90
90
|
|
|
91
91
|
## Variants
|
|
@@ -99,8 +99,7 @@ The `mods` property accepts the following modifiers:
|
|
|
99
99
|
- `outline-2` - Same as `outline` but uses `#surface-3` as the base fill, designed to sit on `#surface-2` containers without blending in (not available for the `special` theme)
|
|
100
100
|
- `clear` - Transparent item with minimal styling; `isSelected` adds brand-tinted fill
|
|
101
101
|
- `link` - Link-styled item appearance (does not support icons or loading state)
|
|
102
|
-
- `card` - Card appearance for notifications (supports `default`, `success`, `danger`, `warning`, `note` themes; defaults to `shape="card"`, `descriptionPlacement="block"`, uses semantic heading tags via `level` prop, and has `.5x` padding)
|
|
103
|
-
- `current` - Same shape as `item` — no border, nothing painted at rest — but every color is derived from the inherited text color (`#current`) instead of the fixed `#surface-text`, so the item adopts the color of whatever container it sits in. The fill steps in on hover (`.04`), pressed (`.06`) and selected (`.09` → `.15`); the label stays fully opaque. Theme-agnostic: only supports the `default` theme (any other theme warns, since there is nothing for it to change). Use it inside colored containers — alerts, banners, dark overlays, tooltips. `Button` has a `current` type too, shaped like a standalone control instead: a resting `#current.03` chip inside a `#current.08` border
|
|
102
|
+
- `card` - Card appearance for notifications (supports `default`, `success`, `danger`, `warning`, `note`, `current` themes; defaults to `shape="card"`, `descriptionPlacement="block"`, uses semantic heading tags via `level` prop, and has `.5x` padding)
|
|
104
103
|
|
|
105
104
|
### Themes
|
|
106
105
|
|
|
@@ -110,6 +109,7 @@ The `mods` property accepts the following modifiers:
|
|
|
110
109
|
- `warning` - Yellow/amber theme for caution or attention
|
|
111
110
|
- `note` - Violet theme for informational context
|
|
112
111
|
- `special` - Special theme with unique styling (not available for `card` or `header` types)
|
|
112
|
+
- `current` - Not a palette at all: every color is derived from the inherited text color (`#current`) instead of a brand ramp, so the item adopts the color of whatever container it sits in. Every type except `header` has a `current` flavour, so the shape is still yours to pick — `item` keeps its borderless shape (nothing painted at rest, the fill stepping in on hover, pressed and selected), `outline` adds the chip and border, `primary` escalates it further. `primary` is the one flavour that needs a second color: its fill is the inherited color at full strength, so the label is punched out of it with `#current-fill` (default `#surface`) — a container whose own text color collides with the page, such as a `Banner` labelling itself `#white`, should override `#current-fill` with its own fill. The label stays fully opaque. Use it inside colored containers — alerts, banners, dark overlays, tooltips
|
|
113
113
|
|
|
114
114
|
### Sizes
|
|
115
115
|
|
|
@@ -257,17 +257,17 @@ Like headers, card labels use semantic heading tags (h1-h6) controlled by the `l
|
|
|
257
257
|
</Item>
|
|
258
258
|
```
|
|
259
259
|
|
|
260
|
-
### Current
|
|
260
|
+
### Current Theme
|
|
261
261
|
|
|
262
|
-
Use `
|
|
262
|
+
Use `theme="current"` inside a container that paints its own text color. The fill and label are mixed from that inherited color, so the item matches the container without picking a brand theme — and keeps matching it if the container's color changes. Every type composes with it:
|
|
263
263
|
|
|
264
264
|
```jsx
|
|
265
265
|
<Block fill="#note-surface" color="#note-accent-text" padding="1.5x" radius="1cr">
|
|
266
|
-
<Item
|
|
266
|
+
<Item theme="current" icon={<IconInfo />}>Adopts the note color</Item>
|
|
267
267
|
</Block>
|
|
268
268
|
|
|
269
269
|
<Block fill="#fixed-dark" color="#white" padding="1.5x" radius="1cr">
|
|
270
|
-
<Item
|
|
270
|
+
<Item theme="current" type="outline" icon={<IconInfo />}>An outlined chip on a dark banner</Item>
|
|
271
271
|
</Block>
|
|
272
272
|
```
|
|
273
273
|
|
|
@@ -11,8 +11,8 @@ A non-interactive badge indicator for list items. Similar to `ItemAction` but wi
|
|
|
11
11
|
## Properties
|
|
12
12
|
|
|
13
13
|
- **`icon`** `ReactNode | 'checkmark'` — Icon or checkmark display
|
|
14
|
-
- **`type`** `'primary' | 'outline' | 'clear'` (default: `'clear'`) — Visual type. `isSelected` applies brand-tinted fill to `outline` and `clear`.
|
|
15
|
-
- **`theme`** `'default' | 'danger' | 'success' | 'special'` (default: `'
|
|
14
|
+
- **`type`** `'primary' | 'outline' | 'clear'` (default: `'clear'`) — Visual type. `isSelected` applies brand-tinted fill to `outline` and `clear`.
|
|
15
|
+
- **`theme`** `'current' | 'default' | 'danger' | 'success' | 'special'` (default: `'current'`) — Color theme. `current` derives every color from the inherited `currentcolor`, so the badge tracks whatever row hosts it. Name any other theme to have the badge paint itself instead.
|
|
16
16
|
- **`isLoading`** `boolean` (default: `false`) — Show loading spinner
|
|
17
17
|
- **`isSelected`** `boolean` (default: `false`) — Selected state (for checkmark)
|
|
18
18
|
- **`tooltip`** `string | object` — Tooltip content shown on hover for icon-only badges. A string shows tooltip text; an object supports `{ title, ...tooltipProps }` for advanced configuration.
|
|
@@ -12,6 +12,7 @@ Syntax-highlighted code block using Prism. Supports multiple languages.
|
|
|
12
12
|
|
|
13
13
|
- **`code`** `string` (default: `''`) — The code snippet to highlight
|
|
14
14
|
- **`language`** `string` (default: `'javascript'`) — Language for syntax highlighting (`javascript`, `typescript`, `json`, `yaml`, `bash`, `sql`, `css`, `html`, etc.)
|
|
15
|
+
- **`isWrapped`** `boolean` — Soft-wrap long lines onto multiple lines instead of scrolling them horizontally. Unbreakable runs (URLs, tokens, identifiers) wrap too. Useful for error messages and logs.
|
|
15
16
|
|
|
16
17
|
### Style Defaults
|
|
17
18
|
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# ColorSwatch
|
|
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.
|
|
8
|
+
|
|
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.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- Next to a color value in a list, a table or a chart legend
|
|
15
|
+
- In the `icon` / `rightIcon` / `prefix` / `suffix` slot of an `Item` or `Button`
|
|
16
|
+
- As the color part of a custom control built on top of the color fields
|
|
17
|
+
|
|
18
|
+
## Component
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### Properties
|
|
23
|
+
|
|
24
|
+
- **`color`** `string | ColorValue | null` — The color to show. Anything the color fields accept — `#7a4dbf`, `rgb(122 77 191)`, `oklch(…)`. `null`, or a string that cannot be parsed, shows the empty state
|
|
25
|
+
- **`size`** `'small' | 'medium' | 'large'` — The edge of the swatch: `20px`, `24px` or `28px`. Left unset, the swatch tracks the control around it (see below)
|
|
26
|
+
|
|
27
|
+
### Base Properties
|
|
28
|
+
|
|
29
|
+
Supports [Base properties](../../BaseProperties.md)
|
|
30
|
+
|
|
31
|
+
### Styling Properties
|
|
32
|
+
|
|
33
|
+
#### styles
|
|
34
|
+
|
|
35
|
+
Customizes the swatch itself. `width` and `height` set here win over both the
|
|
36
|
+
`size` prop and the automatic sizing.
|
|
37
|
+
|
|
38
|
+
### Style Properties
|
|
39
|
+
|
|
40
|
+
These properties allow direct style application without using the `styles` prop:
|
|
41
|
+
|
|
42
|
+
- **Base:** `display`, `font`, `preset`, `hide`, `whiteSpace`, `opacity`, `transition`
|
|
43
|
+
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
|
|
44
|
+
- **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
|
|
45
|
+
- **Block:** `border`, `radius`, `shadow`, `outline`, `padding`, `paddingInline`, `paddingBlock`, `overflow`, `scrollbar`, `textAlign`
|
|
46
|
+
|
|
47
|
+
### Modifiers
|
|
48
|
+
|
|
49
|
+
The `mods` property accepts the following modifiers you can override:
|
|
50
|
+
|
|
51
|
+
| Modifier | Type | Description |
|
|
52
|
+
| -------- | --------- | -------------------------------------------------------------- |
|
|
53
|
+
| `empty` | `boolean` | No color to show — drawn as the conventional diagonal stroke |
|
|
54
|
+
|
|
55
|
+
## Sizes
|
|
56
|
+
|
|
57
|
+
- `small` — `20px`
|
|
58
|
+
- `medium` — `24px`
|
|
59
|
+
- `large` — `28px`
|
|
60
|
+
|
|
61
|
+
### Sizing inside a control
|
|
62
|
+
|
|
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.
|
|
68
|
+
|
|
69
|
+
Outside a control there is nothing to read, and the swatch falls back to
|
|
70
|
+
`medium`.
|
|
71
|
+
|
|
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.
|
|
78
|
+
|
|
79
|
+
## Examples
|
|
80
|
+
|
|
81
|
+
### Basic Usage
|
|
82
|
+
|
|
83
|
+
```jsx
|
|
84
|
+
<ColorSwatch color="#7a4dbf" />
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### In a control
|
|
88
|
+
|
|
89
|
+
```jsx
|
|
90
|
+
<Button icon={<ColorSwatch color={color} />}>{color}</Button>
|
|
91
|
+
|
|
92
|
+
<Item icon={<ColorSwatch color={color} />} suffix={<ColorSwatch color={hover} />}>
|
|
93
|
+
Accent
|
|
94
|
+
</Item>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### With the value spelled out
|
|
98
|
+
|
|
99
|
+
The swatch has no accessible name of its own, so the text beside it is what a
|
|
100
|
+
screen reader announces.
|
|
101
|
+
|
|
102
|
+
```jsx
|
|
103
|
+
<Space gap="1x" placeItems="center start">
|
|
104
|
+
<ColorSwatch color={value} />
|
|
105
|
+
<Text>{value}</Text>
|
|
106
|
+
</Space>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### A fixed size
|
|
110
|
+
|
|
111
|
+
```jsx
|
|
112
|
+
<ColorSwatch size="large" color="#26fcb2" />
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Any other shape
|
|
116
|
+
|
|
117
|
+
```jsx
|
|
118
|
+
<ColorSwatch color="#26fcb2" radius="round" width="6x" height="6x" />
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Accessibility
|
|
122
|
+
|
|
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.
|
|
126
|
+
|
|
127
|
+
- **Do** put the value, or the name of the thing the color belongs to, next to it
|
|
128
|
+
- **Do** rely on the surrounding control's `aria-label` when the swatch is its icon
|
|
129
|
+
- **Don't** use color as the only way to tell two rows apart
|
|
130
|
+
|
|
131
|
+
## Best Practices
|
|
132
|
+
|
|
133
|
+
1. **Do**: let a swatch inside a control size itself
|
|
134
|
+
|
|
135
|
+
```jsx
|
|
136
|
+
<Button size="small" icon={<ColorSwatch color={color} />}>
|
|
137
|
+
{color}
|
|
138
|
+
</Button>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
2. **Don't**: hand-tune the box to match a control
|
|
142
|
+
|
|
143
|
+
```jsx
|
|
144
|
+
<Button size="small" icon={<ColorSwatch color={color} width="2.5x" height="2.5x" />}>
|
|
145
|
+
{color}
|
|
146
|
+
</Button>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
3. **Accessibility**: never let the swatch be the only carrier of the meaning
|
|
150
|
+
|
|
151
|
+
## Related Components
|
|
152
|
+
|
|
153
|
+
- [ColorPicker](./ColorPicker.md) — a swatch that opens the color popover
|
|
154
|
+
- [ColorInput](./ColorInput.md) — the color as editable text, with a swatch inside
|
|
155
|
+
- [ColorSwatchGroup](./ColorSwatchGroup.md) — a selectable grid of swatches
|
|
@@ -61,13 +61,15 @@ clipped by an ancestor's `overflow: hidden`.
|
|
|
61
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.
|
|
62
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.
|
|
63
63
|
- **`preventCollision`** `boolean` (default: `false`) — Block movement into occupied cells instead of pushing.
|
|
64
|
+
- **`collisionMode`** `'revert' | 'downscale' | 'swap'` (default: `'revert'`) — How to resolve a drop the grid would otherwise refuse. Only applies where a collision *blocks* a move — `compact="free"` (which prevents collisions) or an explicit `preventCollision` — and never under `allowOverlap`, where nothing is blocked. `'revert'` snaps the widget back. `'downscale'` shrinks it into the free space at the drop cell, growing rightward and downward, floored at its `minW`/`minH` (below that it reverts). `'swap'` trades places with **one** widget — the one the drop covers most — which takes the cell the drag began at, each keeping as much of its own size as fits there (so a widget displaced next to a neighbour may shrink). It never displaces more than that one widget. A drop straddling two widgets trades with one of them rather than refusing, so the swap never blinks away as you sweep across a boundary; ties go to the widget earlier in reading order. Dragging back retraces the original arrangement exactly. It falls back to `'downscale'`, then `'revert'`. No mode ever *grows* a widget: a drag only ever preserves or reduces size. Applies to single-widget drags. Arrow keys honour it too but never resize anything — each press is a gesture of its own, so a press that shrank a widget would have nothing to restore from, and only an exchange that fits outright is allowed. A multi-widget selection still only moves where it fits outright, and a resize is still blocked by a collision.
|
|
64
65
|
- **`isDraggable`** `boolean` (default: `true`) — Enable dragging for all widgets.
|
|
65
66
|
- **`isResizable`** `boolean` (default: `true`) — Enable resizing for all widgets.
|
|
66
67
|
- **`isDroppable`** `boolean` (default: `true`) — Whether the board accepts widgets dropped from other boards.
|
|
67
68
|
- **`resizeHandles`** `ResizeHandleAxis[]` (default: `['se']`) — Which resize handles to show. Corner handles (`ne`/`nw`/`se`/`sw`) show an angle grip; edge handles (`n`/`s`/`e`/`w`) show a dotted grip. Both are revealed on hover/focus/resize. A single edge (e.g. `['e']` or `['s']`) gives a horizontally- or vertically-only resizable widget.
|
|
69
|
+
- **`resizeGripPlacement`** `'inside' | 'corner'` (default: `'inside'`) — Where the corner grips sit. `'inside'` tucks each one into the widget box; `'corner'` centres it on the widget's corner, so it lines up with a control centred on the opposite corner. Only affects corner handles — a dotted edge grip always stays inside. A corner-placed grip is drawn *outside* the widget (a widget clips its own content, which would otherwise cut the grip in half), so it needs the board to have at least half a grip's worth of `containerPadding` to show in full against the board's edge. Its hit-zone moves out with it and overhangs by the same half-grip, so the whole visible grip is grabbable and hovering it keeps it revealed — the trade is a ~5px band just outside each corner where a press starts a resize rather than a marquee. Can be overridden per widget.
|
|
68
70
|
- **`dragCancel`** `string` — CSS selector for elements that must not start a pointer drag (e.g. form controls inside a widget: `"input,textarea,button,a,.no-drag"`). Does not affect keyboard moves — those only run when the widget host itself is focused. Can be overridden per widget.
|
|
69
71
|
- **`dragHandle`** `string` — CSS selector for the only elements from which a pointer drag may start. Can be overridden per widget.
|
|
70
|
-
- **`showGridLines`** `boolean | 'drag'` (default: `false`) — Show grid lines behind the widgets. `true` always
|
|
72
|
+
- **`showGridLines`** `boolean | 'drag' | 'any-drag'` (default: `false`) — Show grid lines behind the widgets. `true` always; `false` never; `'drag'` only while *this* board is part of the active gesture — it owns the drag (as its source, or as the board the widget is currently over) or one of its own widgets is being resized; `'any-drag'` while any drag is in flight anywhere under a shared `Board.Provider`, so every board advertises itself as somewhere the widget could land. Under one `Board.Provider`, `'drag'` keeps boards a widget cannot land in quiet, and `'any-drag'` is the opt-in for the noisier, more informative version. A nested board that does not set this inherits an enabled ancestor's setting, at the ancestor's own scope.
|
|
71
73
|
- **`isAligned`** `boolean` (default: `false`) — Align a nested board with its ancestor `Board`'s layout. Only takes effect when the board is nested inside another `Board`'s widget. When set, every cell matches the parent's cell size exactly: the board inherits the parent's column pitch (deriving its own column count from its measured width so cells stay parent-sized as the container is resized) and uses the parent's row height verbatim. It never shrinks rows to fit — pair it with an `isAutoHeight` container so the widget grows to fit its rows at that height. `cols`/`rowHeight` then act as fallbacks used only until the parent metrics resolve.
|
|
72
74
|
- **`selectionMode`** `'none' | 'single' | 'multiple'` (default: `'none'`) — Whether widgets can be selected, and how many at a time. `'multiple'` also enables the marquee and rigid group movement.
|
|
73
75
|
- **`selectedKeys`** `string[]` — Controlled selection. Keys are layout item ids (`LayoutItem.i`).
|
|
@@ -89,6 +91,7 @@ clipped by an ancestor's `overflow: hidden`.
|
|
|
89
91
|
- **`isDraggable`** `boolean` — Disable dragging for this widget.
|
|
90
92
|
- **`isResizable`** `boolean` — Disable resizing for this widget.
|
|
91
93
|
- **`resizeHandles`** `ResizeHandleAxis[]` — Override the board's handles.
|
|
94
|
+
- **`resizeGripPlacement`** `'inside' | 'corner'` — Override the board's grip placement.
|
|
92
95
|
- **`minW`** `number` — Minimum width in grid columns. Used when the layout item omits `minW`; the resize handle stops here.
|
|
93
96
|
- **`maxW`** `number` — Maximum width in grid columns. Used when the layout item omits `maxW`.
|
|
94
97
|
- **`minH`** `number` — Minimum height in grid rows. Used when the layout item omits `minH`.
|
|
@@ -237,7 +240,22 @@ Bound resizing with per-widget `minW`/`maxW` (columns) and `minH`/`maxH` (rows).
|
|
|
237
240
|
|
|
238
241
|
### Grid lines
|
|
239
242
|
|
|
240
|
-
Show grid lines behind the widgets while dragging or resizing (or always).
|
|
243
|
+
Show grid lines behind the widgets while dragging or resizing (or always). With
|
|
244
|
+
several boards under one `Board.Provider`, `'drag'` lights up only the board the
|
|
245
|
+
drag belongs to; `'any-drag'` lights up all of them.
|
|
246
|
+
|
|
247
|
+
### Corner resize grip
|
|
248
|
+
|
|
249
|
+
Centre the resize grip on the widget's corner with `resizeGripPlacement="corner"`,
|
|
250
|
+
so it lines up with a control centred on the opposite corner.
|
|
251
|
+
|
|
252
|
+
### Resolving a blocked drop
|
|
253
|
+
|
|
254
|
+
On a free grid a drop onto occupied cells is refused. `collisionMode` resolves it
|
|
255
|
+
instead: `'downscale'` shrinks the widget into whatever room is at the drop cell,
|
|
256
|
+
`'swap'` trades places with the widget already there. Neither ever grows a widget.
|
|
257
|
+
One board per mode below — drag the wide widget onto the row below in the first,
|
|
258
|
+
and drop a widget onto one of its neighbours in the second.
|
|
241
259
|
|
|
242
260
|
### Card widgets
|
|
243
261
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# NoDataIcon
|
|
2
|
+
|
|
3
|
+
The empty isometric crate — the kit's "nothing here yet" illustration.
|
|
4
|
+
|
|
5
|
+
It is an **illustration, not a member of the icon set**, which is why it lives in `Other/` rather than under `Content/Icons`. It is still built on `Icon`, so it sizes and accepts style props exactly like one.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- An empty table, list, or card grid — "No invoices yet", "No deployments yet"
|
|
10
|
+
- A full-page empty state, paired with a short line of copy
|
|
11
|
+
- Anywhere `LoadingAnimation` would sit if the same view were still loading
|
|
12
|
+
|
|
13
|
+
## Sizing
|
|
14
|
+
|
|
15
|
+
`size` maps onto `font-size` and drives both axes; the artwork is square.
|
|
16
|
+
|
|
17
|
+
```jsx
|
|
18
|
+
<NoDataIcon size="8x" />
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Unlike a glyph icon, the drawing is full-bleed in its viewBox rather than inset in a 24×24 grid, so it is meant for illustration sizes — `size="8x"` (64px) and up. At icon sizes it will read as noticeably heavier than the glyphs around it.
|
|
22
|
+
|
|
23
|
+
## Colour
|
|
24
|
+
|
|
25
|
+
Not a `currentColor` glyph, so it **ignores `color`**. The three faces come from the shared isometric cube-face tokens (`#loading-face-1` … `#loading-face-3`) that [`LoadingAnimation`](../status/LoadingAnimation.md) also draws from, so an empty table and a loading table read as the same object lit the same way.
|
|
26
|
+
|
|
27
|
+
That ramp is positioned by a WCAG floor against `#surface`, so each face keeps the same separation from the page in light, dark, and high contrast, and follows a re-seeded brand hue as a tint rather than as a colour. Recolouring one face and not the others would break the shading, which is why there is no prop for it.
|
|
28
|
+
|
|
29
|
+
## Properties
|
|
30
|
+
|
|
31
|
+
- **`size`** `Styles['fontSize']` — Icon size; drives both axes
|
|
32
|
+
|
|
33
|
+
### Base Properties
|
|
34
|
+
|
|
35
|
+
Supports [Base properties](../../BaseProperties.md).
|
|
36
|
+
|
|
37
|
+
### Style Properties
|
|
38
|
+
|
|
39
|
+
Accepts the same style props as `Icon` — outer, base, and color style props.
|
|
40
|
+
|
|
41
|
+
## Examples
|
|
42
|
+
|
|
43
|
+
```jsx
|
|
44
|
+
<Flow gap="1x" placeItems="center">
|
|
45
|
+
<NoDataIcon size="8x" />
|
|
46
|
+
<Paragraph>No invoices yet.</Paragraph>
|
|
47
|
+
</Flow>
|
|
48
|
+
```
|