@cube-dev/ui-kit 0.0.0-canary-fb98ef5 → 0.0.0-canary-34e9391
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 +43 -0
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.d.ts +1 -0
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +2 -6
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.d.ts +0 -14
- package/dist/components/actions/ItemActionContext.js +2 -2
- package/dist/components/actions/ItemActionContext.js.map +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +42 -47
- package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.d.ts +13 -0
- package/dist/components/actions/Menu/MenuTrigger.js +27 -15
- package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.js +48 -4
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.d.ts +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +4 -5
- package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.d.ts +2 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.d.ts +1 -0
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +6 -2
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +5 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/index.d.ts +1 -0
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +2 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.js +5 -1
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +6 -2
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +7 -1
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.js +6 -2
- 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/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/ColorSwatch.js +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Board/Board.js +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/WidgetHost.js +1 -1
- package/dist/components/layout/Board/board-context.js +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/group-move.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/use-board-layout.js +1 -1
- package/dist/components/layout/Board/use-board-registry.js +1 -1
- package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
- package/dist/components/layout/Board/use-board-selection.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +2 -29
- package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +4 -3
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +13 -0
- package/dist/components/overlays/Dialog/DialogTrigger.js +24 -5
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/context.js.map +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.d.ts +2 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/types.d.ts +1 -0
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.d.ts +2 -0
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/index.d.ts +1 -0
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +7 -86
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +19 -5
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.js +1 -1
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/components/actions/ItemAction.md +1 -1
- package/docs/components/actions/MenuTrigger.md +52 -0
- package/docs/components/content/InlineInput.md +1 -1
- package/docs/components/content/ItemBadge.md +1 -1
- package/docs/components/overlays/DialogTrigger.md +2 -1
- package/package.json +1 -1
package/dist/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# @cube-dev/ui-kit
|
|
2
2
|
|
|
3
|
+
## 0.163.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1323](https://github.com/cube-js/cube-ui-kit/pull/1323) [`82616524`](https://github.com/cube-js/cube-ui-kit/commit/826165244c923627a036a66af386f5a8478986bb) Thanks [@tenphi](https://github.com/tenphi)! - `Radio` / `Radio.Button`: a button- or tabs-type radio now accepts the full content API of the `Item` it renders, matching `ItemButton`. Newly forwarded: `descriptionPlacement`, `descriptionProps`, `keyboardShortcutProps`, `isLoading`, `loadingSlot`, `highlight`, `highlightCaseSensitive`, `highlightStyles`, `level` and `labelRef`. `description` now has a grid area to land in, so it renders in both `inline` and `block` placement, and container style props (`padding`, `gap`, `fill`, `preset`, …) apply to button-type radios instead of being dropped. A loading button radio is also disabled, so it no longer takes clicks or arrow-key selection — pass an explicit `isDisabled={false}` to opt out.
|
|
8
|
+
|
|
9
|
+
- [#1319](https://github.com/cube-js/cube-ui-kit/pull/1319) [`2a8d0b4a`](https://github.com/cube-js/cube-ui-kit/commit/2a8d0b4ad6e05b913a7aa6ca0eade56ff5e151ff) Thanks [@tenphi](https://github.com/tenphi)! - Lint ui-kit's own source with the `no-redundant-default-prop` rule it ships, and fix four registry entries that autofixing would have broken.
|
|
10
|
+
|
|
11
|
+
The plugin was never applied to this repo. Two things prevented it, and the second was silent: nothing loaded the plugin, and provenance is gated on the import specifier literally matching `@cube-dev/ui-kit`, which no file in `src/` uses — every component import here is relative, across 210 distinct specifiers that share no usable prefix. So even once loaded, the rule reported nothing.
|
|
12
|
+
|
|
13
|
+
- New `relativeImports` rule option, which also accepts relative specifiers as ui-kit provenance. It exists for linting this repository and must not be enabled in a consumer project, where a relative import is the consumer's own component. Shadowing still bails either way — resolution requires an `ImportBinding`, so a local `const Badge = tasty({})` is never matched.
|
|
14
|
+
- `configs.recommended` now sets stories and `.docs.mdx` to `warn` instead of `off`. Stories are the code people copy, so redundant props there travel outward and are worth surfacing; a deliberate side-by-side contrast still has a real reason to name a default, so it warns rather than failing a build.
|
|
15
|
+
|
|
16
|
+
Four props were classified as plain defaults when they are actually inherited overrides, so the rule would have offered — and `--fix` would have taken — an autofix that changed behaviour. Each is now `skip: 'context'`:
|
|
17
|
+
|
|
18
|
+
- `ItemAction` `isDisabled` and `type`. `<Item isDisabled>` renders its `actions` inside `ItemActionProvider`, and `isDisabled = isDisabledProp ?? contextIsDisabled`, so `<ItemAction isDisabled={false}>` is the documented way to keep one action live inside a disabled item. Stripping it silently disabled that action.
|
|
19
|
+
- `ItemBadge` `type` and `theme`, which read the same context and had no conditions on their fixture at all.
|
|
20
|
+
- `Dialog` `isDismissable`, resolved as `contextProps.isDismissable` with no literal fallback while `DialogContainer` and `DialogTrigger` default that context value to `true`, so a nested `<Dialog isDismissable={false}>` is an override. Three call sites in shipped source relied on it.
|
|
21
|
+
|
|
22
|
+
The cause is general: a prop resolved as `prop ?? context ?? literal` probes as a plain default in a bare tree, because the literal wins when nothing supplies the context. Only `ItemAction`'s `theme` was classified correctly, and only because it happened to be the one prop with a matching condition. The fixtures now supply a differing value for each such prop, so the prover derives these skips itself and the sync guard re-proves them on every test run rather than trusting a hand-written note. A repo-wide audit for the pattern found no other affected component.
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- [#1323](https://github.com/cube-js/cube-ui-kit/pull/1323) [`82616524`](https://github.com/cube-js/cube-ui-kit/commit/826165244c923627a036a66af386f5a8478986bb) Thanks [@tenphi](https://github.com/tenphi)! - `Item` themes: a disabled item now keeps showing whether it is selected. The `disabled` entry in every `outline`, `outline-2` and `clear` variant used to override `selected` outright, so a disabled segmented control — `RadioGroup type="button"` most visibly — rendered every option identically with no sign of which one was active. Each of those variants gains a `selected & disabled` state that paints the brand-tinted `accent-disabled-surface` chip and its paired label instead of the neutral one, across all six themes (`special` and `current` stay in their own white-alpha / `currentcolor` registers). `type="item"` rows are unchanged — they already keep brand identity in their disabled label and pair selection with a checkmark.
|
|
27
|
+
|
|
28
|
+
- [#1322](https://github.com/cube-js/cube-ui-kit/pull/1322) [`b56c0073`](https://github.com/cube-js/cube-ui-kit/commit/b56c0073e6eeb622f458cb017cf8c202c9e638d9) Thanks [@tenphi](https://github.com/tenphi)! - Make `no-redundant-default-prop` fire on compound aliases such as `<Radio.Group>`, which it silently ignored.
|
|
29
|
+
|
|
30
|
+
The registry is keyed on the name each render fixture carries — the flat `RadioGroup` — while the rule resolves a JSX tag to its dotted path, `Radio.Group`. The lookup missed, so the entry only ever fired on the form nobody writes: every example in `RadioGroup.docs.mdx` uses `<Radio.Group>` / `<Radio.Tabs>`, and two genuinely redundant props in `RadioGroup.stories.tsx` went unreported. `Button.Split`, `Item.Action`, `Menu.Trigger` and `Input` had the same gap.
|
|
31
|
+
|
|
32
|
+
`DefaultsRegistry` now carries an `aliases` map from alias path to canonical key, generated by walking the package exports and recording every path whose value **is the same object** as a covered component. Fixtures still name one export each; the 27 alias paths are derived, so adding a fixture needs no alias bookkeeping.
|
|
33
|
+
|
|
34
|
+
Identity, not name shape, is what makes this safe. `Radio.Group` is `RadioGroup` itself and cannot behave differently, but `Radio.ButtonGroup` is `tasty(RadioGroup, { type: 'button' })` and `Radio.Tabs` is `tasty(RadioGroup, { type: 'tabs' })` — different objects with a different effective `type` default. A rule that normalised the dotted path by concatenating it would hand those two RadioGroup's entry and offer to strip a `type` that is not their default; identity skips them. Each alias is re-checked against the live exports on every test run, so a refactor that turns an alias into a wrapper fails instead of shipping a wrong entry.
|
|
35
|
+
|
|
36
|
+
This is a missed-cleanup fix, not a correctness one — the rule was silent, never wrong. Unrelated to `VerifiedDefault.aliases`, which lists alternate spellings of a prop _value_ and stays hand-curated.
|
|
37
|
+
|
|
38
|
+
- [#1319](https://github.com/cube-js/cube-ui-kit/pull/1319) [`2a8d0b4a`](https://github.com/cube-js/cube-ui-kit/commit/2a8d0b4ad6e05b913a7aa6ca0eade56ff5e151ff) Thanks [@tenphi](https://github.com/tenphi)! - Fix `RadioGroup`'s documented `size` default, which was wrong in a way the lint rule acted on.
|
|
39
|
+
|
|
40
|
+
`RadioGroup.docs.mdx` contradicted both itself and the implementation: the `## Properties` bullet said `(default: xsmall)` while its own prose said `medium`, and `Radio.tsx` resolves `size ?? contextSize ?? 'medium'`. The default is `medium`.
|
|
41
|
+
|
|
42
|
+
That annotation is what seeds the `no-redundant-default-prop` registry, so the shipped rule claimed `<RadioGroup size="xsmall">` was redundant and offered to delete it — which silently resized the radios to `medium`. The prover could not catch the drift because `size` only reaches the DOM through the radios and a plain `type="radio"` radio renders identically at every size, so any documented value verified. The fixture now probes under `type="button"` and `type="tabs"` as well, which is what makes a wrong `size` value fail: restoring `xsmall` under the new conditions correctly downgrades the prop to `skip: 'conditional'` instead of passing as a verified default.
|
|
43
|
+
|
|
44
|
+
Also corrects the tabs-mode size mapping table. It claimed `xlarge` maps to `large` and listed `xsmall` as passing through, but `Radio.tsx` maps only `large`, funnelling every other size through `RADIO_SIZE_MAP.medium` — so `xsmall`, `small`, `medium` and `xlarge` all collapse to `xsmall`.
|
|
45
|
+
|
|
3
46
|
## 0.162.0
|
|
4
47
|
|
|
5
48
|
### Minor Changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { useRef } from "react";
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../use-event.js";
|
|
3
3
|
import { Timer } from "./timer.js";
|
|
4
4
|
import { useEffect, useState } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "./use-event.js";
|
|
3
3
|
import { warn } from "../../utils/warnings.js";
|
|
4
4
|
import { useRef } from "react";
|
package/dist/components/Block.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../utils/styles.js";
|
|
3
3
|
import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|
|
4
4
|
import { forwardRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { ItemAction } from "./actions/ItemAction/ItemAction.js";
|
|
3
3
|
import { ItemBadge } from "./content/ItemBadge/ItemBadge.js";
|
|
4
4
|
import { Item } from "react-stately";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { usePaletteVersion } from "../tokens/palette-config.js";
|
|
3
3
|
import { getTokens } from "../tokens/index.js";
|
|
4
4
|
import { useGlobalStyles, useRawCSS } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { useCombinedRefs } from "../utils/react/useCombinedRefs.js";
|
|
3
3
|
import { filterBaseProps, tasty } from "@tenphi/tasty";
|
|
4
4
|
import { forwardRef, useCallback, useEffect, useState } from "react";
|
package/dist/components/Root.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../utils/styles.js";
|
|
3
3
|
import { EventBusProvider } from "../utils/react/useEventBus.js";
|
|
4
4
|
import { PortalProvider } from "./portal/PortalProvider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { useAction } from "../use-action.js";
|
|
4
4
|
import { CONTAINER_STYLES, TEXT_STYLES, tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { _Item } from "../../content/Item/Item.js";
|
|
4
4
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
@@ -4,6 +4,7 @@ import { DynamicIcon } from "../../../utils/react/resolveIcon.js";
|
|
|
4
4
|
import "../../../utils/react/index.js";
|
|
5
5
|
import { CubeActionProps } from "../Action/Action.js";
|
|
6
6
|
import { Mods, Styles } from "@tenphi/tasty";
|
|
7
|
+
import "react";
|
|
7
8
|
import { OverlayProps } from "react-aria";
|
|
8
9
|
|
|
9
10
|
//#region src/components/actions/Button/Button.d.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { getDisabledElementProps } from "../../../utils/react/disabledProps.js";
|
|
4
4
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { useSlotProps } from "../../../utils/react/Slots.js";
|
|
3
3
|
import { Space } from "../../layout/Space.js";
|
|
4
4
|
import { tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { DirectionIcon } from "../../../icons/DirectionIcon.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
|
|
4
4
|
import { CURRENT_ITEM_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";
|
|
@@ -16,10 +16,6 @@ const ItemActionElement = tasty({
|
|
|
16
16
|
styles: {
|
|
17
17
|
...ITEM_ACTION_BASE_STYLES,
|
|
18
18
|
recipe: "reset button",
|
|
19
|
-
outline: {
|
|
20
|
-
"": "0 #primary-accent-text.0",
|
|
21
|
-
focused: "1bw #primary-accent-text"
|
|
22
|
-
},
|
|
23
19
|
outlineOffset: 1,
|
|
24
20
|
cursor: {
|
|
25
21
|
"": "$pointer",
|
|
@@ -71,7 +67,7 @@ const ItemActionElement = tasty({
|
|
|
71
67
|
});
|
|
72
68
|
const ItemAction = forwardRef(function ItemAction(allProps, ref) {
|
|
73
69
|
const { type: contextType, theme: contextTheme, disableActionsFocus, isDisabled: contextIsDisabled } = useItemActionContext();
|
|
74
|
-
const { type =
|
|
70
|
+
const { type = contextType ?? "clear", theme = contextTheme ?? "default", icon, children, isLoading = false, isSelected = false, tooltip, mods, styles, isDisabled: isDisabledProp, ...rest } = allProps;
|
|
75
71
|
const isDisabled = isDisabledProp ?? contextIsDisabled;
|
|
76
72
|
const hasCheckmark = icon === "checkmark";
|
|
77
73
|
const finalIcon = isLoading ? /* @__PURE__ */ jsx(LoadingIcon, {}) : hasCheckmark ? /* @__PURE__ */ jsx(CheckIcon, {}) : icon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemAction.js","names":[],"sources":["../../../../src/components/actions/ItemAction/ItemAction.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport { BaseProps, Styles, tasty } from '@tenphi/tasty';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n RefObject,\n useMemo,\n} from 'react';\n\nimport {\n CURRENT_ITEM_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n ITEM_ACTION_BASE_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { TooltipProvider } from '../../overlays/Tooltip/TooltipProvider';\nimport { useItemActionContext } from '../ItemActionContext';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemActionProps\n extends Omit<CubeUseActionProps, 'as' | 'htmlType'>,\n Omit<BaseProps, 'as'> {\n icon?: ReactNode | 'checkmark';\n children?: ReactNode;\n isLoading?: boolean;\n isSelected?: boolean;\n type?: 'primary' | 'outline' | 'clear' | 'current' | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | (string & {});\n tooltip?:\n | string\n | (Omit<ComponentProps<typeof TooltipProvider>, 'children'> & {\n title?: ReactNode;\n });\n styles?: Styles;\n tabIndex?: number;\n}\n\ntype ItemActionVariant =\n // Theme-agnostic inherited-color type — see `CURRENT_ITEM_STYLES`.\n | 'default.current'\n | 'default.primary'\n | 'default.outline'\n | 'default.clear'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.clear'\n | 'success.primary'\n | 'success.outline'\n | 'success.clear'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.clear'\n | 'note.primary'\n | 'note.outline'\n | 'note.clear'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear';\n\nconst ItemActionElement = tasty({\n qa: 'ItemAction',\n styles: {\n ...ITEM_ACTION_BASE_STYLES,\n recipe: 'reset button',\n // Every variant below defines its own ring and overrides this one. It exists\n // for `current`, which reuses `CURRENT_ITEM_STYLES` — an `*_ITEM_STYLES`\n // flavour, and those leave focus to the collection that owns the row. A\n // focusable action is not a row, so it needs the ring back, and it uses the\n // same `#primary-accent-text` as every other type in `item-themes.ts`.\n outline: {\n '': '0 #primary-accent-text.0',\n focused: '1bw #primary-accent-text',\n },\n outlineOffset: 1,\n cursor: { '': '$pointer', disabled: 'default' },\n preset: {\n '': 't4',\n 'size=xlarge': 't3m',\n },\n padding: {\n '': '0 $inline-padding',\n 'has-icon': 0,\n 'has-icon & has-label': '$inline-padding right',\n },\n\n '$inline-padding': {\n '': 'max($min-inline-padding, (($action-size - 1lh - 2bw) / 2 + $inline-compensation))',\n 'size=inline': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(.5x - 1bw)',\n '$local-icon-size': '$icon-size',\n\n Icon: {\n $: '>',\n ...(ITEM_ACTION_BASE_STYLES.Icon as Styles),\n '$icon-size': 'min($local-icon-size, ($action-size - .25x))',\n },\n },\n variants: {\n // Inherited-color type — theme-agnostic, see `CURRENT_ITEM_STYLES`. Actions\n // inside a `current` Item use the borderless item flavour, not the chip.\n 'default.current': CURRENT_ITEM_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n },\n});\n\nexport const ItemAction = forwardRef(function ItemAction(\n allProps: CubeItemActionProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n type: contextType,\n theme: contextTheme,\n disableActionsFocus,\n isDisabled: contextIsDisabled,\n } = useItemActionContext();\n\n const {\n // `current` derives every color from the row's inherited `currentcolor`, so\n // one type covers every host type and theme — no need to mirror the row's\n // `type` from context.\n //\n // An explicitly *themed* action is the exception: it is asking to paint\n // itself, not to match its host, and `current` is theme-agnostic by\n // construction, so it would have nothing to color with. Such actions fall\n // back to `clear`. The `!== 'default'` guard keeps `theme=\"default\"` inert —\n // passing a prop's own default value must never change what renders, which\n // is the invariant `no-redundant-default-prop` lints for.\n type = allProps.theme && allProps.theme !== 'default' ? 'clear' : 'current',\n theme = contextTheme ?? 'default',\n icon,\n children,\n isLoading = false,\n isSelected = false,\n tooltip,\n mods,\n styles,\n isDisabled: isDisabledProp,\n ...rest\n } = allProps;\n\n // Inherit disabled state from context, but allow local override\n const isDisabled = isDisabledProp ?? contextIsDisabled;\n\n // Determine if we should show a checkmark\n const hasCheckmark = icon === 'checkmark';\n\n // Determine final icon (loading takes precedence)\n const finalIcon = isLoading ? (\n <LoadingIcon />\n ) : hasCheckmark ? (\n <CheckIcon />\n ) : (\n icon\n );\n\n // Build modifiers\n const finalMods = useMemo(\n () => ({\n checkmark: hasCheckmark,\n selected: isSelected,\n loading: isLoading,\n 'has-label': !!children,\n context: !!contextType,\n 'has-icon': !!icon,\n ...mods,\n }),\n [hasCheckmark, isSelected, isLoading, children, contextType, mods],\n );\n\n // An explicit label always wins; a tooltip only fills in the accessible name\n // when there isn't one. Rich tooltip content can't serve as a name, so only\n // plain strings are used here.\n const ariaLabel = useMemo(() => {\n if (rest['aria-label']) {\n return rest['aria-label'];\n }\n if (typeof tooltip === 'string') {\n return tooltip;\n }\n if (typeof tooltip === 'object' && typeof tooltip.title === 'string') {\n return tooltip.title;\n }\n return undefined;\n }, [tooltip, rest]);\n\n // Call useAction hook\n const { actionProps } = useAction(\n {\n ...rest,\n isDisabled,\n 'aria-label': ariaLabel,\n mods: finalMods,\n htmlType: 'button',\n },\n ref,\n );\n\n // Set tabIndex when in context\n const finalTabIndex = disableActionsFocus ? -1 : rest.tabIndex;\n\n // Determine if we should show tooltip (icon-only buttons)\n const showTooltip = !children && tooltip;\n\n // Extract tooltip content and props\n const tooltipContent = useMemo(() => {\n if (typeof tooltip === 'string') {\n return tooltip;\n }\n if (typeof tooltip === 'object' && tooltip.title) {\n return tooltip.title;\n }\n return undefined;\n }, [tooltip]);\n\n const tooltipProps = useMemo(() => {\n if (typeof tooltip === 'object') {\n const { title, ...rest } = tooltip;\n return rest;\n }\n return {};\n }, [tooltip]);\n\n const finalType = type;\n\n // Render function that accepts tooltip trigger props and ref\n const renderButton = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Merge tooltip ref with actionProps if provided\n const mergedProps = tooltipRef\n ? mergeProps(actionProps, tooltipTriggerProps || {}, {\n ref: (element: HTMLElement | null) => {\n // Set the tooltip ref\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Set the action ref if it exists in actionProps\n const actionRef = (actionProps as any).ref;\n if (actionRef) {\n if (typeof actionRef === 'function') {\n actionRef(element);\n } else {\n actionRef.current = element;\n }\n }\n },\n })\n : mergeProps(actionProps, tooltipTriggerProps || {});\n\n return (\n <ItemActionElement\n {...mergedProps}\n variant={\n `${finalType === 'current' ? 'default' : theme}.${finalType}` as ItemActionVariant\n }\n data-theme={theme}\n data-type={finalType}\n tabIndex={finalTabIndex}\n styles={styles}\n >\n {finalIcon && <div data-element=\"Icon\">{finalIcon}</div>}\n {children}\n </ItemActionElement>\n );\n };\n\n // Wrap with tooltip if needed\n if (showTooltip && tooltipContent) {\n return (\n <TooltipProvider title={tooltipContent} {...tooltipProps}>\n {(triggerProps, tooltipRef) => renderButton(triggerProps, tooltipRef)}\n </TooltipProvider>\n );\n }\n\n return renderButton();\n});\n\nexport type { CubeItemActionProps as ItemActionProps };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ItemAction.js","names":[],"sources":["../../../../src/components/actions/ItemAction/ItemAction.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport { BaseProps, Styles, tasty } from '@tenphi/tasty';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n RefObject,\n useMemo,\n} from 'react';\n\nimport {\n CURRENT_ITEM_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n ITEM_ACTION_BASE_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { TooltipProvider } from '../../overlays/Tooltip/TooltipProvider';\nimport { useItemActionContext } from '../ItemActionContext';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemActionProps\n extends Omit<CubeUseActionProps, 'as' | 'htmlType'>,\n Omit<BaseProps, 'as'> {\n icon?: ReactNode | 'checkmark';\n children?: ReactNode;\n isLoading?: boolean;\n isSelected?: boolean;\n type?: 'primary' | 'outline' | 'clear' | 'current' | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | (string & {});\n tooltip?:\n | string\n | (Omit<ComponentProps<typeof TooltipProvider>, 'children'> & {\n title?: ReactNode;\n });\n styles?: Styles;\n tabIndex?: number;\n}\n\ntype ItemActionVariant =\n // Theme-agnostic inherited-color type — see `CURRENT_ITEM_STYLES`.\n | 'default.current'\n | 'default.primary'\n | 'default.outline'\n | 'default.clear'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.clear'\n | 'success.primary'\n | 'success.outline'\n | 'success.clear'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.clear'\n | 'note.primary'\n | 'note.outline'\n | 'note.clear'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear';\n\nconst ItemActionElement = tasty({\n qa: 'ItemAction',\n styles: {\n ...ITEM_ACTION_BASE_STYLES,\n recipe: 'reset button',\n outlineOffset: 1,\n cursor: { '': '$pointer', disabled: 'default' },\n preset: {\n '': 't4',\n 'size=xlarge': 't3m',\n },\n padding: {\n '': '0 $inline-padding',\n 'has-icon': 0,\n 'has-icon & has-label': '$inline-padding right',\n },\n\n '$inline-padding': {\n '': 'max($min-inline-padding, (($action-size - 1lh - 2bw) / 2 + $inline-compensation))',\n 'size=inline': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(.5x - 1bw)',\n '$local-icon-size': '$icon-size',\n\n Icon: {\n $: '>',\n ...(ITEM_ACTION_BASE_STYLES.Icon as Styles),\n '$icon-size': 'min($local-icon-size, ($action-size - .25x))',\n },\n },\n variants: {\n // Inherited-color type — theme-agnostic, see `CURRENT_ITEM_STYLES`. Actions\n // inside a `current` Item use the borderless item flavour, not the chip.\n 'default.current': CURRENT_ITEM_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n },\n});\n\nexport const ItemAction = forwardRef(function ItemAction(\n allProps: CubeItemActionProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n type: contextType,\n theme: contextTheme,\n disableActionsFocus,\n isDisabled: contextIsDisabled,\n } = useItemActionContext();\n\n const {\n type = contextType ?? 'clear',\n theme = contextTheme ?? 'default',\n icon,\n children,\n isLoading = false,\n isSelected = false,\n tooltip,\n mods,\n styles,\n isDisabled: isDisabledProp,\n ...rest\n } = allProps;\n\n // Inherit disabled state from context, but allow local override\n const isDisabled = isDisabledProp ?? contextIsDisabled;\n\n // Determine if we should show a checkmark\n const hasCheckmark = icon === 'checkmark';\n\n // Determine final icon (loading takes precedence)\n const finalIcon = isLoading ? (\n <LoadingIcon />\n ) : hasCheckmark ? (\n <CheckIcon />\n ) : (\n icon\n );\n\n // Build modifiers\n const finalMods = useMemo(\n () => ({\n checkmark: hasCheckmark,\n selected: isSelected,\n loading: isLoading,\n 'has-label': !!children,\n context: !!contextType,\n 'has-icon': !!icon,\n ...mods,\n }),\n [hasCheckmark, isSelected, isLoading, children, contextType, mods],\n );\n\n // An explicit label always wins; a tooltip only fills in the accessible name\n // when there isn't one. Rich tooltip content can't serve as a name, so only\n // plain strings are used here.\n const ariaLabel = useMemo(() => {\n if (rest['aria-label']) {\n return rest['aria-label'];\n }\n if (typeof tooltip === 'string') {\n return tooltip;\n }\n if (typeof tooltip === 'object' && typeof tooltip.title === 'string') {\n return tooltip.title;\n }\n return undefined;\n }, [tooltip, rest]);\n\n // Call useAction hook\n const { actionProps } = useAction(\n {\n ...rest,\n isDisabled,\n 'aria-label': ariaLabel,\n mods: finalMods,\n htmlType: 'button',\n },\n ref,\n );\n\n // Set tabIndex when in context\n const finalTabIndex = disableActionsFocus ? -1 : rest.tabIndex;\n\n // Determine if we should show tooltip (icon-only buttons)\n const showTooltip = !children && tooltip;\n\n // Extract tooltip content and props\n const tooltipContent = useMemo(() => {\n if (typeof tooltip === 'string') {\n return tooltip;\n }\n if (typeof tooltip === 'object' && tooltip.title) {\n return tooltip.title;\n }\n return undefined;\n }, [tooltip]);\n\n const tooltipProps = useMemo(() => {\n if (typeof tooltip === 'object') {\n const { title, ...rest } = tooltip;\n return rest;\n }\n return {};\n }, [tooltip]);\n\n const finalType = type;\n\n // Render function that accepts tooltip trigger props and ref\n const renderButton = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Merge tooltip ref with actionProps if provided\n const mergedProps = tooltipRef\n ? mergeProps(actionProps, tooltipTriggerProps || {}, {\n ref: (element: HTMLElement | null) => {\n // Set the tooltip ref\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Set the action ref if it exists in actionProps\n const actionRef = (actionProps as any).ref;\n if (actionRef) {\n if (typeof actionRef === 'function') {\n actionRef(element);\n } else {\n actionRef.current = element;\n }\n }\n },\n })\n : mergeProps(actionProps, tooltipTriggerProps || {});\n\n return (\n <ItemActionElement\n {...mergedProps}\n variant={\n `${finalType === 'current' ? 'default' : theme}.${finalType}` as ItemActionVariant\n }\n data-theme={theme}\n data-type={finalType}\n tabIndex={finalTabIndex}\n styles={styles}\n >\n {finalIcon && <div data-element=\"Icon\">{finalIcon}</div>}\n {children}\n </ItemActionElement>\n );\n };\n\n // Wrap with tooltip if needed\n if (showTooltip && tooltipContent) {\n return (\n <TooltipProvider title={tooltipContent} {...tooltipProps}>\n {(triggerProps, tooltipRef) => renderButton(triggerProps, tooltipRef)}\n </TooltipProvider>\n );\n }\n\n return renderButton();\n});\n\nexport type { CubeItemActionProps as ItemActionProps };\n"],"mappings":"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"}
|
|
@@ -4,20 +4,6 @@ import { ReactNode } from "react";
|
|
|
4
4
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
5
|
|
|
6
6
|
//#region src/components/actions/ItemActionContext.d.ts
|
|
7
|
-
/**
|
|
8
|
-
* What an `ItemAction` / `ItemBadge` picks up from the row that hosts it.
|
|
9
|
-
*
|
|
10
|
-
* `type` is deliberately NOT a styling input. Actions default to the `current`
|
|
11
|
-
* type, which derives every color from the row's own `currentcolor`, so they
|
|
12
|
-
* track the host's type without being told what it is — see
|
|
13
|
-
* `CURRENT_ITEM_STYLES`. It is still carried here because its *presence* marks
|
|
14
|
-
* "inside a host", which drives the `context` mod that collapses the action's
|
|
15
|
-
* side margins.
|
|
16
|
-
*
|
|
17
|
-
* `theme` is still consumed: `current` needs to know when it sits on the
|
|
18
|
-
* special theme's dark surface, where the alpha ramp has to step harder to stay
|
|
19
|
-
* visible. `ItemAction` forwards it to `data-theme` for that one purpose.
|
|
20
|
-
*/
|
|
21
7
|
interface ItemActionContextValue {
|
|
22
8
|
type?: CubeItemProps['type'];
|
|
23
9
|
theme?: 'default' | 'danger' | 'success' | 'special' | (string & {});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { createContext, useContext } from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
|
|
@@ -7,7 +7,7 @@ const ItemActionContext = createContext(void 0);
|
|
|
7
7
|
function ItemActionProvider({ type, theme, disableActionsFocus, isDisabled, children }) {
|
|
8
8
|
return /* @__PURE__ */ jsx(ItemActionContext.Provider, {
|
|
9
9
|
value: {
|
|
10
|
-
type,
|
|
10
|
+
type: type === "item" || type === "outline" || type === "outline-2" || type === "header" || type === "card" ? "clear" : type,
|
|
11
11
|
theme,
|
|
12
12
|
disableActionsFocus,
|
|
13
13
|
isDisabled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemActionContext.js","names":[],"sources":["../../../src/components/actions/ItemActionContext.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext } from 'react';\n\nimport type { CubeItemProps } from '../content/Item/Item';\n\
|
|
1
|
+
{"version":3,"file":"ItemActionContext.js","names":[],"sources":["../../../src/components/actions/ItemActionContext.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext } from 'react';\n\nimport type { CubeItemProps } from '../content/Item/Item';\n\ninterface ItemActionContextValue {\n type?: CubeItemProps['type'];\n theme?: 'default' | 'danger' | 'success' | 'special' | (string & {});\n disableActionsFocus?: boolean;\n isDisabled?: boolean;\n}\n\nconst ItemActionContext = createContext<ItemActionContextValue | undefined>(\n undefined,\n);\n\nexport interface ItemActionProviderProps {\n type?: CubeItemProps['type'];\n theme?: 'default' | 'danger' | 'success' | 'special' | (string & {});\n disableActionsFocus?: boolean;\n isDisabled?: boolean;\n children: ReactNode;\n}\n\nexport function ItemActionProvider({\n type,\n theme,\n disableActionsFocus,\n isDisabled,\n children,\n}: ItemActionProviderProps) {\n return (\n <ItemActionContext.Provider\n value={{\n type:\n type === 'item' ||\n type === 'outline' ||\n type === 'outline-2' ||\n type === 'header' ||\n type === 'card'\n ? 'clear'\n : type,\n theme,\n disableActionsFocus,\n isDisabled,\n }}\n >\n {children}\n </ItemActionContext.Provider>\n );\n}\n\nexport function useItemActionContext(): ItemActionContextValue {\n return useContext(ItemActionContext) ?? {};\n}\n"],"mappings":";;;;;AAWA,MAAM,oBAAoB,cACxB,OACD;AAUD,SAAgB,mBAAmB,EACjC,MACA,OACA,qBACA,YACA,YAC0B;AAC1B,QACE,oBAAC,kBAAkB;EACjB,OAAO;GACL,MACE,SAAS,UACT,SAAS,aACT,SAAS,eACT,SAAS,YACT,SAAS,SACL,UACA;GACN;GACA;GACA;GACD;EAEA;GAC0B;;AAIjC,SAAgB,uBAA+C;AAC7D,QAAO,WAAW,kBAAkB,IAAI,EAAE"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { useDismissParentPopover } from "../../../utils/react/usePopoverSync.js";
|
|
5
5
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
6
6
|
import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
|
|
7
|
-
import { ITEM_RESTING_COLOR_VARIANTS, resolveItemVariant } from "../../../data/item-themes.js";
|
|
8
7
|
import { ItemActionProvider } from "../ItemActionContext.js";
|
|
9
8
|
import { useAction } from "../use-action.js";
|
|
10
9
|
import { ItemAction } from "../ItemAction/ItemAction.js";
|
|
@@ -25,52 +24,49 @@ const StyledItem = tasty(_Item, {
|
|
|
25
24
|
placeContent: "center stretch"
|
|
26
25
|
}
|
|
27
26
|
});
|
|
28
|
-
const ActionsWrapper = tasty({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
27
|
+
const ActionsWrapper = tasty({ styles: {
|
|
28
|
+
display: "grid",
|
|
29
|
+
position: "relative",
|
|
30
|
+
placeContent: "stretch",
|
|
31
|
+
placeItems: "stretch",
|
|
32
|
+
$size: {
|
|
33
|
+
"": "$size-md",
|
|
34
|
+
"size=xsmall": "$size-xs",
|
|
35
|
+
"size=small": "$size-sm",
|
|
36
|
+
"size=medium": "$size-md",
|
|
37
|
+
"size=large": "$size-lg",
|
|
38
|
+
"size=xlarge": "$size-xl"
|
|
39
|
+
},
|
|
40
|
+
Actions: {
|
|
41
|
+
$: ">",
|
|
42
|
+
position: "absolute",
|
|
43
|
+
inset: {
|
|
44
|
+
"": "1bw 1bw auto auto",
|
|
45
|
+
"type=card": "(1bw + .5x) (1bw + .5x) auto auto"
|
|
42
46
|
},
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
translate: {
|
|
65
|
-
"": "0 0",
|
|
66
|
-
"!actions-shown": ".5x 0"
|
|
67
|
-
},
|
|
68
|
-
transition: "theme, translate",
|
|
69
|
-
"$action-size": "min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))",
|
|
70
|
-
"$side-padding": "(($size - $action-size - 2bw) / 2)"
|
|
71
|
-
}
|
|
47
|
+
display: "flex",
|
|
48
|
+
gap: "1bw",
|
|
49
|
+
placeItems: "center",
|
|
50
|
+
placeContent: "center end",
|
|
51
|
+
pointerEvents: {
|
|
52
|
+
"": "auto",
|
|
53
|
+
"!actions-shown": "none"
|
|
54
|
+
},
|
|
55
|
+
padding: "0 $side-padding",
|
|
56
|
+
height: "min ($size - 2bw)",
|
|
57
|
+
opacity: {
|
|
58
|
+
"": 1,
|
|
59
|
+
"!actions-shown": 0
|
|
60
|
+
},
|
|
61
|
+
translate: {
|
|
62
|
+
"": "0 0",
|
|
63
|
+
"!actions-shown": ".5x 0"
|
|
64
|
+
},
|
|
65
|
+
transition: "theme, translate",
|
|
66
|
+
"$action-size": "min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))",
|
|
67
|
+
"$side-padding": "(($size - $action-size - 2bw) / 2)"
|
|
72
68
|
}
|
|
73
|
-
});
|
|
69
|
+
} });
|
|
74
70
|
const ItemButton = forwardRef(function ItemButton(allProps, ref) {
|
|
75
71
|
const { mods, to, htmlType, as, type = "item", theme = "default", onPress, onPressStart: _onPressStart, onPressEnd: _onPressEnd, onPressChange: _onPressChange, onPressUp: _onPressUp, actions, size = "medium", wrapperStyles, autoHideActions = false, disableActionsFocus = false, isDisabled, isLoading = false, ...rest } = allProps;
|
|
76
72
|
const finalIsDisabled = isDisabled === true || isLoading && isDisabled !== false;
|
|
@@ -146,7 +142,6 @@ const ItemButton = forwardRef(function ItemButton(allProps, ref) {
|
|
|
146
142
|
});
|
|
147
143
|
if (actions) return /* @__PURE__ */ jsxs(ActionsWrapper, {
|
|
148
144
|
...hoverProps,
|
|
149
|
-
variant: resolveItemVariant(theme, type),
|
|
150
145
|
"data-size": size,
|
|
151
146
|
"data-type": type,
|
|
152
147
|
"data-theme": theme,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemButton.js","names":["Item","mergeProps"],"sources":["../../../../src/components/actions/ItemButton/ItemButton.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport { Styles, tasty } from '@tenphi/tasty';\nimport {\n CSSProperties,\n forwardRef,\n ReactNode,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFocusWithin, useHover } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport {\n ITEM_RESTING_COLOR_VARIANTS,\n resolveItemVariant,\n} from '../../../data/item-themes';\nimport {\n mergeProps,\n mergeRefs,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { CubeItemProps, Item } from '../../content/Item';\nimport { ItemBadge } from '../../content/ItemBadge';\nimport { DisplayTransition } from '../../helpers';\nimport { CubeItemActionProps, ItemAction } from '../ItemAction';\nimport { ItemActionProvider } from '../ItemActionContext';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemButtonProps\n extends Omit<CubeItemProps, 'size'>,\n Omit<CubeUseActionProps, 'as'> {\n actions?: ReactNode;\n size?: Omit<CubeItemProps['size'], 'inline'>;\n wrapperStyles?: Styles;\n}\n\nconst StyledItem = tasty(Item, {\n as: 'button',\n type: 'item',\n theme: 'default',\n styles: {\n recipe: 'reset button',\n placeContent: 'center stretch',\n },\n});\n\nconst ActionsWrapper = tasty({\n // Actions default to the `current` type, which paints from the inherited\n // `currentcolor` — but they are rendered as a SIBLING of the button here, not\n // inside it, so without this they would inherit the page color instead of the\n // row's. Harmless on the default theme (the two match) and plainly wrong on\n // any other: a `special` row would hand its actions the page's dark text to\n // tint with, on a dark purple surface. The variant carries the row's resting\n // color down so `currentcolor` means the same thing it does inside an `Item`.\n variants: ITEM_RESTING_COLOR_VARIANTS,\n styles: {\n display: 'grid',\n position: 'relative',\n placeContent: 'stretch',\n placeItems: 'stretch',\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 },\n\n Actions: {\n $: '>',\n position: 'absolute',\n inset: {\n '': '1bw 1bw auto auto',\n 'type=card': '(1bw + .5x) (1bw + .5x) auto auto',\n },\n display: 'flex',\n gap: '1bw',\n placeItems: 'center',\n placeContent: 'center end',\n pointerEvents: {\n '': 'auto',\n '!actions-shown': 'none',\n },\n padding: '0 $side-padding',\n height: 'min ($size - 2bw)',\n opacity: {\n '': 1,\n '!actions-shown': 0,\n },\n translate: {\n '': '0 0',\n '!actions-shown': '.5x 0',\n },\n transition: 'theme, translate',\n\n // Size for the action buttons\n '$action-size': 'min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))',\n // Side padding for the button\n '$side-padding': '(($size - $action-size - 2bw) / 2)',\n },\n },\n});\n\nconst ItemButton = forwardRef(function ItemButton(\n allProps: CubeItemButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n mods,\n to,\n htmlType,\n as,\n type = 'item',\n theme = 'default',\n onPress,\n // Extract react-aria press callbacks to prevent them from leaking to DOM via rest.\n // These are handled by useButton inside useAction.\n onPressStart: _onPressStart,\n onPressEnd: _onPressEnd,\n onPressChange: _onPressChange,\n onPressUp: _onPressUp,\n actions,\n size = 'medium',\n wrapperStyles,\n autoHideActions = false,\n disableActionsFocus = false,\n isDisabled,\n isLoading = false,\n ...rest\n } = allProps as CubeItemButtonProps & {\n as?: 'a' | 'button' | 'div' | 'span';\n };\n\n // Loading state makes the component disabled (same logic as Item)\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n const actionsRef = useRef<HTMLDivElement>(null);\n const [actionsWidth, setActionsWidth] = useState(0);\n const [areActionsVisible, setAreActionsVisible] = useState(false);\n const [areActionsShown, setAreActionsShown] = useState(false);\n\n useLayoutEffect(() => {\n if (actions && actionsRef.current) {\n const width = Math.round(actionsRef.current.offsetWidth);\n if (width !== actionsWidth) {\n setActionsWidth(width);\n }\n }\n }, [actions, areActionsVisible]);\n\n const [isFocusWithin, setIsFocusWithin] = useState(false);\n const [hasPressed, setHasPressed] = useState(false);\n const { hoverProps, isHovered } = useHover({});\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange: setIsFocusWithin,\n });\n\n // Watch for data-pressed attribute on any descendant element\n useLayoutEffect(() => {\n const actionsEl = actionsRef.current;\n\n if (!actionsEl || !autoHideActions) return;\n\n const checkPressed = () => {\n setHasPressed(actionsEl.querySelector('[data-pressed]') !== null);\n };\n\n const observer = new MutationObserver(checkPressed);\n\n observer.observe(actionsEl, {\n attributes: true,\n attributeFilter: ['data-pressed'],\n subtree: true,\n });\n\n checkPressed();\n\n return () => observer.disconnect();\n }, [areActionsVisible, autoHideActions]);\n\n const shouldShowActions =\n isHovered || isFocusWithin || hasPressed || !autoHideActions;\n\n // Default: pressing an ItemButton inside an open popover closes that\n // popover. Opt-outs: `data-popover-trigger` on self (applied by\n // FilterPicker / Picker / Select / MenuTrigger for their own triggers) and\n // `data-popover-keep` on self or any ancestor. Modals don't subscribe.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n onPress?.(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]')) return;\n dismissParentPopover(el);\n });\n\n const { actionProps } = useAction(\n {\n ...(allProps as any),\n htmlType,\n to,\n as,\n mods,\n isDisabled: finalIsDisabled,\n onPress: wrappedOnPress,\n },\n ref,\n );\n\n const finalMods = useMemo(() => {\n return shouldShowActions ? { ...mods, 'actions-shown': true } : mods;\n }, [mods, shouldShowActions]);\n\n // Merge the useAction-supplied ref with our internal ref so the dismiss\n // wrapper can read the rendered DOM node at press time.\n const combinedRef = useMemo(\n () => mergeRefs(actionProps.ref as any, buttonElementRef),\n [actionProps.ref],\n );\n\n const button = (\n <StyledItem\n insideWrapper={!!actions}\n showActions={shouldShowActions}\n actions={actions ? true : undefined}\n {...(mergeProps(rest, actionProps) as any)}\n ref={combinedRef}\n data-popover-dismiss=\"\"\n htmlType={actionProps.type}\n type={type}\n theme={theme}\n size={size}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n );\n\n if (actions) {\n return (\n <ActionsWrapper\n {...hoverProps}\n // The same resolver `Item` uses, so the wrapper cannot land on a\n // different variant than the row it wraps.\n variant={resolveItemVariant(theme, type)}\n data-size={size}\n data-type={type}\n data-theme={theme}\n mods={finalMods}\n styles={wrapperStyles}\n style={\n {\n '--actions-width':\n areActionsVisible || !autoHideActions\n ? `${actionsWidth}px`\n : '0px',\n ...(typeof size === 'number' && { '--size': `${size}px` }),\n } as CSSProperties\n }\n >\n {button}\n <ItemActionProvider\n type={type}\n theme={theme}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {autoHideActions ? (\n <DisplayTransition\n exposeUnmounted\n isShown={shouldShowActions}\n onPhaseChange={(phase) => {\n setAreActionsVisible(phase !== 'unmounted');\n }}\n onToggle={(isShown) => {\n setAreActionsShown(isShown);\n }}\n >\n {({ ref: transitionRef }) => {\n return (\n <div\n {...focusWithinProps}\n ref={(node: any) => {\n actionsRef.current = node;\n transitionRef(node);\n }}\n data-element=\"Actions\"\n >\n {actions}\n </div>\n );\n }}\n </DisplayTransition>\n ) : (\n <div ref={actionsRef} data-element=\"Actions\">\n {actions}\n </div>\n )}\n </ItemActionProvider>\n </ActionsWrapper>\n );\n }\n\n return button;\n});\n\nconst _ItemButton = Object.assign(ItemButton, {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _ItemButton as ItemButton };\nexport type {\n CubeItemButtonProps as ItemButtonProps,\n CubeItemActionProps as ItemActionProps,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ItemButton.js","names":["Item","mergeProps"],"sources":["../../../../src/components/actions/ItemButton/ItemButton.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport { Styles, tasty } from '@tenphi/tasty';\nimport {\n CSSProperties,\n forwardRef,\n ReactNode,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFocusWithin, useHover } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport {\n mergeProps,\n mergeRefs,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { CubeItemProps, Item } from '../../content/Item';\nimport { ItemBadge } from '../../content/ItemBadge';\nimport { DisplayTransition } from '../../helpers';\nimport { CubeItemActionProps, ItemAction } from '../ItemAction';\nimport { ItemActionProvider } from '../ItemActionContext';\nimport { CubeUseActionProps, useAction } from '../use-action';\n\nexport interface CubeItemButtonProps\n extends Omit<CubeItemProps, 'size'>,\n Omit<CubeUseActionProps, 'as'> {\n actions?: ReactNode;\n size?: Omit<CubeItemProps['size'], 'inline'>;\n wrapperStyles?: Styles;\n}\n\nconst StyledItem = tasty(Item, {\n as: 'button',\n type: 'item',\n theme: 'default',\n styles: {\n recipe: 'reset button',\n placeContent: 'center stretch',\n },\n});\n\nconst ActionsWrapper = tasty({\n styles: {\n display: 'grid',\n position: 'relative',\n placeContent: 'stretch',\n placeItems: 'stretch',\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 },\n\n Actions: {\n $: '>',\n position: 'absolute',\n inset: {\n '': '1bw 1bw auto auto',\n 'type=card': '(1bw + .5x) (1bw + .5x) auto auto',\n },\n display: 'flex',\n gap: '1bw',\n placeItems: 'center',\n placeContent: 'center end',\n pointerEvents: {\n '': 'auto',\n '!actions-shown': 'none',\n },\n padding: '0 $side-padding',\n height: 'min ($size - 2bw)',\n opacity: {\n '': 1,\n '!actions-shown': 0,\n },\n translate: {\n '': '0 0',\n '!actions-shown': '.5x 0',\n },\n transition: 'theme, translate',\n\n // Size for the action buttons\n '$action-size': 'min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))',\n // Side padding for the button\n '$side-padding': '(($size - $action-size - 2bw) / 2)',\n },\n },\n});\n\nconst ItemButton = forwardRef(function ItemButton(\n allProps: CubeItemButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const {\n mods,\n to,\n htmlType,\n as,\n type = 'item',\n theme = 'default',\n onPress,\n // Extract react-aria press callbacks to prevent them from leaking to DOM via rest.\n // These are handled by useButton inside useAction.\n onPressStart: _onPressStart,\n onPressEnd: _onPressEnd,\n onPressChange: _onPressChange,\n onPressUp: _onPressUp,\n actions,\n size = 'medium',\n wrapperStyles,\n autoHideActions = false,\n disableActionsFocus = false,\n isDisabled,\n isLoading = false,\n ...rest\n } = allProps as CubeItemButtonProps & {\n as?: 'a' | 'button' | 'div' | 'span';\n };\n\n // Loading state makes the component disabled (same logic as Item)\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n const actionsRef = useRef<HTMLDivElement>(null);\n const [actionsWidth, setActionsWidth] = useState(0);\n const [areActionsVisible, setAreActionsVisible] = useState(false);\n const [areActionsShown, setAreActionsShown] = useState(false);\n\n useLayoutEffect(() => {\n if (actions && actionsRef.current) {\n const width = Math.round(actionsRef.current.offsetWidth);\n if (width !== actionsWidth) {\n setActionsWidth(width);\n }\n }\n }, [actions, areActionsVisible]);\n\n const [isFocusWithin, setIsFocusWithin] = useState(false);\n const [hasPressed, setHasPressed] = useState(false);\n const { hoverProps, isHovered } = useHover({});\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange: setIsFocusWithin,\n });\n\n // Watch for data-pressed attribute on any descendant element\n useLayoutEffect(() => {\n const actionsEl = actionsRef.current;\n\n if (!actionsEl || !autoHideActions) return;\n\n const checkPressed = () => {\n setHasPressed(actionsEl.querySelector('[data-pressed]') !== null);\n };\n\n const observer = new MutationObserver(checkPressed);\n\n observer.observe(actionsEl, {\n attributes: true,\n attributeFilter: ['data-pressed'],\n subtree: true,\n });\n\n checkPressed();\n\n return () => observer.disconnect();\n }, [areActionsVisible, autoHideActions]);\n\n const shouldShowActions =\n isHovered || isFocusWithin || hasPressed || !autoHideActions;\n\n // Default: pressing an ItemButton inside an open popover closes that\n // popover. Opt-outs: `data-popover-trigger` on self (applied by\n // FilterPicker / Picker / Select / MenuTrigger for their own triggers) and\n // `data-popover-keep` on self or any ancestor. Modals don't subscribe.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n onPress?.(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]')) return;\n dismissParentPopover(el);\n });\n\n const { actionProps } = useAction(\n {\n ...(allProps as any),\n htmlType,\n to,\n as,\n mods,\n isDisabled: finalIsDisabled,\n onPress: wrappedOnPress,\n },\n ref,\n );\n\n const finalMods = useMemo(() => {\n return shouldShowActions ? { ...mods, 'actions-shown': true } : mods;\n }, [mods, shouldShowActions]);\n\n // Merge the useAction-supplied ref with our internal ref so the dismiss\n // wrapper can read the rendered DOM node at press time.\n const combinedRef = useMemo(\n () => mergeRefs(actionProps.ref as any, buttonElementRef),\n [actionProps.ref],\n );\n\n const button = (\n <StyledItem\n insideWrapper={!!actions}\n showActions={shouldShowActions}\n actions={actions ? true : undefined}\n {...(mergeProps(rest, actionProps) as any)}\n ref={combinedRef}\n data-popover-dismiss=\"\"\n htmlType={actionProps.type}\n type={type}\n theme={theme}\n size={size}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n );\n\n if (actions) {\n return (\n <ActionsWrapper\n {...hoverProps}\n data-size={size}\n data-type={type}\n data-theme={theme}\n mods={finalMods}\n styles={wrapperStyles}\n style={\n {\n '--actions-width':\n areActionsVisible || !autoHideActions\n ? `${actionsWidth}px`\n : '0px',\n ...(typeof size === 'number' && { '--size': `${size}px` }),\n } as CSSProperties\n }\n >\n {button}\n <ItemActionProvider\n type={type}\n theme={theme}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {autoHideActions ? (\n <DisplayTransition\n exposeUnmounted\n isShown={shouldShowActions}\n onPhaseChange={(phase) => {\n setAreActionsVisible(phase !== 'unmounted');\n }}\n onToggle={(isShown) => {\n setAreActionsShown(isShown);\n }}\n >\n {({ ref: transitionRef }) => {\n return (\n <div\n {...focusWithinProps}\n ref={(node: any) => {\n actionsRef.current = node;\n transitionRef(node);\n }}\n data-element=\"Actions\"\n >\n {actions}\n </div>\n );\n }}\n </DisplayTransition>\n ) : (\n <div ref={actionsRef} data-element=\"Actions\">\n {actions}\n </div>\n )}\n </ItemActionProvider>\n </ActionsWrapper>\n );\n }\n\n return button;\n});\n\nconst _ItemButton = Object.assign(ItemButton, {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _ItemButton as ItemButton };\nexport type {\n CubeItemButtonProps as ItemButtonProps,\n CubeItemActionProps as ItemActionProps,\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { Button } from "../Button/Button.js";
|
|
3
3
|
import { forwardRef } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { _CollectionItem } from "../../CollectionItem.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { filterCollectionItemProps } from "../../CollectionItem.js";
|
|
4
4
|
import { _Item } from "../../content/Item/Item.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-34e9391 | Cube Dev Team */
|
|
2
2
|
import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
|
|
3
3
|
import { MenuItem } from "./MenuItem.js";
|
|
4
4
|
import { StyledMenu, StyledSection, StyledSectionHeading } from "./styled.js";
|