@cube-dev/ui-kit 0.207.0 → 0.208.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/dist/CHANGELOG.md +12 -0
- 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-sync-ref.js.map +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.d.ts +0 -2
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/CollectionItem.js.map +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/GridProvider.js.map +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +3 -3
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Banner/Banner.js.map +1 -1
- package/dist/components/actions/Button/Button.d.ts +0 -1
- package/dist/components/actions/Button/Button.js +8 -7
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/Button/index.d.ts +16 -1
- package/dist/components/actions/Button/index.js +13 -0
- package/dist/components/actions/Button/index.js.map +1 -0
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.d.ts +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +2 -2
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.d.ts +0 -2
- package/dist/components/actions/ItemButton/ItemButton.js +2 -2
- 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.d.ts +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/Menu.js.map +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +2 -2
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +3 -3
- package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +2 -2
- package/dist/components/actions/Menu/SubMenuTrigger.js.map +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/index.d.ts +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.d.ts +6 -18
- package/dist/components/actions/use-action.js +2 -2
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.d.ts +0 -1
- package/dist/components/actions/use-anchored-menu.js +2 -2
- package/dist/components/actions/use-anchored-menu.js.map +1 -1
- package/dist/components/actions/use-context-menu.d.ts +0 -1
- package/dist/components/actions/use-context-menu.js +2 -2
- package/dist/components/actions/use-context-menu.js.map +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js.map +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/Alert/use-alert.js.map +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.d.ts +0 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/Content.js.map +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +3 -3
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.d.ts +2 -18
- package/dist/components/content/CopySnippet/CopySnippet.js +2 -2
- package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
- package/dist/components/content/Disclosure/Disclosure.d.ts +0 -1
- package/dist/components/content/Disclosure/Disclosure.js +2 -2
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider/Divider.js +1 -1
- package/dist/components/content/Divider/Divider.js.map +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Footer.js.map +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/Header.js.map +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js.map +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 +1 -2
- package/dist/components/content/Item/Item.js +4 -4
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +2 -2
- package/dist/components/content/Item/index.d.ts +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemBadge/index.d.ts +1 -2
- 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/Layout.js.map +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/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js.map +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js.map +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/LayoutHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPane.js +2 -2
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +3 -3
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelTransition.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/Placeholder/Placeholder.js.map +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 +2 -2
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/content/Tag/Tag.d.ts +0 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- 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/Title.js.map +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +5 -5
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/checked-keys.js +1 -1
- package/dist/components/content/Tree/rowId.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/types.d.ts +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/Tree/use-load-data.js.map +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/DataTable/DataTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +2 -2
- package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -2
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
- package/dist/components/data/ItemTable/item-table-sections.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js.map +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/TableHeaderCell.js.map +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableRow.js.map +1 -1
- package/dist/components/data/TableBase/TableRowLink.js +1 -1
- package/dist/components/data/TableBase/TableView.js +6 -6
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-menu.js.map +1 -1
- package/dist/components/data/TableBase/column-styles.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/styled.js.map +1 -1
- package/dist/components/data/TableBase/table-body-sections.js +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-column-menu.js +2 -2
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js.map +1 -1
- package/dist/components/data/TableBase/use-column-window.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-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
- package/dist/components/fields/Checkbox/Checkbox.d.ts +0 -1
- package/dist/components/fields/Checkbox/Checkbox.js +3 -3
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +0 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.d.ts +0 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.d.ts +0 -3
- package/dist/components/fields/ColorPicker/ColorPicker.js +3 -3
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +0 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -2
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +0 -1
- package/dist/components/fields/ComboBox/ComboBox.js +6 -6
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +1 -2
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +2 -2
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +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/CalendarPopover.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.d.ts +0 -1
- package/dist/components/fields/DatePicker/DateInput.js +2 -2
- package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/DatePicker.js +2 -2
- package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- 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/DatePickerInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +2 -2
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +2 -2
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.d.ts +0 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +2 -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.d.ts +0 -1
- package/dist/components/fields/DatePicker/TimeInput.js +2 -2
- package/dist/components/fields/DatePicker/TimeInput.js.map +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.d.ts +0 -1
- package/dist/components/fields/FileInput/FileInput.js +3 -3
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +3 -3
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterListBox/styled.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +0 -3
- package/dist/components/fields/FilterPicker/FilterPicker.js +8 -8
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterTree.js +2 -2
- package/dist/components/fields/FilterPicker/FilterTree.js.map +1 -1
- package/dist/components/fields/Input/Input.d.ts +0 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/Input/Input.js.map +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +4 -4
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +2 -2
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +2 -2
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +0 -2
- package/dist/components/fields/Picker/Picker.js +8 -8
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +0 -1
- package/dist/components/fields/RadioGroup/Radio.js +2 -2
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.d.ts +0 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
- 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.d.ts +0 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +6 -6
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +2 -2
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.d.ts +1 -2
- package/dist/components/fields/Select/Select.js +7 -7
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/Slider.js.map +1 -1
- package/dist/components/fields/Slider/SliderBase.js +2 -2
- package/dist/components/fields/Slider/SliderBase.js.map +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +2 -2
- package/dist/components/fields/Slider/types.d.ts +0 -1
- package/dist/components/fields/Switch/Switch.d.ts +0 -1
- package/dist/components/fields/Switch/Switch.js +3 -3
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TagInput/TagInput.js +5 -5
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TagInput/TagList.js.map +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +2 -2
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.js +2 -2
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.d.ts +0 -1
- package/dist/components/fields/TextInput/TextInputBase.js +3 -3
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/displayed-validation.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +0 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +3 -3
- package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/index.d.ts +2 -2
- package/dist/components/fields/option-origin-press.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +2 -2
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +1 -1
- package/dist/components/form/FieldWrapper/types.d.ts +0 -1
- package/dist/components/form/Form/Field.d.ts +0 -1
- package/dist/components/form/Form/Field.js +3 -3
- package/dist/components/form/Form/Field.js.map +1 -1
- package/dist/components/form/Form/Form.d.ts +1 -26
- package/dist/components/form/Form/Form.js +7 -116
- package/dist/components/form/Form/Form.js.map +1 -1
- package/dist/components/form/Form/FormContext.d.ts +30 -0
- package/dist/components/form/Form/FormContext.js +79 -0
- package/dist/components/form/Form/FormContext.js.map +1 -0
- package/dist/components/form/Form/FormElement.js +49 -0
- package/dist/components/form/Form/FormElement.js.map +1 -0
- package/dist/components/form/Form/ModernFormRoot.js +3 -2
- package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +2 -2
- package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +2 -2
- package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/dist/components/form/Form/SubmitError.d.ts +0 -1
- package/dist/components/form/Form/SubmitError.js +3 -3
- package/dist/components/form/Form/SubmitError.js.map +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.d.ts +2 -1
- package/dist/components/form/Form/index.js +6 -5
- package/dist/components/form/Form/index.js.map +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/types.d.ts +0 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +2 -2
- package/dist/components/form/Form/use-field/use-field-props.js +4 -4
- package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field.d.ts +0 -1
- package/dist/components/form/Form/use-field/use-field.js +2 -2
- package/dist/components/form/Form/use-field/use-field.js.map +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.d.ts +0 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/Label.js.map +1 -1
- package/dist/components/form/field-chrome.js +1 -1
- package/dist/components/form/field-layout.js +1 -1
- package/dist/components/form/field-layout.js.map +1 -1
- package/dist/components/form/index.d.ts +2 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.d.ts +0 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
- package/dist/components/form/validation/resolve-validation-props.d.ts +0 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js.map +1 -1
- package/dist/components/form/wrapper.d.ts +0 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/form/wrapper.js.map +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.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/Prefix.js.map +1 -1
- package/dist/components/layout/ResizablePanel.js +2 -2
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/layout/Suffix.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +3 -3
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
- package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +4 -4
- 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/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +2 -2
- package/dist/components/navigation/Tabs/Tabs.js.map +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/segmented-styles.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +2 -2
- 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 +2 -2
- package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +2 -2
- package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
- package/dist/components/overlays/AlertDialog/types.d.ts +0 -1
- package/dist/components/overlays/Dialog/Dialog.js +2 -2
- 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 +2 -2
- package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +0 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +5 -5
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +2 -2
- package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js.map +1 -1
- package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js +1 -1
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js.map +1 -1
- package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +2 -2
- package/dist/components/overlays/Modal/Modal.js.map +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js.map +1 -1
- package/dist/components/overlays/Modal/Popover.js +2 -2
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +2 -2
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/modal-containment.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/NotificationAction.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js.map +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/NotificationItem.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +2 -2
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +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/PersistentNotificationsList.js.map +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-notification-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js.map +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-persistent-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +2 -2
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
- package/dist/components/overlays/Toast/useToast.js +2 -2
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +3 -3
- package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/context.js.map +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.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.js +8 -32
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +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 +4 -4
- package/dist/i18n/instance.js +3 -3
- 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/namespace.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 +29 -27
- package/dist/index.js +69 -69
- 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 +2 -2
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigation-url.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +1 -1
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +23 -11
- package/dist/tokens/palette.js.map +1 -1
- package/dist/tokens/resolve.js +2 -2
- 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/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/index.d.ts +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.d.ts +3 -3
- package/dist/utils/react/index.js +13 -13
- 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/overlayKeyPropagation.js +1 -1
- package/dist/utils/react/programmaticFocus.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/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.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/ButtonSplit.md +1 -1
- package/docs/glaze/contrast.mdx +751 -0
- package/docs/glaze/exporting.mdx +635 -0
- package/docs/glaze/getting-started.mdx +487 -0
- package/docs/glaze/hdr.mdx +523 -0
- package/docs/glaze/methodology.mdx +979 -0
- package/docs/glaze/migration.md +476 -285
- package/docs/glaze/mixes.mdx +348 -0
- package/docs/glaze/okhst.mdx +692 -0
- package/docs/glaze/reference/color-definitions.md +552 -0
- package/docs/glaze/reference/color-tokens.md +421 -0
- package/docs/glaze/reference/configuration.md +532 -0
- package/docs/glaze/reference/contrast.md +279 -0
- package/docs/glaze/reference/index.md +225 -0
- package/docs/glaze/reference/output.md +714 -0
- package/docs/glaze/reference/palette.md +435 -0
- package/docs/glaze/reference/theme.md +332 -0
- package/docs/glaze/reference/utilities.md +646 -0
- package/docs/glaze/schemes.mdx +644 -0
- package/docs/glaze/shadows-and-glows.mdx +550 -0
- package/package.json +4 -4
- package/dist/components/actions/index.js +0 -29
- package/dist/components/actions/index.js.map +0 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.d.ts +0 -4
- package/dist/components/fields/ListBoxPopover/index.d.ts +0 -5
- package/dist/components/overlays/Modal/Modal.d.ts +0 -3
- package/dist/components/overlays/Modal/Popover.d.ts +0 -7
- package/dist/components/overlays/Modal/Tray.d.ts +0 -5
- package/dist/components/overlays/Modal/Underlay.d.ts +0 -3
- package/dist/components/overlays/Modal/index.d.ts +0 -8
- package/docs/glaze/api.md +0 -2021
- package/docs/glaze/methodology.md +0 -686
- package/docs/glaze/okhst.md +0 -207
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","names":["FocusableRef","PressEvent","CONTAINER_STYLES","mergeStyles","Mods","Styles","tasty","TEXT_STYLES","Children","forwardRef","HTMLAttributes","isValidElement","ReactNode","RefObject","useMemo","useRef","useState","Placement","useEvent","useIsFirstRender","useWarn","CURRENT_CLEAR_STYLES","CURRENT_LINK_STYLES","CURRENT_OUTLINE_2_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_STYLES","DANGER_CLEAR_STYLES","DANGER_LINK_STYLES","DANGER_OUTLINE_2_STYLES","DANGER_OUTLINE_STYLES","DANGER_PRIMARY_STYLES","DEFAULT_CLEAR_STYLES","DEFAULT_LINK_STYLES","DEFAULT_OUTLINE_2_STYLES","DEFAULT_OUTLINE_STYLES","DEFAULT_PRIMARY_STYLES","NOTE_CLEAR_STYLES","NOTE_LINK_STYLES","NOTE_OUTLINE_2_STYLES","NOTE_OUTLINE_STYLES","NOTE_PRIMARY_STYLES","SPECIAL_CLEAR_STYLES","SPECIAL_LINK_STYLES","SPECIAL_OUTLINE_STYLES","SPECIAL_PRIMARY_STYLES","SUCCESS_CLEAR_STYLES","SUCCESS_LINK_STYLES","SUCCESS_OUTLINE_2_STYLES","SUCCESS_OUTLINE_STYLES","SUCCESS_PRIMARY_STYLES","WARNING_CLEAR_STYLES","WARNING_LINK_STYLES","WARNING_OUTLINE_2_STYLES","WARNING_OUTLINE_STYLES","WARNING_PRIMARY_STYLES","LoadingIcon","DynamicIcon","getDisabledElementProps","mergeProps","omitActivationEventProps","resolveIcon","useDismissParentPopover","extractStyles","useAutoTooltip","DisplayTransition","IconSwitch","mergeTooltipFocusProps","CubeTooltipProviderProps","CubeActionProps","useButtonSplitContext","useAction","BUTTON_SIZE_VALUES","const","ButtonMods","pressed","loading","selected","CubeButtonProps","icon","rightIcon","isLoading","isSelected","type","theme","size","shape","tooltip","Omit","auto","defaultTooltipPlacement","ButtonVariant","STYLE_PROPS","DEFAULT_ICON_STYLES","$","position","display","placeItems","placeContent","placeSelf","width","height","pointerEvents","transition","DEFAULT_BUTTON_STYLES","recipe","flow","gap","preset","outlineOffset","padding","whiteSpace","radius","margin","zIndex","verticalAlign","$size","Icon","opacity","translate","RightIcon","Label","boxSizing","overflow","textOverflow","textAlign","ButtonElement","qa","styles","variants","Button","allProps","ref","HTMLElement","splitContext","sizeProp","label","children","iconProp","rightIconProp","mods","download","onPress","userOnPress","tokens","props","isExplicitlyDisabled","isDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","isPressed","isDisabledElement","baseMods","resolvedIcon","resolvedRightIcon","hasLeftSlot","hasSlot","hasRightSlot","content","iconKey","displayName","name","rightIconKey","specifiedLabel","key","args","hasLeftIcon","hasChildren","singleIcon","hasIcons","rawChildren","toArray","some","child","isIconShown","setIsIconShown","isRightIconShown","setIsRightIconShown","isFirstRender","modifiers","labelProps","finalLabelProps","labelRef","renderWithTooltip","isTooltipActive","isAutoTooltipEnabled","undefined","hasOwnTooltip","isOnlyLoading","isNativelyDisabled","isInert","inertProps","keepEvents","as","elementProps","renderButtonElement","tooltipTriggerProps","tooltipRef","handleRef","element","domRef","isCustomSize","includes","sizeTokenValue","effectiveType","ariaPressed","role","tabIndex"],"sources":["../../../../src/components/actions/Button/Button.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport {\n CONTAINER_STYLES,\n mergeStyles,\n Mods,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport {\n Children,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n ReactNode,\n RefObject,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Placement } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport { useIsFirstRender } from '../../../_internal/hooks/use-is-first-render';\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_LINK_STYLES,\n CURRENT_OUTLINE_2_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_LINK_STYLES,\n DANGER_OUTLINE_2_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_OUTLINE_2_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_LINK_STYLES,\n NOTE_OUTLINE_2_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_OUTLINE_2_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_LINK_STYLES,\n WARNING_OUTLINE_2_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n DynamicIcon,\n getDisabledElementProps,\n mergeProps,\n omitActivationEventProps,\n resolveIcon,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport { DisplayTransition } from '../../helpers/DisplayTransition';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { mergeTooltipFocusProps } from '../../overlays/Tooltip/split-trigger-props';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { CubeActionProps } from '../Action/Action';\nimport { useButtonSplitContext } from '../ButtonSplit/context';\nimport { useAction } from '../use-action';\n\nconst BUTTON_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Button component */\nexport type ButtonMods = Mods<{\n pressed?: boolean;\n loading?: boolean;\n selected?: boolean;\n 'has-icons'?: boolean;\n 'has-icon'?: boolean;\n 'has-right-icon'?: boolean;\n 'single-icon'?: boolean;\n 'text-only'?: boolean;\n 'raw-children'?: boolean;\n}>;\n\nexport interface CubeButtonProps extends CubeActionProps {\n icon?: DynamicIcon<ButtonMods>;\n rightIcon?: DynamicIcon<ButtonMods>;\n isLoading?: boolean;\n isSelected?: boolean;\n type?:\n | 'primary'\n | 'danger'\n | 'link'\n | 'clear'\n | 'outline'\n | 'outline-2'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | 'current'\n | (string & {});\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n /**\n * Corner shape, named as on `Item`:\n * - `button` - The button radius (`1r`, default)\n * - `card` - The card radius (`1cr`), for a button laid out as a card\n * - `sharp` - Square corners, for a button that fills a row or cell edge to edge\n * - `pill` - Fully rounded ends (`round`); a single-icon button becomes a circle\n *\n * A `link` button and the joined edges inside a `Button.Split` keep their own radius.\n */\n shape?: 'button' | 'card' | 'sharp' | 'pill';\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n /**\n * @private\n * Default tooltip placement for the button.\n * @default \"top\"\n */\n defaultTooltipPlacement?: Placement;\n}\n\nexport type ButtonVariant =\n // The `current` theme mixes every color from the inherited `currentcolor`\n // instead of a brand ramp — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.outline-2'\n | 'current.clear'\n | 'current.link'\n | 'default.primary'\n | 'default.outline'\n | 'default.outline-2'\n | 'default.clear'\n | 'default.link'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.outline-2'\n | 'danger.clear'\n | 'danger.link'\n | 'success.primary'\n | 'success.outline'\n | 'success.outline-2'\n | 'success.clear'\n | 'success.link'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.outline-2'\n | 'warning.clear'\n | 'warning.link'\n | 'note.primary'\n | 'note.outline'\n | 'note.outline-2'\n | 'note.clear'\n | 'note.link'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear'\n | 'special.link';\n\nconst STYLE_PROPS = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n position: 'relative',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n placeSelf: 'stretch',\n // overflow: 'hidden',\n width: 'fixed ($size - 2bw)',\n height: 'fixed ($size - 2bw)',\n pointerEvents: 'none',\n transition: 'theme, width, height, translate',\n};\n\nexport const DEFAULT_BUTTON_STYLES: Styles = {\n recipe: 'reset button',\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n placeItems: {\n '': 'stretch',\n 'raw-children': 'center stretch',\n },\n placeContent: 'center',\n position: 'relative',\n preset: {\n '': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2m',\n 'type=link': 'strong',\n },\n outlineOffset: '$outline-offset',\n padding: {\n '': 0,\n 'raw-children & !has-icons':\n '$block-padding $inline-padding $block-padding $inline-padding',\n 'type=link': '0',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2 - 2bw)',\n 'single-icon': 'fixed $size',\n 'type=link': 'min 1ch',\n },\n height: {\n '': 'fixed $size',\n 'type=link': 'initial',\n },\n whiteSpace: 'nowrap',\n radius: {\n '': true,\n 'shape=card': '1cr',\n 'shape=sharp': 0,\n 'shape=pill': 'round',\n 'type=link & !focused': 0,\n '@parent(button-split, >) & !:last-child': '1r left',\n '@parent(button-split, >) & !:first-child': '1r right',\n '@parent(button-split, >) & !:first-child & !:last-child': 0,\n },\n margin: {\n '': 0,\n '@parent(button-split, >) & !:first-child & (type=outline | type=outline-2 | type=primary)':\n '-1bw left',\n },\n // oxlint-disable-next-line tasty/require-default-state -- outside a ButtonSplit the button sets no z-index, so the consumer's stacking applies\n zIndex: {\n '@parent(button-split, >) & :hover': 1,\n '@parent(button-split, >) & :focus-visible': 2,\n },\n transition: 'theme, grid-template, padding',\n verticalAlign: 'bottom',\n\n $size: {\n '': '$size-md',\n 'size=xsmall': '$size-xs',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n 'size=xlarge': '$size-xl',\n 'size=inline': '(1lh + 2bw)',\n },\n '$inline-padding': {\n '': 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',\n },\n '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n '$left-padding': {\n '': '$inline-padding',\n 'is-icon-shown': '0px',\n },\n '$right-padding': {\n '': '$inline-padding',\n 'is-right-icon-shown': '0px',\n },\n\n // Icon sub-element (recommended format)\n Icon: mergeStyles(DEFAULT_ICON_STYLES, {\n width: {\n '': 'fixed 0px',\n 'is-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-icon-shown': 1,\n },\n translate: {\n '': '($size * 1 / 4) 0',\n 'is-icon-shown': '0 0',\n },\n }),\n\n // RightIcon sub-element (recommended format)\n RightIcon: mergeStyles(DEFAULT_ICON_STYLES, {\n width: {\n '': 'fixed 0px',\n 'is-right-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-right-icon-shown': 1,\n },\n translate: {\n '': '($size * -1 / 4) 0',\n 'is-right-icon-shown': '0 0',\n },\n }),\n\n // Label sub-element (recommended format)\n Label: {\n $: '>',\n display: 'block',\n placeSelf: 'center stretch',\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n textAlign: 'center',\n transition: 'theme, padding',\n padding: {\n '': '$block-padding $right-padding $block-padding $left-padding',\n 'type=link': '0',\n },\n },\n} as const;\n\nconst ButtonElement = tasty({\n qa: 'Button',\n styles: DEFAULT_BUTTON_STYLES,\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.outline-2': CURRENT_OUTLINE_2_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n 'current.link': CURRENT_LINK_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.outline-2': DEFAULT_OUTLINE_2_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n 'default.link': DEFAULT_LINK_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.outline-2': DANGER_OUTLINE_2_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n 'danger.link': DANGER_LINK_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.outline-2': SUCCESS_OUTLINE_2_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n 'success.link': SUCCESS_LINK_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.outline-2': WARNING_OUTLINE_2_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n 'warning.link': WARNING_LINK_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.outline-2': NOTE_OUTLINE_2_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n 'note.link': NOTE_LINK_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n 'special.link': SPECIAL_LINK_STYLES,\n },\n});\n\nexport const Button = forwardRef(function Button(\n allProps: CubeButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const splitContext = useButtonSplitContext();\n\n let {\n type,\n size: sizeProp,\n shape,\n label,\n children,\n theme = splitContext?.theme ?? 'default',\n icon: iconProp,\n rightIcon: rightIconProp,\n mods,\n download,\n tooltip = true,\n defaultTooltipPlacement = 'top',\n onPress: userOnPress,\n tokens,\n ...props\n } = allProps;\n\n type = type ?? splitContext?.type;\n const size =\n sizeProp ?? splitContext?.size ?? (type === 'link' ? 'inline' : 'medium');\n\n const isExplicitlyDisabled = splitContext?.isDisabled || props.isDisabled;\n const isDisabled = isExplicitlyDisabled || props.isLoading;\n const isLoading = props.isLoading;\n const isSelected = props.isSelected;\n\n // Default: pressing a Button inside an open popover closes that popover.\n // Opt-outs (handled inline below):\n // - `data-popover-trigger` (auto, applied by MenuTrigger/DialogTrigger\n // type='popover' so triggers don't dismiss the popover they live in)\n // - `data-popover-keep` on self or any ancestor (manual opt-out for\n // toggles, custom inline editors, etc.)\n // - `data-popover-keep-on-press` on self or any ancestor: the same opt-out\n // for presses only. Unlike `data-popover-keep`, it does not stop a click\n // in the subtree from closing a nested popover (a field's listbox).\n // Modals/trays don't subscribe at all, so this is a no-op there.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n userOnPress?.(e);\n const el = buttonElementRef.current;\n if (!el) return;\n if (el.hasAttribute('data-popover-trigger')) return;\n if (el.closest('[data-popover-keep], [data-popover-keep-on-press]')) {\n return;\n }\n dismissParentPopover(el);\n });\n\n const { actionProps, isPressed } = useAction(\n {\n ...allProps,\n isDisabled,\n onPress: wrappedOnPress,\n ...(label ? { label } : {}),\n },\n ref,\n );\n\n const styles = extractStyles(props, STYLE_PROPS);\n const isDisabledElement = actionProps.isDisabled;\n\n delete actionProps.isDisabled;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ButtonMods>(\n () => ({\n pressed: isPressed && !isDisabled,\n loading: isLoading,\n selected: isSelected,\n ...mods,\n }),\n [isPressed, isDisabled, isLoading, isSelected, mods],\n );\n\n // Resolve dynamic icon props\n const resolvedIcon = useMemo(\n () => resolveIcon(iconProp, baseMods),\n [iconProp, baseMods],\n );\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n const hasLeftSlot = resolvedIcon.hasSlot;\n const hasRightSlot = resolvedRightIcon.hasSlot;\n\n const icon: ReactNode = resolvedIcon.content;\n const rightIcon: ReactNode = resolvedRightIcon.content;\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = isLoading\n ? 'loading'\n : isValidElement(icon)\n ? (icon.type as any)?.displayName || (icon.type as any)?.name || 'icon'\n : icon\n ? 'icon'\n : 'empty';\n\n const rightIconKey = isValidElement(rightIcon)\n ? (rightIcon.type as any)?.displayName ||\n (rightIcon.type as any)?.name ||\n 'icon'\n : rightIcon\n ? 'icon'\n : 'empty';\n\n children = children || hasLeftSlot || hasRightSlot ? children : label;\n\n const specifiedLabel =\n label ?? props['aria-label'] ?? props['aria-labelledby'];\n\n // Warn about accessibility issues when button has no accessible label\n useWarn(!children && hasLeftSlot && !specifiedLabel, {\n key: ['button-icon-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide `icon` property for a Button and do not provide any children then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n useWarn(!children && !hasLeftSlot && !specifiedLabel, {\n key: ['button-no-content-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide no children for a Button then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n if (!children && !specifiedLabel) {\n label = 'Unnamed'; // fix to avoid warning in production\n }\n\n const hasLeftIcon = !!(hasLeftSlot || isLoading);\n const hasChildren = children != null;\n const singleIcon = !!(\n ((hasLeftIcon && !hasRightSlot) || (hasRightSlot && !hasLeftIcon)) &&\n !hasChildren\n );\n\n const hasIcons = hasLeftIcon || hasRightSlot;\n const rawChildren = !!(\n hasChildren &&\n typeof children !== 'string' &&\n !Children.toArray(children).some((child) => typeof child === 'string')\n );\n\n const [isIconShown, setIsIconShown] = useState(hasLeftIcon);\n const [isRightIconShown, setIsRightIconShown] = useState(hasRightSlot);\n const isFirstRender = useIsFirstRender();\n\n const modifiers = useMemo<ButtonMods>(\n () => ({\n ...baseMods,\n 'has-icons': hasIcons,\n 'has-icon': hasLeftIcon,\n 'is-icon-shown': isIconShown,\n 'has-right-icon': hasRightSlot,\n 'is-right-icon-shown': isRightIconShown,\n 'single-icon': singleIcon,\n 'text-only': !!(hasChildren && typeof children === 'string' && !hasIcons),\n 'raw-children': rawChildren,\n 'has-content': children != null,\n }),\n [\n baseMods,\n children,\n hasLeftIcon,\n hasRightSlot,\n singleIcon,\n hasIcons,\n hasChildren,\n rawChildren,\n isIconShown,\n isRightIconShown,\n ],\n );\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n isTooltipActive,\n isAutoTooltipEnabled,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps: undefined,\n });\n\n // A tooltip the caller wrote, as opposed to the automatic one that shows a\n // label cut off by the layout.\n const hasOwnTooltip = isTooltipActive && !isAutoTooltipEnabled;\n // Loading without being disabled: busy, but not unavailable.\n const isOnlyLoading = !!isLoading && !isExplicitlyDisabled;\n\n // A disabled button still has to be able to show its tooltip — that is\n // usually where the reason for being unavailable is written. The native\n // `disabled` attribute would make the browser drop the hover that opens it,\n // so when a tooltip is present the button is marked `aria-disabled` and kept\n // inert instead. Only the caller's tooltip counts: the automatic one turns\n // on with the layout, and would make the button a Tab stop only while its\n // label is cut off.\n //\n // A button that is only loading keeps the focus it has, so a keyboard press\n // that starts the work does not drop it to the page, but Tab skips it, as it\n // would a disabled one, unless the caller's tooltip is there to be read. One\n // that is also `isDisabled` stays natively disabled: `SubmitButton` sets both\n // while a submission runs, and the frozen legacy Form contract pins that\n // button as `disabled`.\n //\n // The attribute is skipped for links too, where it is not valid markup and\n // `aria-disabled` is the only thing announcing the state.\n const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({\n isDisabled: isDisabledElement,\n keepEvents: hasOwnTooltip || isOnlyLoading,\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Without the native attribute, handlers a parent passed in (a `MenuTrigger`'s\n // `onKeyDown`) would still activate the button.\n const elementProps = isInert\n ? omitActivationEventProps(actionProps)\n : actionProps;\n\n // Render function that creates the button element\n const renderButtonElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ): ReactNode => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref from useAction\n const domRef = actionProps.ref as any;\n if (typeof domRef === 'function') {\n domRef(element);\n } else if (domRef) {\n domRef.current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Track the rendered DOM node so the dismiss wrapper around `onPress`\n // can read it synchronously without coupling to `useAction`'s ref shape.\n buttonElementRef.current = element;\n };\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n (size != null &&\n !(BUTTON_SIZE_VALUES as readonly string[]).includes(size));\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // The `special` theme has no `outline-2` variant (it paints over\n // `#special-surface`, not `#surface-2`/`#surface-3`); fall back to\n // `outline` so the button still renders.\n const effectiveType =\n theme === 'special' && type === 'outline-2' ? 'outline' : type;\n\n // `isSelected` is a toggle state, so mirror it into `aria-pressed` — the\n // behaviour Button.docs.mdx has always described. An explicit\n // `aria-pressed` from the call site still wins.\n //\n // Skipped when the button renders as a link (`to`), where `aria-pressed` is\n // not a valid attribute, and when the call site sets its own `role` — a\n // button acting as a tab or an option needs `aria-selected`/`aria-current`\n // instead, and only the call site knows which.\n //\n // Applied *after* the spread: react-aria's `useButton` always returns an\n // `aria-pressed` key (undefined when the caller passed none), so anything\n // set before the spread is overwritten by it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (isSelected != null && actionProps.as !== 'a' && allProps.role == null\n ? isSelected\n : undefined);\n\n return (\n <ButtonElement\n download={download}\n aria-busy={isLoading || undefined}\n // The tooltip joins the button's own description rather than\n // replacing it while open.\n {...mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n )}\n {...(isOnlyLoading && !hasOwnTooltip ? { tabIndex: -1 } : null)}\n aria-pressed={ariaPressed}\n ref={handleRef}\n mods={{ ...actionProps.mods, ...modifiers }}\n disabled={isNativelyDisabled}\n variant={`${theme}.${effectiveType ?? 'outline'}` as ButtonVariant}\n data-theme={theme}\n data-type={effectiveType ?? 'outline'}\n data-size={size}\n data-shape={shape === 'button' ? undefined : shape}\n data-popover-dismiss=\"\"\n styles={styles}\n tokens={{\n ...tokens,\n ...(sizeTokenValue ? { $size: sizeTokenValue } : {}),\n }}\n >\n <DisplayTransition\n isShown={hasLeftIcon}\n animateOnMount={!isFirstRender}\n onToggle={setIsIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"Icon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {isLoading ? <LoadingIcon /> : icon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n {hasChildren &&\n (rawChildren ? (\n children\n ) : (\n <div data-element=\"Label\" {...finalLabelProps} ref={labelRef}>\n {children}\n </div>\n ))}\n <DisplayTransition\n isShown={hasRightSlot}\n animateOnMount={!isFirstRender}\n onToggle={setIsRightIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"RightIcon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {rightIcon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n </ButtonElement>\n );\n };\n\n return renderWithTooltip(renderButtonElement, defaultTooltipPlacement);\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Button.js","names":["FocusableRef","PressEvent","CONTAINER_STYLES","mergeStyles","Mods","Styles","tasty","TEXT_STYLES","Children","forwardRef","HTMLAttributes","isValidElement","ReactNode","RefObject","useMemo","useRef","useState","Placement","useEvent","useIsFirstRender","useWarn","CURRENT_CLEAR_STYLES","CURRENT_LINK_STYLES","CURRENT_OUTLINE_2_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_STYLES","DANGER_CLEAR_STYLES","DANGER_LINK_STYLES","DANGER_OUTLINE_2_STYLES","DANGER_OUTLINE_STYLES","DANGER_PRIMARY_STYLES","DEFAULT_CLEAR_STYLES","DEFAULT_LINK_STYLES","DEFAULT_OUTLINE_2_STYLES","DEFAULT_OUTLINE_STYLES","DEFAULT_PRIMARY_STYLES","NOTE_CLEAR_STYLES","NOTE_LINK_STYLES","NOTE_OUTLINE_2_STYLES","NOTE_OUTLINE_STYLES","NOTE_PRIMARY_STYLES","SPECIAL_CLEAR_STYLES","SPECIAL_LINK_STYLES","SPECIAL_OUTLINE_STYLES","SPECIAL_PRIMARY_STYLES","SUCCESS_CLEAR_STYLES","SUCCESS_LINK_STYLES","SUCCESS_OUTLINE_2_STYLES","SUCCESS_OUTLINE_STYLES","SUCCESS_PRIMARY_STYLES","WARNING_CLEAR_STYLES","WARNING_LINK_STYLES","WARNING_OUTLINE_2_STYLES","WARNING_OUTLINE_STYLES","WARNING_PRIMARY_STYLES","LoadingIcon","getDisabledElementProps","omitActivationEventProps","mergeProps","DynamicIcon","resolveIcon","useDismissParentPopover","extractStyles","useAutoTooltip","DisplayTransition","IconSwitch","mergeTooltipFocusProps","CubeTooltipProviderProps","CubeActionProps","useButtonSplitContext","useAction","BUTTON_SIZE_VALUES","const","ButtonMods","pressed","loading","selected","CubeButtonProps","icon","rightIcon","isLoading","isSelected","type","theme","size","shape","tooltip","Omit","auto","defaultTooltipPlacement","ButtonVariant","STYLE_PROPS","DEFAULT_ICON_STYLES","$","position","display","placeItems","placeContent","placeSelf","width","height","pointerEvents","transition","DEFAULT_BUTTON_STYLES","recipe","flow","gap","preset","outlineOffset","padding","whiteSpace","radius","margin","zIndex","verticalAlign","$size","Icon","opacity","translate","RightIcon","Label","boxSizing","overflow","textOverflow","textAlign","ButtonElement","qa","styles","variants","Button","allProps","ref","HTMLElement","splitContext","sizeProp","label","children","iconProp","rightIconProp","mods","download","onPress","userOnPress","tokens","props","isExplicitlyDisabled","isDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","isPressed","isDisabledElement","baseMods","resolvedIcon","resolvedRightIcon","hasLeftSlot","hasSlot","hasRightSlot","content","iconKey","displayName","name","rightIconKey","specifiedLabel","key","args","hasLeftIcon","hasChildren","singleIcon","hasIcons","rawChildren","toArray","some","child","isIconShown","setIsIconShown","isRightIconShown","setIsRightIconShown","isFirstRender","modifiers","labelProps","finalLabelProps","labelRef","renderWithTooltip","isTooltipActive","isAutoTooltipEnabled","undefined","hasOwnTooltip","isOnlyLoading","isNativelyDisabled","isInert","inertProps","keepEvents","as","elementProps","renderButtonElement","tooltipTriggerProps","tooltipRef","handleRef","element","domRef","isCustomSize","includes","sizeTokenValue","effectiveType","ariaPressed","role","tabIndex"],"sources":["../../../../src/components/actions/Button/Button.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport {\n CONTAINER_STYLES,\n mergeStyles,\n Mods,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport {\n Children,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n ReactNode,\n RefObject,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Placement } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { useIsFirstRender } from '../../../_internal/hooks/use-is-first-render';\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_LINK_STYLES,\n CURRENT_OUTLINE_2_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_LINK_STYLES,\n DANGER_OUTLINE_2_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_OUTLINE_2_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_LINK_STYLES,\n NOTE_OUTLINE_2_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_OUTLINE_2_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_LINK_STYLES,\n WARNING_OUTLINE_2_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n getDisabledElementProps,\n omitActivationEventProps,\n} from '../../../utils/react/disabledProps';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { DynamicIcon, resolveIcon } from '../../../utils/react/resolveIcon';\nimport { useDismissParentPopover } from '../../../utils/react/usePopoverSync';\nimport { extractStyles } from '../../../utils/styles';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { mergeTooltipFocusProps } from '../../overlays/Tooltip/split-trigger-props';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { CubeActionProps } from '../Action/Action';\nimport { useButtonSplitContext } from '../ButtonSplit/context';\nimport { useAction } from '../use-action';\n\nconst BUTTON_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Button component */\nexport type ButtonMods = Mods<{\n pressed?: boolean;\n loading?: boolean;\n selected?: boolean;\n 'has-icons'?: boolean;\n 'has-icon'?: boolean;\n 'has-right-icon'?: boolean;\n 'single-icon'?: boolean;\n 'text-only'?: boolean;\n 'raw-children'?: boolean;\n}>;\n\nexport interface CubeButtonProps extends CubeActionProps {\n icon?: DynamicIcon<ButtonMods>;\n rightIcon?: DynamicIcon<ButtonMods>;\n isLoading?: boolean;\n isSelected?: boolean;\n type?:\n | 'primary'\n | 'danger'\n | 'link'\n | 'clear'\n | 'outline'\n | 'outline-2'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | 'current'\n | (string & {});\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n /**\n * Corner shape, named as on `Item`:\n * - `button` - The button radius (`1r`, default)\n * - `card` - The card radius (`1cr`), for a button laid out as a card\n * - `sharp` - Square corners, for a button that fills a row or cell edge to edge\n * - `pill` - Fully rounded ends (`round`); a single-icon button becomes a circle\n *\n * A `link` button and the joined edges inside a `Button.Split` keep their own radius.\n */\n shape?: 'button' | 'card' | 'sharp' | 'pill';\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n /**\n * @private\n * Default tooltip placement for the button.\n * @default \"top\"\n */\n defaultTooltipPlacement?: Placement;\n}\n\nexport type ButtonVariant =\n // The `current` theme mixes every color from the inherited `currentcolor`\n // instead of a brand ramp — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.outline-2'\n | 'current.clear'\n | 'current.link'\n | 'default.primary'\n | 'default.outline'\n | 'default.outline-2'\n | 'default.clear'\n | 'default.link'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.outline-2'\n | 'danger.clear'\n | 'danger.link'\n | 'success.primary'\n | 'success.outline'\n | 'success.outline-2'\n | 'success.clear'\n | 'success.link'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.outline-2'\n | 'warning.clear'\n | 'warning.link'\n | 'note.primary'\n | 'note.outline'\n | 'note.outline-2'\n | 'note.clear'\n | 'note.link'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear'\n | 'special.link';\n\nconst STYLE_PROPS = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n position: 'relative',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n placeSelf: 'stretch',\n // overflow: 'hidden',\n width: 'fixed ($size - 2bw)',\n height: 'fixed ($size - 2bw)',\n pointerEvents: 'none',\n transition: 'theme, width, height, translate',\n};\n\nexport const DEFAULT_BUTTON_STYLES: Styles = {\n recipe: 'reset button',\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n placeItems: {\n '': 'stretch',\n 'raw-children': 'center stretch',\n },\n placeContent: 'center',\n position: 'relative',\n preset: {\n '': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2m',\n 'type=link': 'strong',\n },\n outlineOffset: '$outline-offset',\n padding: {\n '': 0,\n 'raw-children & !has-icons':\n '$block-padding $inline-padding $block-padding $inline-padding',\n 'type=link': '0',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2 - 2bw)',\n 'single-icon': 'fixed $size',\n 'type=link': 'min 1ch',\n },\n height: {\n '': 'fixed $size',\n 'type=link': 'initial',\n },\n whiteSpace: 'nowrap',\n radius: {\n '': true,\n 'shape=card': '1cr',\n 'shape=sharp': 0,\n 'shape=pill': 'round',\n 'type=link & !focused': 0,\n '@parent(button-split, >) & !:last-child': '1r left',\n '@parent(button-split, >) & !:first-child': '1r right',\n '@parent(button-split, >) & !:first-child & !:last-child': 0,\n },\n margin: {\n '': 0,\n // Outline halves overlap so their borders merge into one line. Primary halves\n // have no visible border, so a real gap divides them instead and shows\n // whatever is behind the split.\n '@parent(button-split, >) & !:first-child & (type=outline | type=outline-2)':\n '-1bw left',\n '@parent(button-split, >) & !:first-child & type=primary': '1bw left',\n },\n // oxlint-disable-next-line tasty/require-default-state -- outside a ButtonSplit the button sets no z-index, so the consumer's stacking applies\n zIndex: {\n '@parent(button-split, >) & :hover': 1,\n '@parent(button-split, >) & :focus-visible': 2,\n },\n transition: 'theme, grid-template, padding',\n verticalAlign: 'bottom',\n\n $size: {\n '': '$size-md',\n 'size=xsmall': '$size-xs',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n 'size=xlarge': '$size-xl',\n 'size=inline': '(1lh + 2bw)',\n },\n '$inline-padding': {\n '': 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',\n },\n '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n '$left-padding': {\n '': '$inline-padding',\n 'is-icon-shown': '0px',\n },\n '$right-padding': {\n '': '$inline-padding',\n 'is-right-icon-shown': '0px',\n },\n\n // Icon sub-element (recommended format)\n Icon: mergeStyles(DEFAULT_ICON_STYLES, {\n width: {\n '': 'fixed 0px',\n 'is-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-icon-shown': 1,\n },\n translate: {\n '': '($size * 1 / 4) 0',\n 'is-icon-shown': '0 0',\n },\n }),\n\n // RightIcon sub-element (recommended format)\n RightIcon: mergeStyles(DEFAULT_ICON_STYLES, {\n width: {\n '': 'fixed 0px',\n 'is-right-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-right-icon-shown': 1,\n },\n translate: {\n '': '($size * -1 / 4) 0',\n 'is-right-icon-shown': '0 0',\n },\n }),\n\n // Label sub-element (recommended format)\n Label: {\n $: '>',\n display: 'block',\n placeSelf: 'center stretch',\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n textAlign: 'center',\n transition: 'theme, padding',\n padding: {\n '': '$block-padding $right-padding $block-padding $left-padding',\n 'type=link': '0',\n },\n },\n} as const;\n\nconst ButtonElement = tasty({\n qa: 'Button',\n styles: DEFAULT_BUTTON_STYLES,\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.outline-2': CURRENT_OUTLINE_2_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n 'current.link': CURRENT_LINK_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.outline-2': DEFAULT_OUTLINE_2_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n 'default.link': DEFAULT_LINK_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.outline-2': DANGER_OUTLINE_2_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n 'danger.link': DANGER_LINK_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.outline-2': SUCCESS_OUTLINE_2_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n 'success.link': SUCCESS_LINK_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.outline-2': WARNING_OUTLINE_2_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n 'warning.link': WARNING_LINK_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.outline-2': NOTE_OUTLINE_2_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n 'note.link': NOTE_LINK_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n 'special.link': SPECIAL_LINK_STYLES,\n },\n});\n\nexport const Button = forwardRef(function Button(\n allProps: CubeButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const splitContext = useButtonSplitContext();\n\n let {\n type,\n size: sizeProp,\n shape,\n label,\n children,\n theme = splitContext?.theme ?? 'default',\n icon: iconProp,\n rightIcon: rightIconProp,\n mods,\n download,\n tooltip = true,\n defaultTooltipPlacement = 'top',\n onPress: userOnPress,\n tokens,\n ...props\n } = allProps;\n\n type = type ?? splitContext?.type;\n const size =\n sizeProp ?? splitContext?.size ?? (type === 'link' ? 'inline' : 'medium');\n\n const isExplicitlyDisabled = splitContext?.isDisabled || props.isDisabled;\n const isDisabled = isExplicitlyDisabled || props.isLoading;\n const isLoading = props.isLoading;\n const isSelected = props.isSelected;\n\n // Default: pressing a Button inside an open popover closes that popover.\n // Opt-outs (handled inline below):\n // - `data-popover-trigger` (auto, applied by MenuTrigger/DialogTrigger\n // type='popover' so triggers don't dismiss the popover they live in)\n // - `data-popover-keep` on self or any ancestor (manual opt-out for\n // toggles, custom inline editors, etc.)\n // - `data-popover-keep-on-press` on self or any ancestor: the same opt-out\n // for presses only. Unlike `data-popover-keep`, it does not stop a click\n // in the subtree from closing a nested popover (a field's listbox).\n // Modals/trays don't subscribe at all, so this is a no-op there.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n userOnPress?.(e);\n const el = buttonElementRef.current;\n if (!el) return;\n if (el.hasAttribute('data-popover-trigger')) return;\n if (el.closest('[data-popover-keep], [data-popover-keep-on-press]')) {\n return;\n }\n dismissParentPopover(el);\n });\n\n const { actionProps, isPressed } = useAction(\n {\n ...allProps,\n isDisabled,\n onPress: wrappedOnPress,\n ...(label ? { label } : {}),\n },\n ref,\n );\n\n const styles = extractStyles(props, STYLE_PROPS);\n const isDisabledElement = actionProps.isDisabled;\n\n delete actionProps.isDisabled;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ButtonMods>(\n () => ({\n pressed: isPressed && !isDisabled,\n loading: isLoading,\n selected: isSelected,\n ...mods,\n }),\n [isPressed, isDisabled, isLoading, isSelected, mods],\n );\n\n // Resolve dynamic icon props\n const resolvedIcon = useMemo(\n () => resolveIcon(iconProp, baseMods),\n [iconProp, baseMods],\n );\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n const hasLeftSlot = resolvedIcon.hasSlot;\n const hasRightSlot = resolvedRightIcon.hasSlot;\n\n const icon: ReactNode = resolvedIcon.content;\n const rightIcon: ReactNode = resolvedRightIcon.content;\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = isLoading\n ? 'loading'\n : isValidElement(icon)\n ? (icon.type as any)?.displayName || (icon.type as any)?.name || 'icon'\n : icon\n ? 'icon'\n : 'empty';\n\n const rightIconKey = isValidElement(rightIcon)\n ? (rightIcon.type as any)?.displayName ||\n (rightIcon.type as any)?.name ||\n 'icon'\n : rightIcon\n ? 'icon'\n : 'empty';\n\n children = children || hasLeftSlot || hasRightSlot ? children : label;\n\n const specifiedLabel =\n label ?? props['aria-label'] ?? props['aria-labelledby'];\n\n // Warn about accessibility issues when button has no accessible label\n useWarn(!children && hasLeftSlot && !specifiedLabel, {\n key: ['button-icon-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide `icon` property for a Button and do not provide any children then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n useWarn(!children && !hasLeftSlot && !specifiedLabel, {\n key: ['button-no-content-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide no children for a Button then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n if (!children && !specifiedLabel) {\n label = 'Unnamed'; // fix to avoid warning in production\n }\n\n const hasLeftIcon = !!(hasLeftSlot || isLoading);\n const hasChildren = children != null;\n const singleIcon = !!(\n ((hasLeftIcon && !hasRightSlot) || (hasRightSlot && !hasLeftIcon)) &&\n !hasChildren\n );\n\n const hasIcons = hasLeftIcon || hasRightSlot;\n const rawChildren = !!(\n hasChildren &&\n typeof children !== 'string' &&\n !Children.toArray(children).some((child) => typeof child === 'string')\n );\n\n const [isIconShown, setIsIconShown] = useState(hasLeftIcon);\n const [isRightIconShown, setIsRightIconShown] = useState(hasRightSlot);\n const isFirstRender = useIsFirstRender();\n\n const modifiers = useMemo<ButtonMods>(\n () => ({\n ...baseMods,\n 'has-icons': hasIcons,\n 'has-icon': hasLeftIcon,\n 'is-icon-shown': isIconShown,\n 'has-right-icon': hasRightSlot,\n 'is-right-icon-shown': isRightIconShown,\n 'single-icon': singleIcon,\n 'text-only': !!(hasChildren && typeof children === 'string' && !hasIcons),\n 'raw-children': rawChildren,\n 'has-content': children != null,\n }),\n [\n baseMods,\n children,\n hasLeftIcon,\n hasRightSlot,\n singleIcon,\n hasIcons,\n hasChildren,\n rawChildren,\n isIconShown,\n isRightIconShown,\n ],\n );\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n isTooltipActive,\n isAutoTooltipEnabled,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps: undefined,\n });\n\n // A tooltip the caller wrote, as opposed to the automatic one that shows a\n // label cut off by the layout.\n const hasOwnTooltip = isTooltipActive && !isAutoTooltipEnabled;\n // Loading without being disabled: busy, but not unavailable.\n const isOnlyLoading = !!isLoading && !isExplicitlyDisabled;\n\n // A disabled button still has to be able to show its tooltip — that is\n // usually where the reason for being unavailable is written. The native\n // `disabled` attribute would make the browser drop the hover that opens it,\n // so when a tooltip is present the button is marked `aria-disabled` and kept\n // inert instead. Only the caller's tooltip counts: the automatic one turns\n // on with the layout, and would make the button a Tab stop only while its\n // label is cut off.\n //\n // A button that is only loading keeps the focus it has, so a keyboard press\n // that starts the work does not drop it to the page, but Tab skips it, as it\n // would a disabled one, unless the caller's tooltip is there to be read. One\n // that is also `isDisabled` stays natively disabled: `SubmitButton` sets both\n // while a submission runs, and the frozen legacy Form contract pins that\n // button as `disabled`.\n //\n // The attribute is skipped for links too, where it is not valid markup and\n // `aria-disabled` is the only thing announcing the state.\n const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({\n isDisabled: isDisabledElement,\n keepEvents: hasOwnTooltip || isOnlyLoading,\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Without the native attribute, handlers a parent passed in (a `MenuTrigger`'s\n // `onKeyDown`) would still activate the button.\n const elementProps = isInert\n ? omitActivationEventProps(actionProps)\n : actionProps;\n\n // Render function that creates the button element\n const renderButtonElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ): ReactNode => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref from useAction\n const domRef = actionProps.ref as any;\n if (typeof domRef === 'function') {\n domRef(element);\n } else if (domRef) {\n domRef.current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Track the rendered DOM node so the dismiss wrapper around `onPress`\n // can read it synchronously without coupling to `useAction`'s ref shape.\n buttonElementRef.current = element;\n };\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n (size != null &&\n !(BUTTON_SIZE_VALUES as readonly string[]).includes(size));\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // The `special` theme has no `outline-2` variant (it paints over\n // `#special-surface`, not `#surface-2`/`#surface-3`); fall back to\n // `outline` so the button still renders.\n const effectiveType =\n theme === 'special' && type === 'outline-2' ? 'outline' : type;\n\n // `isSelected` is a toggle state, so mirror it into `aria-pressed` — the\n // behaviour Button.docs.mdx has always described. An explicit\n // `aria-pressed` from the call site still wins.\n //\n // Skipped when the button renders as a link (`to`), where `aria-pressed` is\n // not a valid attribute, and when the call site sets its own `role` — a\n // button acting as a tab or an option needs `aria-selected`/`aria-current`\n // instead, and only the call site knows which.\n //\n // Applied *after* the spread: react-aria's `useButton` always returns an\n // `aria-pressed` key (undefined when the caller passed none), so anything\n // set before the spread is overwritten by it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (isSelected != null && actionProps.as !== 'a' && allProps.role == null\n ? isSelected\n : undefined);\n\n return (\n <ButtonElement\n download={download}\n aria-busy={isLoading || undefined}\n // The tooltip joins the button's own description rather than\n // replacing it while open.\n {...mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n )}\n {...(isOnlyLoading && !hasOwnTooltip ? { tabIndex: -1 } : null)}\n aria-pressed={ariaPressed}\n ref={handleRef}\n mods={{ ...actionProps.mods, ...modifiers }}\n disabled={isNativelyDisabled}\n variant={`${theme}.${effectiveType ?? 'outline'}` as ButtonVariant}\n data-theme={theme}\n data-type={effectiveType ?? 'outline'}\n data-size={size}\n data-shape={shape === 'button' ? undefined : shape}\n data-popover-dismiss=\"\"\n styles={styles}\n tokens={{\n ...tokens,\n ...(sizeTokenValue ? { $size: sizeTokenValue } : {}),\n }}\n >\n <DisplayTransition\n isShown={hasLeftIcon}\n animateOnMount={!isFirstRender}\n onToggle={setIsIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"Icon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {isLoading ? <LoadingIcon /> : icon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n {hasChildren &&\n (rawChildren ? (\n children\n ) : (\n <div data-element=\"Label\" {...finalLabelProps} ref={labelRef}>\n {children}\n </div>\n ))}\n <DisplayTransition\n isShown={hasRightSlot}\n animateOnMount={!isFirstRender}\n onToggle={setIsRightIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"RightIcon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {rightIcon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n </ButtonElement>\n );\n };\n\n return renderWithTooltip(renderButtonElement, defaultTooltipPlacement);\n});\n"],"mappings":"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"}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
1
|
|
|
2
2
|
import { ButtonMods, ButtonVariant, CubeButtonProps, DEFAULT_BUTTON_STYLES } from "./Button.js";
|
|
3
|
-
|
|
3
|
+
import { CubeSpaceProps } from "../../layout/Space.js";
|
|
4
|
+
import { ButtonGroup } from "../ButtonGroup/ButtonGroup.js";
|
|
5
|
+
import { ButtonSplit, CubeButtonSplitProps } from "../ButtonSplit/ButtonSplit.js";
|
|
6
|
+
import "../index.js";
|
|
7
|
+
import "../../../index.js";
|
|
8
|
+
//#region src/components/actions/Button/index.d.ts
|
|
9
|
+
declare const Button: import("react").ForwardRefExoticComponent<CubeButtonProps & import("react").RefAttributes<import("@react-types/shared").FocusableRefValue<HTMLElement, HTMLElement>>> & {
|
|
10
|
+
Group: typeof ButtonGroup;
|
|
11
|
+
Split: typeof ButtonSplit;
|
|
12
|
+
} & {
|
|
13
|
+
Group: import("react").ForwardRefExoticComponent<CubeSpaceProps & import("react").RefAttributes<unknown>>;
|
|
14
|
+
Split: import("react").ForwardRefExoticComponent<CubeButtonSplitProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { Button, ButtonGroup, ButtonMods, ButtonVariant, CubeButtonProps, DEFAULT_BUTTON_STYLES };
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
|
+
import { Button as Button$1, DEFAULT_BUTTON_STYLES } from "./Button.js";
|
|
3
|
+
import { ButtonGroup } from "../ButtonGroup/ButtonGroup.js";
|
|
4
|
+
import { ButtonSplit } from "../ButtonSplit/ButtonSplit.js";
|
|
5
|
+
//#region src/components/actions/Button/index.ts
|
|
6
|
+
const Button = Object.assign(Button$1, {
|
|
7
|
+
Group: ButtonGroup,
|
|
8
|
+
Split: ButtonSplit
|
|
9
|
+
});
|
|
10
|
+
//#endregion
|
|
11
|
+
export { Button, ButtonGroup, DEFAULT_BUTTON_STYLES };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["ButtonGroup","ButtonSplit","Button","__Button","Object","assign","Group","Split","__Button"],"sources":["../../../../src/components/actions/Button/index.ts"],"sourcesContent":["import { ButtonGroup } from '../ButtonGroup/ButtonGroup';\nimport { ButtonSplit } from '../ButtonSplit/ButtonSplit';\n\nimport { Button as __Button } from './Button';\n\n// The compound lives in the entry, not in `Button.tsx`: `ButtonSplit` renders\n// the base `Button`, so assembling it there would be an import cycle.\nconst Button = Object.assign(\n __Button as typeof __Button & {\n Group: typeof ButtonGroup;\n Split: typeof ButtonSplit;\n },\n { Group: ButtonGroup, Split: ButtonSplit },\n);\n\nexport * from './Button';\nexport { Button, ButtonGroup };\n"],"mappings":";;;;;AAOA,MAAME,SAASE,OAAOC,OACpBF,UAIA;CAAEG,OAAON;CAAaO,OAAON;AAAY,CAC3C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { useSlotProps } from "../../../utils/react/Slots.js";
|
|
3
3
|
import { Space } from "../../layout/Space.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonGroup.js","names":["tasty","forwardRef","useSlotProps","CubeSpaceProps","Space","ButtonGroupElement","qa","styles","gridArea","ButtonGroup","props","ref","$","_c","t0","t1","_c"],"sources":["../../../../src/components/actions/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useSlotProps } from '../../../utils/react';\nimport { CubeSpaceProps, Space } from '../../layout/Space';\n\nconst ButtonGroupElement = tasty(Space, {\n qa: 'ButtonGroup',\n styles: {\n gridArea: 'buttonGroup',\n },\n});\n\nexport const ButtonGroup = forwardRef(function ButtonGroup(\n props: CubeSpaceProps,\n ref,\n) {\n return (\n <ButtonGroupElement ref={ref} {...useSlotProps(props, 'buttonGroup')} />\n );\n});\n"],"mappings":";;;;;;;;AAMA,MAAMK,qBAAqBL,MAAMI,OAAO;CACtCE,IAAI;CACJC,QAAQ,EACNC,UAAU,cACZ;AACF,CAAC;AAED,MAAaC,cAAcR,WAAW,SAAAQ,YAAAC,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAKA,MAAAC,KAAAZ,aAAaQ,OAAO,aAAa;CAAC,IAAAK;CAAA,IAAAH,EAAA,OAAAD,OAAAC,EAAA,OAAAE,IAAA;EAApEC,KAAA,oBAAC,oBAAD;GAAyBJ;GAAG,GAAMG;EAAkC,CAAA;EAAIF,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAAxEG;AAAwE,CAE3E"}
|
|
1
|
+
{"version":3,"file":"ButtonGroup.js","names":["tasty","forwardRef","useSlotProps","CubeSpaceProps","Space","ButtonGroupElement","qa","styles","gridArea","ButtonGroup","props","ref","$","_c","t0","t1","_c"],"sources":["../../../../src/components/actions/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useSlotProps } from '../../../utils/react/Slots';\nimport { CubeSpaceProps, Space } from '../../layout/Space';\n\nconst ButtonGroupElement = tasty(Space, {\n qa: 'ButtonGroup',\n styles: {\n gridArea: 'buttonGroup',\n },\n});\n\nexport const ButtonGroup = forwardRef(function ButtonGroup(\n props: CubeSpaceProps,\n ref,\n) {\n return (\n <ButtonGroupElement ref={ref} {...useSlotProps(props, 'buttonGroup')} />\n );\n});\n"],"mappings":";;;;;;;;AAMA,MAAMK,qBAAqBL,MAAMI,OAAO;CACtCE,IAAI;CACJC,QAAQ,EACNC,UAAU,cACZ;AACF,CAAC;AAED,MAAaC,cAAcR,WAAW,SAAAQ,YAAAC,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAKA,MAAAC,KAAAZ,aAAaQ,OAAO,aAAa;CAAC,IAAAK;CAAA,IAAAH,EAAA,OAAAD,OAAAC,EAAA,OAAAE,IAAA;EAApEC,KAAA,oBAAC,oBAAD;GAAyBJ;GAAG,GAAMG;EAAkC,CAAA;EAAIF,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAAxEG;AAAwE,CAE3E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles, mergeStyleLayers } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonSplit.js","names":["CONTAINER_STYLES","filterBaseProps","tasty","forwardRef","ReactNode","useMemo","useState","useI18n","DirectionIcon","mergeProps","extractStyles","mergeStyleLayers","Button","Menu","ButtonSplitContext","BaseProps","ContainerStyleProps","Styles","CubeCollectionItemProps","CubeButtonProps","CubeMenuProps","ButtonSplitAction","Omit","key","label","CubeButtonSplitProps","actions","actionKey","defaultActionKey","onAction","onActionChange","type","theme","size","isDisabled","actionProps","Partial","triggerProps","menuProps","styles","children","STYLE_PROPS","ButtonSplitElement","as","qa","display","position","verticalAlign","ButtonSplit","HTMLDivElement","props","ref","$","_c","controlledActionKey","role","rest","t","isControlled","undefined","t0","uncontrolledKey","setUncontrolledKey","currentKey","t1","find","a","currentAction","t2","handleActionPress","t3","keys","newKey","handleSelectionChange","containerStyles","mergedStyles","t4","contextValue","isCustomMode","t5","T0","t6","eventProps","t7","t8","icon","tooltip","onPress","_temp","map","_temp2","t9","t10","Provider","displayName","pressed","textValue","itemProps","_c","Menu"],"sources":["../../../../src/components/actions/ButtonSplit/ButtonSplit.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps, tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode, useMemo, useState } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\nimport { Button } from '../Button/Button';\nimport { Menu } from '../Menu/Menu';\n\nimport { ButtonSplitContext } from './context';\n\nimport type { BaseProps, ContainerStyleProps, Styles } from '@tenphi/tasty';\nimport type { CubeCollectionItemProps } from '../../CollectionItem';\nimport type { CubeButtonProps } from '../Button/Button';\nimport type { CubeMenuProps } from '../Menu/Menu';\n\nexport interface ButtonSplitAction extends Omit<\n CubeCollectionItemProps<object>,\n 'children' | 'onAction' | 'wrapper'\n> {\n key: string;\n label: ReactNode;\n}\n\nexport interface CubeButtonSplitProps extends BaseProps, ContainerStyleProps {\n /** Actions for strict mode. When provided, renders action + trigger buttons automatically. */\n actions?: ButtonSplitAction[];\n /** Currently selected action key (controlled). */\n actionKey?: string;\n /** Initially selected action key (uncontrolled). */\n defaultActionKey?: string;\n /** Called when the action button is pressed. Receives the current action key. */\n onAction?: (key: string) => void;\n /** Called when the selected action changes via the trigger menu. */\n onActionChange?: (key: string) => void;\n\n /**\n * Default type for every Button in the split: both buttons in strict mode,\n * the child Buttons in custom mode. A Button's own `type` wins. Buttons in a\n * popover, dialog or menu opened from the split do not inherit it, nor\n * `theme`, `size` or `isDisabled`.\n */\n type?: CubeButtonProps['type'];\n /** Default theme for every Button in the split. A Button's own `theme` wins. */\n theme?: CubeButtonProps['theme'];\n /** Default size for every Button in the split. A Button's own `size` wins. */\n size?: CubeButtonProps['size'];\n /** Disables every Button in the split, even one passing `isDisabled={false}`. */\n isDisabled?: boolean;\n\n /** Additional props for the action button in strict mode. */\n actionProps?: Partial<CubeButtonProps>;\n /** Additional props for the trigger button in strict mode. */\n triggerProps?: Partial<CubeButtonProps>;\n /** Additional props for the dropdown menu in strict mode. */\n menuProps?: Partial<CubeMenuProps<object>>;\n\n /** Custom styles for the wrapper element. */\n styles?: Styles;\n\n /** Custom mode: render arbitrary Button children. */\n children?: ReactNode;\n}\n\nconst STYLE_PROPS = CONTAINER_STYLES;\n\nconst ButtonSplitElement = tasty({\n as: 'div',\n qa: 'ButtonSplit',\n styles: {\n display: 'inline-flex',\n position: 'relative',\n verticalAlign: 'bottom',\n },\n});\n\nexport const ButtonSplit = forwardRef<HTMLDivElement, CubeButtonSplitProps>(\n function ButtonSplit(props, ref) {\n const {\n actions,\n actionKey: controlledActionKey,\n defaultActionKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n actionProps,\n triggerProps,\n menuProps,\n styles,\n children,\n role,\n ...rest\n } = props;\n\n const { t } = useI18n();\n const isControlled = controlledActionKey !== undefined;\n const [uncontrolledKey, setUncontrolledKey] = useState(\n () => defaultActionKey ?? actions?.[0]?.key,\n );\n\n const currentKey = isControlled ? controlledActionKey : uncontrolledKey;\n\n const currentAction =\n actions?.find((a) => a.key === currentKey) ?? actions?.[0];\n\n const handleActionPress = () => {\n if (currentKey) {\n onAction?.(currentKey);\n }\n };\n\n const handleSelectionChange = (keys: string[]) => {\n const newKey = keys[0];\n\n if (newKey) {\n if (!isControlled) {\n setUncontrolledKey(newKey);\n }\n\n onActionChange?.(newKey);\n }\n };\n\n const containerStyles = extractStyles(rest, STYLE_PROPS);\n\n const mergedStyles = mergeStyleLayers(containerStyles, styles);\n\n const contextValue = useMemo(\n () => ({\n currentKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n }),\n [currentKey, onAction, onActionChange, type, theme, size, isDisabled],\n );\n\n const isCustomMode = children != null;\n\n return (\n <ButtonSplitContext.Provider value={contextValue}>\n <ButtonSplitElement\n {...filterBaseProps(rest, { eventProps: true })}\n ref={ref}\n data-button-split\n styles={mergedStyles}\n qa={rest.qa}\n // Custom mode renders peer buttons with no visible group label, which\n // is exactly when a caller needs `aria-label` to land on something the\n // AT will announce. `role` comes from `BaseProps`, so a caller that\n // wants something else — including `presentation` to opt out — just\n // passes it. Strict mode keeps its previous shape.\n role={role ?? (isCustomMode ? 'group' : undefined)}\n >\n {isCustomMode ? (\n children\n ) : actions ? (\n <>\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n icon={currentAction?.icon}\n tooltip={currentAction?.tooltip}\n {...mergeProps(actionProps, { onPress: handleActionPress })}\n >\n {currentAction?.label}\n </Button>\n <Menu.Trigger placement=\"bottom end\">\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n aria-label={t('buttonSplit.moreOptions', 'More options')}\n icon={({ pressed }) => (\n <DirectionIcon to={pressed ? 'up' : 'down'} />\n )}\n {...triggerProps}\n />\n <Menu\n selectionMode=\"single\"\n selectedKeys={currentKey ? [currentKey] : []}\n onSelectionChange={handleSelectionChange}\n {...menuProps}\n >\n {actions.map(({ key, label, textValue, ...itemProps }) => (\n <Menu.Item\n key={key}\n textValue={\n textValue ?? (typeof label === 'string' ? label : key)\n }\n {...itemProps}\n >\n {label}\n </Menu.Item>\n ))}\n </Menu>\n </Menu.Trigger>\n </>\n ) : null}\n </ButtonSplitElement>\n </ButtonSplitContext.Provider>\n );\n },\n);\n\nButtonSplit.displayName = 'ButtonSplit';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ButtonSplit.js","names":["CONTAINER_STYLES","filterBaseProps","tasty","forwardRef","ReactNode","useMemo","useState","useI18n","DirectionIcon","mergeProps","extractStyles","mergeStyleLayers","Button","Menu","ButtonSplitContext","BaseProps","ContainerStyleProps","Styles","CubeCollectionItemProps","CubeButtonProps","CubeMenuProps","ButtonSplitAction","Omit","key","label","CubeButtonSplitProps","actions","actionKey","defaultActionKey","onAction","onActionChange","type","theme","size","isDisabled","actionProps","Partial","triggerProps","menuProps","styles","children","STYLE_PROPS","ButtonSplitElement","as","qa","display","position","verticalAlign","ButtonSplit","HTMLDivElement","props","ref","$","_c","controlledActionKey","role","rest","t","isControlled","undefined","t0","uncontrolledKey","setUncontrolledKey","currentKey","t1","find","a","currentAction","t2","handleActionPress","t3","keys","newKey","handleSelectionChange","containerStyles","mergedStyles","t4","contextValue","isCustomMode","t5","T0","t6","eventProps","t7","t8","icon","tooltip","onPress","_temp","map","_temp2","t9","t10","Provider","displayName","pressed","textValue","itemProps","_c","Menu"],"sources":["../../../../src/components/actions/ButtonSplit/ButtonSplit.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps, tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode, useMemo, useState } from 'react';\n\nimport { useI18n } from '../../../i18n/useI18n';\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\nimport { Button } from '../Button/Button';\nimport { Menu } from '../Menu/Menu';\n\nimport { ButtonSplitContext } from './context';\n\nimport type { BaseProps, ContainerStyleProps, Styles } from '@tenphi/tasty';\nimport type { CubeCollectionItemProps } from '../../CollectionItem';\nimport type { CubeButtonProps } from '../Button/Button';\nimport type { CubeMenuProps } from '../Menu/Menu';\n\nexport interface ButtonSplitAction extends Omit<\n CubeCollectionItemProps<object>,\n 'children' | 'onAction' | 'wrapper'\n> {\n key: string;\n label: ReactNode;\n}\n\nexport interface CubeButtonSplitProps extends BaseProps, ContainerStyleProps {\n /** Actions for strict mode. When provided, renders action + trigger buttons automatically. */\n actions?: ButtonSplitAction[];\n /** Currently selected action key (controlled). */\n actionKey?: string;\n /** Initially selected action key (uncontrolled). */\n defaultActionKey?: string;\n /** Called when the action button is pressed. Receives the current action key. */\n onAction?: (key: string) => void;\n /** Called when the selected action changes via the trigger menu. */\n onActionChange?: (key: string) => void;\n\n /**\n * Default type for every Button in the split: both buttons in strict mode,\n * the child Buttons in custom mode. A Button's own `type` wins. Buttons in a\n * popover, dialog or menu opened from the split do not inherit it, nor\n * `theme`, `size` or `isDisabled`.\n */\n type?: CubeButtonProps['type'];\n /** Default theme for every Button in the split. A Button's own `theme` wins. */\n theme?: CubeButtonProps['theme'];\n /** Default size for every Button in the split. A Button's own `size` wins. */\n size?: CubeButtonProps['size'];\n /** Disables every Button in the split, even one passing `isDisabled={false}`. */\n isDisabled?: boolean;\n\n /** Additional props for the action button in strict mode. */\n actionProps?: Partial<CubeButtonProps>;\n /** Additional props for the trigger button in strict mode. */\n triggerProps?: Partial<CubeButtonProps>;\n /** Additional props for the dropdown menu in strict mode. */\n menuProps?: Partial<CubeMenuProps<object>>;\n\n /** Custom styles for the wrapper element. */\n styles?: Styles;\n\n /** Custom mode: render arbitrary Button children. */\n children?: ReactNode;\n}\n\nconst STYLE_PROPS = CONTAINER_STYLES;\n\nconst ButtonSplitElement = tasty({\n as: 'div',\n qa: 'ButtonSplit',\n styles: {\n display: 'inline-flex',\n position: 'relative',\n verticalAlign: 'bottom',\n },\n});\n\nexport const ButtonSplit = forwardRef<HTMLDivElement, CubeButtonSplitProps>(\n function ButtonSplit(props, ref) {\n const {\n actions,\n actionKey: controlledActionKey,\n defaultActionKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n actionProps,\n triggerProps,\n menuProps,\n styles,\n children,\n role,\n ...rest\n } = props;\n\n const { t } = useI18n();\n const isControlled = controlledActionKey !== undefined;\n const [uncontrolledKey, setUncontrolledKey] = useState(\n () => defaultActionKey ?? actions?.[0]?.key,\n );\n\n const currentKey = isControlled ? controlledActionKey : uncontrolledKey;\n\n const currentAction =\n actions?.find((a) => a.key === currentKey) ?? actions?.[0];\n\n const handleActionPress = () => {\n if (currentKey) {\n onAction?.(currentKey);\n }\n };\n\n const handleSelectionChange = (keys: string[]) => {\n const newKey = keys[0];\n\n if (newKey) {\n if (!isControlled) {\n setUncontrolledKey(newKey);\n }\n\n onActionChange?.(newKey);\n }\n };\n\n const containerStyles = extractStyles(rest, STYLE_PROPS);\n\n const mergedStyles = mergeStyleLayers(containerStyles, styles);\n\n const contextValue = useMemo(\n () => ({\n currentKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n }),\n [currentKey, onAction, onActionChange, type, theme, size, isDisabled],\n );\n\n const isCustomMode = children != null;\n\n return (\n <ButtonSplitContext.Provider value={contextValue}>\n <ButtonSplitElement\n {...filterBaseProps(rest, { eventProps: true })}\n ref={ref}\n data-button-split\n styles={mergedStyles}\n qa={rest.qa}\n // Custom mode renders peer buttons with no visible group label, which\n // is exactly when a caller needs `aria-label` to land on something the\n // AT will announce. `role` comes from `BaseProps`, so a caller that\n // wants something else — including `presentation` to opt out — just\n // passes it. Strict mode keeps its previous shape.\n role={role ?? (isCustomMode ? 'group' : undefined)}\n >\n {isCustomMode ? (\n children\n ) : actions ? (\n <>\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n icon={currentAction?.icon}\n tooltip={currentAction?.tooltip}\n {...mergeProps(actionProps, { onPress: handleActionPress })}\n >\n {currentAction?.label}\n </Button>\n <Menu.Trigger placement=\"bottom end\">\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n aria-label={t('buttonSplit.moreOptions', 'More options')}\n icon={({ pressed }) => (\n <DirectionIcon to={pressed ? 'up' : 'down'} />\n )}\n {...triggerProps}\n />\n <Menu\n selectionMode=\"single\"\n selectedKeys={currentKey ? [currentKey] : []}\n onSelectionChange={handleSelectionChange}\n {...menuProps}\n >\n {actions.map(({ key, label, textValue, ...itemProps }) => (\n <Menu.Item\n key={key}\n textValue={\n textValue ?? (typeof label === 'string' ? label : key)\n }\n {...itemProps}\n >\n {label}\n </Menu.Item>\n ))}\n </Menu>\n </Menu.Trigger>\n </>\n ) : null}\n </ButtonSplitElement>\n </ButtonSplitContext.Provider>\n );\n },\n);\n\nButtonSplit.displayName = 'ButtonSplit';\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { createContext, useContext } from "react";
|
|
3
3
|
//#region src/components/actions/ButtonSplit/context.ts
|
|
4
4
|
const ButtonSplitContext = createContext(null);
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { ItemAction } from "../ItemAction/ItemAction.js";
|
|
3
3
|
import { CubeMenuItemProps } from "../Menu/MenuCollectionItem.js";
|
|
4
4
|
import { CubeMenuProps } from "../Menu/Menu.js";
|
|
5
|
-
import { ItemBadge } from "../../content/ItemBadge/ItemBadge.js";
|
|
6
5
|
import "../index.js";
|
|
6
|
+
import { ItemBadge } from "../../content/ItemBadge/ItemBadge.js";
|
|
7
7
|
import { CubeCollectionItemProps } from "../../CollectionItem.js";
|
|
8
8
|
import "../../../index.js";
|
|
9
9
|
import { BasePropsWithoutChildren, ContainerStyleProps, Styles } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles, mergeStyleLayers } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { LoadingIcon } from "../../../icons/LoadingIcon.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandMenu.js","names":["useObjectRef","useSyncRef","CollectionChildren","FocusStrategy","Key","BasePropsWithoutChildren","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","React","KeyboardEvent","ReactElement","ReactNode","Ref","useId","useRef","useState","useFilter","useMenu","Section","useTreeState","useI18n","LoadingIcon","mergeProps","extractStyles","mergeStyleLayers","useMenuContext","CubeMenuProps","getMenuItemReactKey","MenuCollectionItem","Item","MenuItem","MenuSection","MenuTrigger","StyledDivider","StyledFooter","StyledHeader","StyledMenu","StyledCommandMenu","StyledEmptyState","StyledLoadingWrapper","StyledSearchInput","collectItemKeys","nodes","Iterable","keys","node","type","childNodes","push","key","getNextEnabledKey","currentKey","direction","isDisabled","isEnabled","index","indexOf","ahead","slice","Math","max","reverse","ordered","find","CommandMenuItem","id","textValue","keywords","forceMount","CubeCommandMenuProps","Omit","T","searchPlaceholder","searchValue","onSearchChange","value","filter","inputValue","emptyLabel","searchInputStyles","headerStyles","footerStyles","isLoading","shouldFilter","autoFocus","size","selectedKeys","defaultSelectedKeys","onSelectionChange","CommandMenu","props","ref","$","_c","t","t0","controlledSearchValue","customFilter","t1","t2","t3","t4","t5","qa","styles","onAction","header","footer","restMenuProps","t6","undefined","t7","domRef","searchInputRef","instanceId","menuId","contextProps","ariaSelectedKeys","Set","ariaDefaultSelectedKeys","handleSelectionChange","allKeys","Array","from","treeState","collection","getKeys","map","_temp","_temp2","t8","key_1","completeProps","internalSearchValue","setInternalSearchValue","t9","handleSearchChange","t10","Symbol","for","sensitivity","contains","t11","item","searchWords","trim","toLowerCase","split","_temp3","length","searchableTexts","isArray","_temp4","every","searchWord","some","text","includes","enhancedFilter","t12","term","searchWords_0","_temp5","filterNodes","iter","result","filteredChildren","text_0","String","rendered","collectionFilter","treeStateProps","children","shouldUseVirtualFocus","itemId","key_2","item_0","getItem","actions","href","encodeURIComponent","collectionItems","_temp6","focusedKey","selectionManager","filteredCollectionItems","hasFilteredItems","viewHasSections","_temp7","findFirstSelectableItem","key_3","menuRef","menuProps","renderedItems","isFirstSection","forEach","item_3","reactKey","sectionStyles","itemStyles","sectionHeadingStyles","menuItem","wrapper","cloneElement","t13","t14","current","timeoutId","setTimeout","focus","clearTimeout","useEffect","t15","t16","timeoutId_0","prevSearchValueRef","currentSearchValue","prevSearchValue","firstSelectableKey","setFocusedKey","handleArrowKey","e","preventDefault","nextKey","key_4","handleActionKey","e_0","stopPropagation","repeat","item_4","ownerDocument","getElementById","shouldActivate","dispatchEvent","window","code","ctrlKey","metaKey","altKey","shiftKey","bubbles","cancelable","MouseEvent","detail","handleSearchKeyDown","e_1","nativeEvent","isComposing","extractedStyles","t17","hasSearchTerm","showEmptyState","activeDescendant","t18","t19","t20","mods","popover","t21","tray","t22","sections","t23","t24","Record","wrapperProps","_ariaLabel","_ariaLabelledBy","_ariaDescribedBy","_ariaDetails","t25","T0","t26","t27","border","t28","t29","t30","t31","t32","t33","t34","e_2","target","t35","t36","t37","boxShadow","radius","padding","t38","t39","t40","item_2","item_1","word_0","word","keyword","key_0","_CommandMenu","forwardRef","RefAttributes","HTMLDivElement","__CommandMenu","Object","assign","Trigger","displayName","_c","mergeProps","MenuTrigger"],"sources":["../../../../src/components/actions/CommandMenu/CommandMenu.tsx"],"sourcesContent":["import { useObjectRef, useSyncRef } from '@react-aria/utils';\nimport { CollectionChildren, FocusStrategy, Key } from '@react-types/shared';\nimport {\n BasePropsWithoutChildren,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n} from '@tenphi/tasty';\nimport React, {\n KeyboardEvent,\n ReactElement,\n ReactNode,\n Ref,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { useFilter, useMenu } from 'react-aria';\nimport { Section, useTreeState } from 'react-stately';\n\nimport { useI18n } from '../../../i18n';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\nimport { useMenuContext } from '../Menu/context';\nimport { CubeMenuProps } from '../Menu/Menu';\nimport {\n getMenuItemReactKey,\n MenuCollectionItem as Item,\n} from '../Menu/MenuCollectionItem';\nimport { MenuItem } from '../Menu/MenuItem';\nimport { MenuSection } from '../Menu/MenuSection';\nimport { MenuTrigger } from '../Menu/MenuTrigger';\nimport {\n StyledDivider,\n StyledFooter,\n StyledHeader,\n StyledMenu,\n} from '../Menu/styled';\n\nimport {\n StyledCommandMenu,\n StyledEmptyState,\n StyledLoadingWrapper,\n StyledSearchInput,\n} from './styled';\n\n/** The keys of the items in `nodes`, in order, including those in sections. */\nfunction collectItemKeys(nodes: Iterable<any>, keys: Key[] = []): Key[] {\n for (const node of nodes) {\n if (node?.type === 'section') {\n collectItemKeys(node.childNodes ?? [], keys);\n } else if (node?.type === 'item') {\n keys.push(node.key);\n }\n }\n\n return keys;\n}\n\n/**\n * The key an arrow press moves to: the next enabled key after `currentKey` in\n * `direction`, wrapping round to the first enabled key in that direction (the\n * last one going up). With nothing focused, or the focused key filtered out,\n * it returns that key.\n */\nfunction getNextEnabledKey(\n keys: Key[],\n currentKey: Key | null,\n direction: 1 | -1,\n isDisabled: (key: Key) => boolean,\n): Key | null {\n const isEnabled = (key: Key) => !isDisabled(key);\n const index = currentKey == null ? -1 : keys.indexOf(currentKey);\n const ahead =\n direction === 1\n ? keys.slice(index + 1)\n : keys.slice(0, Math.max(index, 0)).reverse();\n const ordered = direction === 1 ? keys : [...keys].reverse();\n\n return ahead.find(isEnabled) ?? ordered.find(isEnabled) ?? null;\n}\n\nexport interface CommandMenuItem {\n // Standard item props\n id: string;\n textValue: string;\n\n // Enhanced search features\n keywords?: string[];\n forceMount?: boolean;\n\n // Standard Menu item props inherited\n [key: string]: any;\n}\n\nexport interface CubeCommandMenuProps<T>\n extends\n BasePropsWithoutChildren,\n ContainerStyleProps,\n Omit<\n CubeMenuProps<T>,\n 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'\n > {\n // Search-specific props\n searchPlaceholder?: string;\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n filter?: (textValue: string, inputValue: string) => boolean;\n emptyLabel?: ReactNode;\n searchInputStyles?: Styles;\n headerStyles?: Styles;\n footerStyles?: Styles;\n\n // Advanced search features\n isLoading?: boolean;\n shouldFilter?: boolean;\n\n // Focus management - override the autoFocus from CubeMenuProps to allow boolean | FocusStrategy\n autoFocus?: boolean | FocusStrategy;\n\n // Size prop\n size?: 'medium' | 'large' | (string & {});\n\n /** Currently selected keys (controlled) */\n selectedKeys?: string[];\n /** Initially selected keys (uncontrolled) */\n defaultSelectedKeys?: string[];\n /** Handler for selection changes */\n onSelectionChange?: (keys: string[]) => void;\n}\n\nfunction CommandMenu<T extends object>(\n props: CubeCommandMenuProps<T>,\n ref: Ref<HTMLDivElement>,\n) {\n const { t } = useI18n();\n\n const {\n searchPlaceholder = t(\n 'commandMenu.searchPlaceholder',\n 'Search commands...',\n ),\n searchValue: controlledSearchValue,\n onSearchChange,\n filter: customFilter,\n emptyLabel = t('commandMenu.empty', 'No commands found'),\n searchInputStyles,\n headerStyles,\n footerStyles,\n isLoading = false,\n shouldFilter = true,\n autoFocus = true,\n size = 'medium',\n qa,\n styles,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n onAction,\n header,\n footer,\n ...restMenuProps\n } = props;\n\n const domRef = useObjectRef(ref);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const instanceId = useId();\n const menuId = `${qa || 'CommandMenu'}-${instanceId}-menu`;\n const contextProps = useMenuContext();\n\n // Convert string[] to Set<Key> for React Aria compatibility\n const ariaSelectedKeys = selectedKeys ? new Set(selectedKeys) : undefined;\n const ariaDefaultSelectedKeys = defaultSelectedKeys\n ? new Set(defaultSelectedKeys)\n : undefined;\n\n const handleSelectionChange = onSelectionChange\n ? (keys: 'all' | Set<Key>) => {\n if (keys === 'all') {\n // Handle 'all' selection case - collect all available keys\n const allKeys = Array.from(treeState.collection.getKeys()).map(\n (key: any) => String(key),\n );\n onSelectionChange(allKeys);\n } else if (keys instanceof Set) {\n onSelectionChange(Array.from(keys).map((key) => String(key)));\n } else {\n onSelectionChange([]);\n }\n }\n : undefined;\n\n const completeProps = mergeProps(contextProps, restMenuProps, {\n onAction: onAction ? (key: Key) => onAction(key) : undefined,\n selectedKeys: ariaSelectedKeys,\n defaultSelectedKeys: ariaDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n });\n\n // Search state management\n const [internalSearchValue, setInternalSearchValue] = useState('');\n const searchValue = controlledSearchValue ?? internalSearchValue;\n\n const handleSearchChange = (value: string) => {\n if (controlledSearchValue === undefined) {\n setInternalSearchValue(value);\n }\n onSearchChange?.(value);\n };\n\n // Filter setup\n const { contains } = useFilter({ sensitivity: 'base' });\n const textFilterFn = customFilter || contains;\n\n // Enhanced filter function that supports keywords and forceMount\n const enhancedFilter = (\n textValue: string,\n inputValue: string,\n item?: any,\n ) => {\n // Always show force-mounted items\n if (item?.forceMount) {\n return true;\n }\n\n // If shouldFilter is false, show all items\n if (!shouldFilter) {\n return true;\n }\n\n // Split input value into individual words and filter out empty strings\n const searchWords = inputValue\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n // If no search words, show all items\n if (searchWords.length === 0) {\n return true;\n }\n\n // Collect all searchable text for this item\n const searchableTexts: string[] = [];\n\n // Add main text value\n searchableTexts.push(textValue.toLowerCase());\n\n // Add keywords if available\n if (item?.keywords && Array.isArray(item.keywords)) {\n searchableTexts.push(\n ...item.keywords.map((keyword: string) => keyword.toLowerCase()),\n );\n }\n\n // Check if ALL search words match at least one of the searchable texts\n return searchWords.every((searchWord) =>\n searchableTexts.some((text) => text.includes(searchWord)),\n );\n };\n\n // Collection filter for React Stately\n const collectionFilter = (nodes: Iterable<any>): Iterable<any> => {\n const term = searchValue.trim();\n\n // If no search term, return all nodes\n if (!term) {\n return nodes;\n }\n\n // Split search term into words for multi-word filtering\n const searchWords = term\n .toLowerCase()\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n // If no valid search words, return all nodes\n if (searchWords.length === 0) {\n return nodes;\n }\n\n // Recursive helper to filter sections and items\n const filterNodes = (iter: Iterable<any>): any[] => {\n const result: any[] = [];\n\n for (const node of iter) {\n if (node.type === 'section') {\n const filteredChildren = filterNodes(node.childNodes);\n\n if (filteredChildren.length) {\n result.push({\n ...node,\n childNodes: filteredChildren,\n });\n }\n } else {\n const text = node.textValue ?? String(node.rendered ?? '');\n\n if (enhancedFilter(text, term, node.props)) {\n result.push(node);\n }\n }\n }\n\n return result;\n };\n\n return filterNodes(nodes);\n };\n\n // Create tree state with filter for both keyboard navigation and rendering\n const treeStateProps = {\n ...completeProps,\n children: completeProps.children as CollectionChildren<T>,\n filter: collectionFilter,\n shouldUseVirtualFocus: true, // Always use virtual focus for CommandMenu\n };\n\n const treeState = useTreeState(treeStateProps);\n const itemId = (key: Key) => {\n const item = treeState.collection.getItem(key);\n const actions = item?.props.actions;\n // A plain command's layout and semantic target share the consumer's DOM id.\n if (\n item?.props.id != null &&\n item.props.href == null &&\n (!actions || actions === true)\n )\n return String(item.props.id);\n return `${menuId}-option-${typeof key}-${encodeURIComponent(String(key))}`;\n };\n\n const collectionItems = [...treeState.collection];\n const hasSections = collectionItems.some((item) => item.type === 'section');\n\n const focusedKey = treeState.selectionManager.focusedKey;\n\n // Apply filtering to collection items for rendering and empty state checks\n const filteredCollectionItems = [...collectionFilter(collectionItems)];\n\n const hasFilteredItems = filteredCollectionItems.length > 0;\n const viewHasSections = filteredCollectionItems.some(\n (item) => item.type === 'section',\n );\n\n // Helper function to find the first selectable item from filtered results\n const findFirstSelectableItem = () =>\n collectItemKeys(filteredCollectionItems).find(\n (key) => !treeState.selectionManager.isDisabled(key),\n ) ?? null;\n\n // Create a ref for the menu container\n const menuRef = useRef<HTMLUListElement>(null);\n\n // Use menu hook for accessibility\n const { menuProps } = useMenu(\n {\n ...completeProps,\n 'aria-label': t('commandMenu.menu', 'Command menu'),\n shouldUseVirtualFocus: true,\n },\n treeState,\n menuRef,\n );\n\n // Manual rendering of menu items (similar to Menu component)\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n filteredCollectionItems.forEach((item) => {\n const reactKey = getMenuItemReactKey(item.key);\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <StyledDivider\n key={`divider-${reactKey}`}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <MenuSection\n key={reactKey}\n item={item}\n state={treeState}\n styles={completeProps.sectionStyles}\n itemStyles={completeProps.itemStyles}\n headingStyles={completeProps.sectionHeadingStyles}\n size={size}\n itemId={itemId}\n />,\n );\n\n isFirstSection = false;\n return;\n }\n\n let menuItem = (\n <MenuItem\n key={reactKey}\n item={item}\n state={treeState}\n styles={completeProps.itemStyles}\n size={size}\n id={itemId(item.key)}\n />\n );\n\n // Apply custom wrapper if provided\n if (item.props.wrapper) {\n menuItem = item.props.wrapper(menuItem);\n }\n\n // Ensure every child has a stable key, even if the wrapper component didn't set one.\n renderedItems.push(React.cloneElement(menuItem, { key: reactKey }));\n });\n\n // Auto-focus search input\n React.useEffect(() => {\n if (autoFocus && searchInputRef.current) {\n // Use a small timeout to ensure the element is visible and focusable\n // This is especially important when the CommandMenu is opened in a popover\n const timeoutId = setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, 0);\n\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus]);\n\n // Also focus when the component becomes visible (for trigger/popover usage)\n React.useEffect(() => {\n // Check if autoFocus is enabled and we're in a trigger context\n if (autoFocus && contextProps.autoFocus && searchInputRef.current) {\n // Use a small timeout to ensure the popover is fully rendered\n const timeoutId = setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, 50); // Slightly longer timeout for popover context\n\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus, contextProps.autoFocus]);\n\n // Track the previous search value to only run auto-focus when search actually changes\n const prevSearchValueRef = useRef<string>('');\n\n // Auto-focus first item when search value changes (but not on initial render)\n React.useEffect(() => {\n const currentSearchValue = searchValue.trim();\n const prevSearchValue = prevSearchValueRef.current;\n\n // Only auto-focus when search value actually changes\n if (currentSearchValue !== prevSearchValue && currentSearchValue !== '') {\n const firstSelectableKey = findFirstSelectableItem();\n\n if (firstSelectableKey != null && hasFilteredItems) {\n // Focus the first item in the selection manager\n treeState.selectionManager.setFocusedKey(firstSelectableKey);\n } else {\n // Clear focus if no items are available\n treeState.selectionManager.setFocusedKey(null);\n }\n }\n\n // Update the previous search value\n prevSearchValueRef.current = currentSearchValue;\n }, [searchValue, findFirstSelectableItem, hasFilteredItems]);\n\n // ---- search input keyboard ----------------------------------------------\n const handleArrowKey = (e: KeyboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n\n const { selectionManager } = treeState;\n const currentKey = selectionManager.focusedKey;\n const nextKey = getNextEnabledKey(\n collectItemKeys(filteredCollectionItems),\n currentKey,\n e.key === 'ArrowDown' ? 1 : -1,\n (key) => selectionManager.isDisabled(key),\n );\n\n if (nextKey != null) {\n selectionManager.setFocusedKey(nextKey);\n }\n };\n\n // Use the rendered item's Aria handlers for commands, selection and navigation.\n const handleActionKey = (e: KeyboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (\n e.repeat ||\n focusedKey == null ||\n treeState.selectionManager.isDisabled(focusedKey)\n )\n return;\n const item = menuRef.current?.ownerDocument.getElementById(\n itemId(focusedKey),\n );\n if (!item || !menuRef.current?.contains(item)) return;\n const shouldActivate = item.dispatchEvent(\n new window.KeyboardEvent('keydown', {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n shiftKey: e.shiftKey,\n bubbles: true,\n cancelable: true,\n }),\n );\n // An anchor's Enter handler leaves its native default action to the browser.\n if (shouldActivate && e.key === 'Enter') {\n item.dispatchEvent(\n new window.MouseEvent('click', {\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n shiftKey: e.shiftKey,\n bubbles: true,\n cancelable: true,\n detail: 1,\n }),\n );\n }\n // The real keyup belongs to the search input, so balance the item's press here.\n item.dispatchEvent(\n new window.KeyboardEvent('keyup', {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n shiftKey: e.shiftKey,\n bubbles: true,\n cancelable: true,\n }),\n );\n };\n\n const handleSearchKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.nativeEvent.isComposing) return;\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n handleArrowKey(e);\n } else if (e.key === 'Enter' || (e.key === ' ' && !searchValue.trim())) {\n handleActionKey(e);\n } else if (e.key === 'Escape' && searchValue) {\n e.preventDefault();\n handleSearchChange('');\n }\n };\n\n // Extract styles\n const extractedStyles = extractStyles(props, CONTAINER_STYLES);\n\n // Determine if we should show empty state based on actual filtered collection\n const hasSearchTerm = searchValue.trim().length > 0;\n const showEmptyState = hasSearchTerm && !hasFilteredItems && !isLoading;\n const activeDescendant =\n !isLoading &&\n !showEmptyState &&\n focusedKey != null &&\n collectItemKeys(filteredCollectionItems).includes(focusedKey)\n ? itemId(focusedKey)\n : undefined;\n\n // Sync refs\n useSyncRef(contextProps, menuRef);\n\n // Determine mods based on menu context\n const mods = {\n sections: viewHasSections,\n footer: !!footer,\n header: !!header,\n popover: completeProps.mods?.popover,\n tray: completeProps.mods?.tray,\n };\n\n const {\n 'aria-label': _ariaLabel,\n 'aria-labelledby': _ariaLabelledBy,\n 'aria-describedby': _ariaDescribedBy,\n 'aria-details': _ariaDetails,\n ...wrapperProps\n } = filterBaseProps(props) as Record<string, unknown>;\n\n return (\n <StyledCommandMenu\n {...wrapperProps}\n ref={domRef}\n qa={qa || 'CommandMenu'}\n data-size={size}\n mods={mods}\n styles={mergeStyleLayers(extractedStyles, styles)}\n >\n {/* Header */}\n {header && (\n <StyledHeader\n role=\"presentation\"\n data-size={size}\n styles={mergeStyleLayers({ border: 'none' }, headerStyles)}\n >\n {header}\n </StyledHeader>\n )}\n\n {/* Search Input */}\n <StyledSearchInput\n ref={searchInputRef}\n type=\"search\"\n placeholder={searchPlaceholder}\n value={searchValue}\n styles={searchInputStyles}\n data-size={size}\n aria-label={completeProps['aria-label'] ?? searchPlaceholder}\n aria-labelledby={completeProps['aria-labelledby']}\n aria-describedby={completeProps['aria-describedby']}\n aria-details={completeProps['aria-details']}\n aria-controls={!isLoading && !showEmptyState ? menuId : undefined}\n role=\"searchbox\"\n aria-activedescendant={activeDescendant}\n // For a dialog kept mounted while closed, as on `Button`.\n {...(autoFocus ? { 'data-autofocus': '' } : undefined)}\n onChange={(e) => handleSearchChange(e.target.value)}\n onKeyDown={handleSearchKeyDown}\n />\n\n {/* Loading State */}\n {isLoading && (\n <StyledLoadingWrapper>\n <LoadingIcon\n role=\"progressbar\"\n aria-label={t('commandMenu.loading', 'Loading commands')}\n aria-hidden={false}\n />\n </StyledLoadingWrapper>\n )}\n\n {/* Menu Content - always render unless loading */}\n {!isLoading && !showEmptyState && (\n <StyledMenu\n {...menuProps}\n ref={menuRef}\n id={menuId}\n aria-label={t('commandMenu.menu', 'Command menu')}\n qa=\"Menu\"\n data-size={size}\n mods={mods}\n styles={{\n border: 'none',\n boxShadow: 'none',\n radius: 0,\n padding: '0.5x',\n }}\n >\n {renderedItems}\n </StyledMenu>\n )}\n\n {/* Empty State - show when search term exists but no results */}\n {!isLoading && showEmptyState && (\n <StyledEmptyState>{emptyLabel}</StyledEmptyState>\n )}\n\n {/* Footer */}\n {footer && (\n <StyledFooter\n role=\"presentation\"\n data-size={size}\n styles={footerStyles}\n >\n {footer}\n </StyledFooter>\n )}\n </StyledCommandMenu>\n );\n}\n\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\nconst _CommandMenu = React.forwardRef(CommandMenu) as <T>(\n props: CubeCommandMenuProps<T> & React.RefAttributes<HTMLDivElement>,\n) => ReactElement;\n\n// Attach Trigger alias from MenuTrigger for consistent API\n// Also attach Item and Section for compound component pattern\nconst __CommandMenu = Object.assign(_CommandMenu, {\n Trigger: MenuTrigger,\n Item,\n Section,\n displayName: 'CommandMenu',\n});\n\nexport { __CommandMenu as CommandMenu };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CommandMenu.js","names":["useObjectRef","useSyncRef","CollectionChildren","FocusStrategy","Key","BasePropsWithoutChildren","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","React","KeyboardEvent","ReactElement","ReactNode","Ref","useId","useRef","useState","useFilter","useMenu","Section","useTreeState","useI18n","LoadingIcon","mergeProps","extractStyles","mergeStyleLayers","useMenuContext","CubeMenuProps","getMenuItemReactKey","MenuCollectionItem","Item","MenuItem","MenuSection","MenuTrigger","StyledDivider","StyledFooter","StyledHeader","StyledMenu","StyledCommandMenu","StyledEmptyState","StyledLoadingWrapper","StyledSearchInput","collectItemKeys","nodes","Iterable","keys","node","type","childNodes","push","key","getNextEnabledKey","currentKey","direction","isDisabled","isEnabled","index","indexOf","ahead","slice","Math","max","reverse","ordered","find","CommandMenuItem","id","textValue","keywords","forceMount","CubeCommandMenuProps","Omit","T","searchPlaceholder","searchValue","onSearchChange","value","filter","inputValue","emptyLabel","searchInputStyles","headerStyles","footerStyles","isLoading","shouldFilter","autoFocus","size","selectedKeys","defaultSelectedKeys","onSelectionChange","CommandMenu","props","ref","$","_c","t","t0","controlledSearchValue","customFilter","t1","t2","t3","t4","t5","qa","styles","onAction","header","footer","restMenuProps","t6","undefined","t7","domRef","searchInputRef","instanceId","menuId","contextProps","ariaSelectedKeys","Set","ariaDefaultSelectedKeys","handleSelectionChange","allKeys","Array","from","treeState","collection","getKeys","map","_temp","_temp2","t8","key_1","completeProps","internalSearchValue","setInternalSearchValue","t9","handleSearchChange","t10","Symbol","for","sensitivity","contains","t11","item","searchWords","trim","toLowerCase","split","_temp3","length","searchableTexts","isArray","_temp4","every","searchWord","some","text","includes","enhancedFilter","t12","term","searchWords_0","_temp5","filterNodes","iter","result","filteredChildren","text_0","String","rendered","collectionFilter","treeStateProps","children","shouldUseVirtualFocus","itemId","key_2","item_0","getItem","actions","href","encodeURIComponent","collectionItems","_temp6","focusedKey","selectionManager","filteredCollectionItems","hasFilteredItems","viewHasSections","_temp7","findFirstSelectableItem","key_3","menuRef","menuProps","renderedItems","isFirstSection","forEach","item_3","reactKey","sectionStyles","itemStyles","sectionHeadingStyles","menuItem","wrapper","cloneElement","t13","t14","current","timeoutId","setTimeout","focus","clearTimeout","useEffect","t15","t16","timeoutId_0","prevSearchValueRef","currentSearchValue","prevSearchValue","firstSelectableKey","setFocusedKey","handleArrowKey","e","preventDefault","nextKey","key_4","handleActionKey","e_0","stopPropagation","repeat","item_4","ownerDocument","getElementById","shouldActivate","dispatchEvent","window","code","ctrlKey","metaKey","altKey","shiftKey","bubbles","cancelable","MouseEvent","detail","handleSearchKeyDown","e_1","nativeEvent","isComposing","extractedStyles","t17","hasSearchTerm","showEmptyState","activeDescendant","t18","t19","t20","mods","popover","t21","tray","t22","sections","t23","t24","Record","wrapperProps","_ariaLabel","_ariaLabelledBy","_ariaDescribedBy","_ariaDetails","t25","T0","t26","t27","border","t28","t29","t30","t31","t32","t33","t34","e_2","target","t35","t36","t37","boxShadow","radius","padding","t38","t39","t40","item_2","item_1","word_0","word","keyword","key_0","_CommandMenu","forwardRef","RefAttributes","HTMLDivElement","__CommandMenu","Object","assign","Trigger","displayName","_c","mergeProps","MenuTrigger"],"sources":["../../../../src/components/actions/CommandMenu/CommandMenu.tsx"],"sourcesContent":["import { useObjectRef, useSyncRef } from '@react-aria/utils';\nimport { CollectionChildren, FocusStrategy, Key } from '@react-types/shared';\nimport {\n BasePropsWithoutChildren,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n} from '@tenphi/tasty';\nimport React, {\n KeyboardEvent,\n ReactElement,\n ReactNode,\n Ref,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { useFilter, useMenu } from 'react-aria';\nimport { Section, useTreeState } from 'react-stately';\n\nimport { useI18n } from '../../../i18n/useI18n';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\nimport { useMenuContext } from '../Menu/context';\nimport { CubeMenuProps } from '../Menu/Menu';\nimport {\n getMenuItemReactKey,\n MenuCollectionItem as Item,\n} from '../Menu/MenuCollectionItem';\nimport { MenuItem } from '../Menu/MenuItem';\nimport { MenuSection } from '../Menu/MenuSection';\nimport { MenuTrigger } from '../Menu/MenuTrigger';\nimport {\n StyledDivider,\n StyledFooter,\n StyledHeader,\n StyledMenu,\n} from '../Menu/styled';\n\nimport {\n StyledCommandMenu,\n StyledEmptyState,\n StyledLoadingWrapper,\n StyledSearchInput,\n} from './styled';\n\n/** The keys of the items in `nodes`, in order, including those in sections. */\nfunction collectItemKeys(nodes: Iterable<any>, keys: Key[] = []): Key[] {\n for (const node of nodes) {\n if (node?.type === 'section') {\n collectItemKeys(node.childNodes ?? [], keys);\n } else if (node?.type === 'item') {\n keys.push(node.key);\n }\n }\n\n return keys;\n}\n\n/**\n * The key an arrow press moves to: the next enabled key after `currentKey` in\n * `direction`, wrapping round to the first enabled key in that direction (the\n * last one going up). With nothing focused, or the focused key filtered out,\n * it returns that key.\n */\nfunction getNextEnabledKey(\n keys: Key[],\n currentKey: Key | null,\n direction: 1 | -1,\n isDisabled: (key: Key) => boolean,\n): Key | null {\n const isEnabled = (key: Key) => !isDisabled(key);\n const index = currentKey == null ? -1 : keys.indexOf(currentKey);\n const ahead =\n direction === 1\n ? keys.slice(index + 1)\n : keys.slice(0, Math.max(index, 0)).reverse();\n const ordered = direction === 1 ? keys : [...keys].reverse();\n\n return ahead.find(isEnabled) ?? ordered.find(isEnabled) ?? null;\n}\n\nexport interface CommandMenuItem {\n // Standard item props\n id: string;\n textValue: string;\n\n // Enhanced search features\n keywords?: string[];\n forceMount?: boolean;\n\n // Standard Menu item props inherited\n [key: string]: any;\n}\n\nexport interface CubeCommandMenuProps<T>\n extends\n BasePropsWithoutChildren,\n ContainerStyleProps,\n Omit<\n CubeMenuProps<T>,\n 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'\n > {\n // Search-specific props\n searchPlaceholder?: string;\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n filter?: (textValue: string, inputValue: string) => boolean;\n emptyLabel?: ReactNode;\n searchInputStyles?: Styles;\n headerStyles?: Styles;\n footerStyles?: Styles;\n\n // Advanced search features\n isLoading?: boolean;\n shouldFilter?: boolean;\n\n // Focus management - override the autoFocus from CubeMenuProps to allow boolean | FocusStrategy\n autoFocus?: boolean | FocusStrategy;\n\n // Size prop\n size?: 'medium' | 'large' | (string & {});\n\n /** Currently selected keys (controlled) */\n selectedKeys?: string[];\n /** Initially selected keys (uncontrolled) */\n defaultSelectedKeys?: string[];\n /** Handler for selection changes */\n onSelectionChange?: (keys: string[]) => void;\n}\n\nfunction CommandMenu<T extends object>(\n props: CubeCommandMenuProps<T>,\n ref: Ref<HTMLDivElement>,\n) {\n const { t } = useI18n();\n\n const {\n searchPlaceholder = t(\n 'commandMenu.searchPlaceholder',\n 'Search commands...',\n ),\n searchValue: controlledSearchValue,\n onSearchChange,\n filter: customFilter,\n emptyLabel = t('commandMenu.empty', 'No commands found'),\n searchInputStyles,\n headerStyles,\n footerStyles,\n isLoading = false,\n shouldFilter = true,\n autoFocus = true,\n size = 'medium',\n qa,\n styles,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n onAction,\n header,\n footer,\n ...restMenuProps\n } = props;\n\n const domRef = useObjectRef(ref);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const instanceId = useId();\n const menuId = `${qa || 'CommandMenu'}-${instanceId}-menu`;\n const contextProps = useMenuContext();\n\n // Convert string[] to Set<Key> for React Aria compatibility\n const ariaSelectedKeys = selectedKeys ? new Set(selectedKeys) : undefined;\n const ariaDefaultSelectedKeys = defaultSelectedKeys\n ? new Set(defaultSelectedKeys)\n : undefined;\n\n const handleSelectionChange = onSelectionChange\n ? (keys: 'all' | Set<Key>) => {\n if (keys === 'all') {\n // Handle 'all' selection case - collect all available keys\n const allKeys = Array.from(treeState.collection.getKeys()).map(\n (key: any) => String(key),\n );\n onSelectionChange(allKeys);\n } else if (keys instanceof Set) {\n onSelectionChange(Array.from(keys).map((key) => String(key)));\n } else {\n onSelectionChange([]);\n }\n }\n : undefined;\n\n const completeProps = mergeProps(contextProps, restMenuProps, {\n onAction: onAction ? (key: Key) => onAction(key) : undefined,\n selectedKeys: ariaSelectedKeys,\n defaultSelectedKeys: ariaDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n });\n\n // Search state management\n const [internalSearchValue, setInternalSearchValue] = useState('');\n const searchValue = controlledSearchValue ?? internalSearchValue;\n\n const handleSearchChange = (value: string) => {\n if (controlledSearchValue === undefined) {\n setInternalSearchValue(value);\n }\n onSearchChange?.(value);\n };\n\n // Filter setup\n const { contains } = useFilter({ sensitivity: 'base' });\n const textFilterFn = customFilter || contains;\n\n // Enhanced filter function that supports keywords and forceMount\n const enhancedFilter = (\n textValue: string,\n inputValue: string,\n item?: any,\n ) => {\n // Always show force-mounted items\n if (item?.forceMount) {\n return true;\n }\n\n // If shouldFilter is false, show all items\n if (!shouldFilter) {\n return true;\n }\n\n // Split input value into individual words and filter out empty strings\n const searchWords = inputValue\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n // If no search words, show all items\n if (searchWords.length === 0) {\n return true;\n }\n\n // Collect all searchable text for this item\n const searchableTexts: string[] = [];\n\n // Add main text value\n searchableTexts.push(textValue.toLowerCase());\n\n // Add keywords if available\n if (item?.keywords && Array.isArray(item.keywords)) {\n searchableTexts.push(\n ...item.keywords.map((keyword: string) => keyword.toLowerCase()),\n );\n }\n\n // Check if ALL search words match at least one of the searchable texts\n return searchWords.every((searchWord) =>\n searchableTexts.some((text) => text.includes(searchWord)),\n );\n };\n\n // Collection filter for React Stately\n const collectionFilter = (nodes: Iterable<any>): Iterable<any> => {\n const term = searchValue.trim();\n\n // If no search term, return all nodes\n if (!term) {\n return nodes;\n }\n\n // Split search term into words for multi-word filtering\n const searchWords = term\n .toLowerCase()\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n // If no valid search words, return all nodes\n if (searchWords.length === 0) {\n return nodes;\n }\n\n // Recursive helper to filter sections and items\n const filterNodes = (iter: Iterable<any>): any[] => {\n const result: any[] = [];\n\n for (const node of iter) {\n if (node.type === 'section') {\n const filteredChildren = filterNodes(node.childNodes);\n\n if (filteredChildren.length) {\n result.push({\n ...node,\n childNodes: filteredChildren,\n });\n }\n } else {\n const text = node.textValue ?? String(node.rendered ?? '');\n\n if (enhancedFilter(text, term, node.props)) {\n result.push(node);\n }\n }\n }\n\n return result;\n };\n\n return filterNodes(nodes);\n };\n\n // Create tree state with filter for both keyboard navigation and rendering\n const treeStateProps = {\n ...completeProps,\n children: completeProps.children as CollectionChildren<T>,\n filter: collectionFilter,\n shouldUseVirtualFocus: true, // Always use virtual focus for CommandMenu\n };\n\n const treeState = useTreeState(treeStateProps);\n const itemId = (key: Key) => {\n const item = treeState.collection.getItem(key);\n const actions = item?.props.actions;\n // A plain command's layout and semantic target share the consumer's DOM id.\n if (\n item?.props.id != null &&\n item.props.href == null &&\n (!actions || actions === true)\n )\n return String(item.props.id);\n return `${menuId}-option-${typeof key}-${encodeURIComponent(String(key))}`;\n };\n\n const collectionItems = [...treeState.collection];\n const hasSections = collectionItems.some((item) => item.type === 'section');\n\n const focusedKey = treeState.selectionManager.focusedKey;\n\n // Apply filtering to collection items for rendering and empty state checks\n const filteredCollectionItems = [...collectionFilter(collectionItems)];\n\n const hasFilteredItems = filteredCollectionItems.length > 0;\n const viewHasSections = filteredCollectionItems.some(\n (item) => item.type === 'section',\n );\n\n // Helper function to find the first selectable item from filtered results\n const findFirstSelectableItem = () =>\n collectItemKeys(filteredCollectionItems).find(\n (key) => !treeState.selectionManager.isDisabled(key),\n ) ?? null;\n\n // Create a ref for the menu container\n const menuRef = useRef<HTMLUListElement>(null);\n\n // Use menu hook for accessibility\n const { menuProps } = useMenu(\n {\n ...completeProps,\n 'aria-label': t('commandMenu.menu', 'Command menu'),\n shouldUseVirtualFocus: true,\n },\n treeState,\n menuRef,\n );\n\n // Manual rendering of menu items (similar to Menu component)\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n filteredCollectionItems.forEach((item) => {\n const reactKey = getMenuItemReactKey(item.key);\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <StyledDivider\n key={`divider-${reactKey}`}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <MenuSection\n key={reactKey}\n item={item}\n state={treeState}\n styles={completeProps.sectionStyles}\n itemStyles={completeProps.itemStyles}\n headingStyles={completeProps.sectionHeadingStyles}\n size={size}\n itemId={itemId}\n />,\n );\n\n isFirstSection = false;\n return;\n }\n\n let menuItem = (\n <MenuItem\n key={reactKey}\n item={item}\n state={treeState}\n styles={completeProps.itemStyles}\n size={size}\n id={itemId(item.key)}\n />\n );\n\n // Apply custom wrapper if provided\n if (item.props.wrapper) {\n menuItem = item.props.wrapper(menuItem);\n }\n\n // Ensure every child has a stable key, even if the wrapper component didn't set one.\n renderedItems.push(React.cloneElement(menuItem, { key: reactKey }));\n });\n\n // Auto-focus search input\n React.useEffect(() => {\n if (autoFocus && searchInputRef.current) {\n // Use a small timeout to ensure the element is visible and focusable\n // This is especially important when the CommandMenu is opened in a popover\n const timeoutId = setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, 0);\n\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus]);\n\n // Also focus when the component becomes visible (for trigger/popover usage)\n React.useEffect(() => {\n // Check if autoFocus is enabled and we're in a trigger context\n if (autoFocus && contextProps.autoFocus && searchInputRef.current) {\n // Use a small timeout to ensure the popover is fully rendered\n const timeoutId = setTimeout(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, 50); // Slightly longer timeout for popover context\n\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus, contextProps.autoFocus]);\n\n // Track the previous search value to only run auto-focus when search actually changes\n const prevSearchValueRef = useRef<string>('');\n\n // Auto-focus first item when search value changes (but not on initial render)\n React.useEffect(() => {\n const currentSearchValue = searchValue.trim();\n const prevSearchValue = prevSearchValueRef.current;\n\n // Only auto-focus when search value actually changes\n if (currentSearchValue !== prevSearchValue && currentSearchValue !== '') {\n const firstSelectableKey = findFirstSelectableItem();\n\n if (firstSelectableKey != null && hasFilteredItems) {\n // Focus the first item in the selection manager\n treeState.selectionManager.setFocusedKey(firstSelectableKey);\n } else {\n // Clear focus if no items are available\n treeState.selectionManager.setFocusedKey(null);\n }\n }\n\n // Update the previous search value\n prevSearchValueRef.current = currentSearchValue;\n }, [searchValue, findFirstSelectableItem, hasFilteredItems]);\n\n // ---- search input keyboard ----------------------------------------------\n const handleArrowKey = (e: KeyboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n\n const { selectionManager } = treeState;\n const currentKey = selectionManager.focusedKey;\n const nextKey = getNextEnabledKey(\n collectItemKeys(filteredCollectionItems),\n currentKey,\n e.key === 'ArrowDown' ? 1 : -1,\n (key) => selectionManager.isDisabled(key),\n );\n\n if (nextKey != null) {\n selectionManager.setFocusedKey(nextKey);\n }\n };\n\n // Use the rendered item's Aria handlers for commands, selection and navigation.\n const handleActionKey = (e: KeyboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (\n e.repeat ||\n focusedKey == null ||\n treeState.selectionManager.isDisabled(focusedKey)\n )\n return;\n const item = menuRef.current?.ownerDocument.getElementById(\n itemId(focusedKey),\n );\n if (!item || !menuRef.current?.contains(item)) return;\n const shouldActivate = item.dispatchEvent(\n new window.KeyboardEvent('keydown', {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n shiftKey: e.shiftKey,\n bubbles: true,\n cancelable: true,\n }),\n );\n // An anchor's Enter handler leaves its native default action to the browser.\n if (shouldActivate && e.key === 'Enter') {\n item.dispatchEvent(\n new window.MouseEvent('click', {\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n shiftKey: e.shiftKey,\n bubbles: true,\n cancelable: true,\n detail: 1,\n }),\n );\n }\n // The real keyup belongs to the search input, so balance the item's press here.\n item.dispatchEvent(\n new window.KeyboardEvent('keyup', {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey,\n shiftKey: e.shiftKey,\n bubbles: true,\n cancelable: true,\n }),\n );\n };\n\n const handleSearchKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.nativeEvent.isComposing) return;\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n handleArrowKey(e);\n } else if (e.key === 'Enter' || (e.key === ' ' && !searchValue.trim())) {\n handleActionKey(e);\n } else if (e.key === 'Escape' && searchValue) {\n e.preventDefault();\n handleSearchChange('');\n }\n };\n\n // Extract styles\n const extractedStyles = extractStyles(props, CONTAINER_STYLES);\n\n // Determine if we should show empty state based on actual filtered collection\n const hasSearchTerm = searchValue.trim().length > 0;\n const showEmptyState = hasSearchTerm && !hasFilteredItems && !isLoading;\n const activeDescendant =\n !isLoading &&\n !showEmptyState &&\n focusedKey != null &&\n collectItemKeys(filteredCollectionItems).includes(focusedKey)\n ? itemId(focusedKey)\n : undefined;\n\n // Sync refs\n useSyncRef(contextProps, menuRef);\n\n // Determine mods based on menu context\n const mods = {\n sections: viewHasSections,\n footer: !!footer,\n header: !!header,\n popover: completeProps.mods?.popover,\n tray: completeProps.mods?.tray,\n };\n\n const {\n 'aria-label': _ariaLabel,\n 'aria-labelledby': _ariaLabelledBy,\n 'aria-describedby': _ariaDescribedBy,\n 'aria-details': _ariaDetails,\n ...wrapperProps\n } = filterBaseProps(props) as Record<string, unknown>;\n\n return (\n <StyledCommandMenu\n {...wrapperProps}\n ref={domRef}\n qa={qa || 'CommandMenu'}\n data-size={size}\n mods={mods}\n styles={mergeStyleLayers(extractedStyles, styles)}\n >\n {/* Header */}\n {header && (\n <StyledHeader\n role=\"presentation\"\n data-size={size}\n styles={mergeStyleLayers({ border: 'none' }, headerStyles)}\n >\n {header}\n </StyledHeader>\n )}\n\n {/* Search Input */}\n <StyledSearchInput\n ref={searchInputRef}\n type=\"search\"\n placeholder={searchPlaceholder}\n value={searchValue}\n styles={searchInputStyles}\n data-size={size}\n aria-label={completeProps['aria-label'] ?? searchPlaceholder}\n aria-labelledby={completeProps['aria-labelledby']}\n aria-describedby={completeProps['aria-describedby']}\n aria-details={completeProps['aria-details']}\n aria-controls={!isLoading && !showEmptyState ? menuId : undefined}\n role=\"searchbox\"\n aria-activedescendant={activeDescendant}\n // For a dialog kept mounted while closed, as on `Button`.\n {...(autoFocus ? { 'data-autofocus': '' } : undefined)}\n onChange={(e) => handleSearchChange(e.target.value)}\n onKeyDown={handleSearchKeyDown}\n />\n\n {/* Loading State */}\n {isLoading && (\n <StyledLoadingWrapper>\n <LoadingIcon\n role=\"progressbar\"\n aria-label={t('commandMenu.loading', 'Loading commands')}\n aria-hidden={false}\n />\n </StyledLoadingWrapper>\n )}\n\n {/* Menu Content - always render unless loading */}\n {!isLoading && !showEmptyState && (\n <StyledMenu\n {...menuProps}\n ref={menuRef}\n id={menuId}\n aria-label={t('commandMenu.menu', 'Command menu')}\n qa=\"Menu\"\n data-size={size}\n mods={mods}\n styles={{\n border: 'none',\n boxShadow: 'none',\n radius: 0,\n padding: '0.5x',\n }}\n >\n {renderedItems}\n </StyledMenu>\n )}\n\n {/* Empty State - show when search term exists but no results */}\n {!isLoading && showEmptyState && (\n <StyledEmptyState>{emptyLabel}</StyledEmptyState>\n )}\n\n {/* Footer */}\n {footer && (\n <StyledFooter\n role=\"presentation\"\n data-size={size}\n styles={footerStyles}\n >\n {footer}\n </StyledFooter>\n )}\n </StyledCommandMenu>\n );\n}\n\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\nconst _CommandMenu = React.forwardRef(CommandMenu) as <T>(\n props: CubeCommandMenuProps<T> & React.RefAttributes<HTMLDivElement>,\n) => ReactElement;\n\n// Attach Trigger alias from MenuTrigger for consistent API\n// Also attach Item and Section for compound component pattern\nconst __CommandMenu = Object.assign(_CommandMenu, {\n Trigger: MenuTrigger,\n Item,\n Section,\n displayName: 'CommandMenu',\n});\n\nexport { __CommandMenu as CommandMenu };\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
3
|
-
import { getDisabledElementProps, omitActivationEventProps } from "../../../utils/react/disabledProps.js";
|
|
4
3
|
import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
|
|
5
4
|
import { CURRENT_CLEAR_STYLES, CURRENT_OUTLINE_STYLES, CURRENT_PRIMARY_STYLES, DANGER_CLEAR_STYLES, DANGER_OUTLINE_STYLES, DANGER_PRIMARY_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_OUTLINE_STYLES, DEFAULT_PRIMARY_STYLES, ITEM_ACTION_BASE_STYLES, NOTE_CLEAR_STYLES, NOTE_OUTLINE_STYLES, NOTE_PRIMARY_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_OUTLINE_STYLES, SPECIAL_PRIMARY_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_OUTLINE_STYLES, SUCCESS_PRIMARY_STYLES, WARNING_CLEAR_STYLES, WARNING_OUTLINE_STYLES, WARNING_PRIMARY_STYLES } from "../../../data/item-themes.js";
|
|
6
5
|
import { CheckIcon } from "../../../icons/CheckIcon.js";
|
|
7
6
|
import { LoadingIcon } from "../../../icons/LoadingIcon.js";
|
|
7
|
+
import { getDisabledElementProps, omitActivationEventProps } from "../../../utils/react/disabledProps.js";
|
|
8
8
|
import { mergeTooltipFocusProps } from "../../overlays/Tooltip/split-trigger-props.js";
|
|
9
9
|
import { useItemActionContext } from "../ItemActionContext.js";
|
|
10
10
|
import { useAction } from "../use-action.js";
|