@cube-dev/ui-kit 0.113.1 → 0.114.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/CHANGELOG.md +10 -0
- package/es/_internal/hooks/index.js +1 -1
- package/es/_internal/hooks/use-chained-callback.js +1 -1
- package/es/_internal/hooks/use-debounced-value.js +1 -1
- package/es/_internal/hooks/use-deprecation-warning.js +1 -1
- package/es/_internal/hooks/use-effect-once.js +1 -1
- package/es/_internal/hooks/use-event.js +1 -1
- package/es/_internal/hooks/use-is-first-render.js +1 -1
- package/es/_internal/hooks/use-sync-ref.js +1 -1
- package/es/_internal/hooks/use-timer/index.js +1 -1
- package/es/_internal/hooks/use-timer/timer.js +1 -1
- package/es/_internal/hooks/use-timer/use-timer.js +1 -1
- package/es/_internal/hooks/use-update-effect.js +1 -1
- package/es/_internal/hooks/use-warn.js +1 -1
- package/es/_internal/index.js +1 -1
- package/es/components/Block.js +1 -1
- package/es/components/CollectionItem.js +1 -1
- package/es/components/GlobalStyles.js +1 -1
- package/es/components/GridProvider.js +1 -1
- package/es/components/HiddenInput.js +1 -1
- package/es/components/OpenTrasition.js +1 -1
- package/es/components/Root.js +3 -4
- package/es/components/actions/Action/Action.js +1 -1
- package/es/components/actions/Banner/Banner.js +1 -1
- package/es/components/actions/Banner/index.js +1 -1
- package/es/components/actions/Button/Button.js +1 -1
- package/es/components/actions/Button/index.js +1 -1
- package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/es/components/actions/CommandMenu/index.js +1 -1
- package/es/components/actions/CommandMenu/styled.js +1 -1
- package/es/components/actions/ItemAction/ItemAction.js +5 -1
- package/es/components/actions/ItemAction/index.js +1 -1
- package/es/components/actions/ItemActionContext.js +1 -1
- package/es/components/actions/ItemButton/ItemButton.js +1 -1
- package/es/components/actions/ItemButton/index.js +1 -1
- package/es/components/actions/Link/Link.js +1 -1
- package/es/components/actions/Menu/Menu.js +1 -1
- package/es/components/actions/Menu/MenuItem.js +1 -1
- package/es/components/actions/Menu/MenuSection.js +1 -1
- package/es/components/actions/Menu/MenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/es/components/actions/Menu/context.js +1 -1
- package/es/components/actions/Menu/index.js +1 -1
- package/es/components/actions/Menu/styled.js +1 -1
- package/es/components/actions/index.js +1 -1
- package/es/components/actions/use-action.js +1 -1
- package/es/components/actions/use-anchored-menu.js +1 -1
- package/es/components/actions/use-context-menu.js +1 -1
- package/es/components/content/ActiveZone/ActiveZone.js +1 -1
- package/es/components/content/Alert/Alert.js +1 -1
- package/es/components/content/Alert/index.js +1 -1
- package/es/components/content/Alert/types.js +1 -1
- package/es/components/content/Alert/use-alert.js +1 -1
- package/es/components/content/Avatar/Avatar.js +1 -1
- package/es/components/content/Badge/Badge.js +1 -1
- package/es/components/content/Card/Card.js +1 -1
- package/es/components/content/Content.js +1 -1
- package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/es/components/content/CopyPasteBlock/index.js +1 -1
- package/es/components/content/CopySnippet/CopySnippet.js +1 -1
- package/es/components/content/CopySnippet/index.js +1 -1
- package/es/components/content/Disclosure/Disclosure.js +1 -1
- package/es/components/content/Disclosure/index.js +1 -1
- package/es/components/content/Divider.js +1 -1
- package/es/components/content/Footer.js +1 -1
- package/es/components/content/Header.js +1 -1
- package/es/components/content/HotKeys/HotKeys.js +1 -1
- package/es/components/content/HotKeys/index.js +1 -1
- package/es/components/content/Item/Item.js +1 -1
- package/es/components/content/Item/index.js +1 -1
- package/es/components/content/ItemBadge/ItemBadge.js +1 -1
- package/es/components/content/ItemBadge/index.js +1 -1
- package/es/components/content/Layout/GridLayout.js +1 -1
- package/es/components/content/Layout/Layout.js +1 -1
- package/es/components/content/Layout/LayoutBlock.js +1 -1
- package/es/components/content/Layout/LayoutCenter.js +1 -1
- package/es/components/content/Layout/LayoutContainer.js +1 -1
- package/es/components/content/Layout/LayoutContent.js +1 -1
- package/es/components/content/Layout/LayoutContext.js +1 -1
- package/es/components/content/Layout/LayoutFlex.js +1 -1
- package/es/components/content/Layout/LayoutFooter.js +1 -1
- package/es/components/content/Layout/LayoutGrid.js +1 -1
- package/es/components/content/Layout/LayoutHeader.js +1 -1
- package/es/components/content/Layout/LayoutPane.js +1 -1
- package/es/components/content/Layout/LayoutPanel.js +1 -1
- package/es/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/es/components/content/Layout/LayoutToolbar.js +1 -1
- package/es/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/es/components/content/Layout/index.js +1 -1
- package/es/components/content/Layout/utils.js +1 -1
- package/es/components/content/List/SectionHeading.js +1 -1
- package/es/components/content/List/index.js +1 -1
- package/es/components/content/Paragraph.js +1 -1
- package/es/components/content/Placeholder/Placeholder.js +1 -1
- package/es/components/content/PrismCode/PrismCode.js +1 -1
- package/es/components/content/PrismCode/prismSetup.js +1 -1
- package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/es/components/content/Result/Result.js +1 -1
- package/es/components/content/Skeleton/Skeleton.js +1 -1
- package/es/components/content/Tag/Tag.js +1 -1
- package/es/components/content/Text.js +1 -1
- package/es/components/content/TextItem/TextItem.js +1 -1
- package/es/components/content/TextItem/index.js +1 -1
- package/es/components/content/Title.js +1 -1
- package/es/components/content/highlightText.js +1 -1
- package/es/components/content/use-auto-tooltip.js +1 -1
- package/es/components/fields/Checkbox/Checkbox.js +1 -1
- package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/es/components/fields/Checkbox/context.js +1 -1
- package/es/components/fields/Checkbox/index.js +1 -1
- package/es/components/fields/ComboBox/ComboBox.js +1 -1
- package/es/components/fields/ComboBox/index.js +1 -1
- package/es/components/fields/DatePicker/DateInput.js +1 -1
- package/es/components/fields/DatePicker/DateInputBase.js +1 -1
- package/es/components/fields/DatePicker/DatePicker.js +1 -1
- package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/es/components/fields/DatePicker/TimeInput.js +1 -1
- package/es/components/fields/DatePicker/index.js +1 -1
- package/es/components/fields/DatePicker/intl.js +1 -1
- package/es/components/fields/DatePicker/parseDate.js +1 -1
- package/es/components/fields/DatePicker/props.js +1 -1
- package/es/components/fields/DatePicker/types.js +1 -1
- package/es/components/fields/DatePicker/utils.js +1 -1
- package/es/components/fields/FileInput/FileInput.js +1 -1
- package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/es/components/fields/FilterListBox/index.js +1 -1
- package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/es/components/fields/FilterPicker/index.js +1 -1
- package/es/components/fields/Input/Input.js +1 -1
- package/es/components/fields/Input/index.js +1 -1
- package/es/components/fields/ListBox/ListBox.js +1 -1
- package/es/components/fields/ListBox/index.js +1 -1
- package/es/components/fields/NumberInput/NumberInput.js +1 -1
- package/es/components/fields/NumberInput/StepButton.js +1 -1
- package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/es/components/fields/Picker/Picker.js +1 -1
- package/es/components/fields/Picker/index.js +1 -1
- package/es/components/fields/RadioGroup/Radio.js +1 -1
- package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/es/components/fields/RadioGroup/context.js +1 -1
- package/es/components/fields/RadioGroup/index.js +1 -1
- package/es/components/fields/SearchInput/SearchInput.js +1 -1
- package/es/components/fields/SearchInput/index.js +1 -1
- package/es/components/fields/Select/Select.js +1 -1
- package/es/components/fields/Select/index.js +1 -1
- package/es/components/fields/Slider/Gradation.js +1 -1
- package/es/components/fields/Slider/Header.js +1 -1
- package/es/components/fields/Slider/HueSlider.js +1 -1
- package/es/components/fields/Slider/RangeSlider.js +1 -1
- package/es/components/fields/Slider/Slider.js +1 -1
- package/es/components/fields/Slider/SliderBase.js +1 -1
- package/es/components/fields/Slider/SliderInput.js +1 -1
- package/es/components/fields/Slider/SliderThumb.js +1 -1
- package/es/components/fields/Slider/SliderTrack.js +1 -1
- package/es/components/fields/Slider/elements.js +1 -1
- package/es/components/fields/Slider/index.js +1 -1
- package/es/components/fields/Slider/types.js +1 -1
- package/es/components/fields/Switch/Switch.js +1 -1
- package/es/components/fields/Switch/index.js +1 -1
- package/es/components/fields/TextArea/TextArea.js +1 -1
- package/es/components/fields/TextArea/index.js +1 -1
- package/es/components/fields/TextInput/TextInput.js +1 -1
- package/es/components/fields/TextInput/TextInputBase.js +1 -1
- package/es/components/fields/TextInput/index.js +1 -1
- package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/es/components/fields/TextInputMapper/index.js +1 -1
- package/es/components/fields/index.js +1 -1
- package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/es/components/form/FieldWrapper/index.js +1 -1
- package/es/components/form/FieldWrapper/types.js +1 -1
- package/es/components/form/Form/Field.js +1 -1
- package/es/components/form/Form/Form.js +1 -1
- package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/es/components/form/Form/ResetButton/index.js +1 -1
- package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/es/components/form/Form/SubmitButton/index.js +1 -1
- package/es/components/form/Form/SubmitError.js +1 -1
- package/es/components/form/Form/index.js +1 -1
- package/es/components/form/Form/types.js +1 -1
- package/es/components/form/Form/use-field/index.js +1 -1
- package/es/components/form/Form/use-field/types.js +1 -1
- package/es/components/form/Form/use-field/use-field-props.js +1 -1
- package/es/components/form/Form/use-field/use-field.js +1 -1
- package/es/components/form/Form/use-form.js +1 -1
- package/es/components/form/Form/validation.js +1 -1
- package/es/components/form/Label.js +1 -1
- package/es/components/form/index.js +1 -1
- package/es/components/form/wrapper.js +1 -1
- package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/es/components/helpers/DisplayTransition/index.js +1 -1
- package/es/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/es/components/helpers/index.js +1 -1
- package/es/components/layout/Flex.js +1 -1
- package/es/components/layout/Flow.js +1 -1
- package/es/components/layout/Grid.js +1 -1
- package/es/components/layout/Panel.js +1 -1
- package/es/components/layout/Prefix.js +1 -1
- package/es/components/layout/ResizablePanel.js +1 -1
- package/es/components/layout/Space.js +1 -1
- package/es/components/layout/Suffix.js +1 -1
- package/es/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/es/components/navigation/Tabs/EditableTitle.js +1 -1
- package/es/components/navigation/Tabs/TabButton.js +1 -1
- package/es/components/navigation/Tabs/TabDropIndicator.js +28 -2
- package/es/components/navigation/Tabs/TabPanel.js +1 -1
- package/es/components/navigation/Tabs/TabPicker.js +1 -1
- package/es/components/navigation/Tabs/Tabs.js +1 -1
- package/es/components/navigation/Tabs/TabsAction.js +1 -1
- package/es/components/navigation/Tabs/TabsContext.js +1 -1
- package/es/components/navigation/Tabs/index.js +1 -1
- package/es/components/navigation/Tabs/styled.js +1 -1
- package/es/components/navigation/Tabs/types.js +1 -1
- package/es/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/es/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/es/components/navigation/index.js +1 -1
- package/es/components/organisms/FileTabs/FileTabs.js +1 -1
- package/es/components/organisms/StatsCard/StatsCard.js +1 -1
- package/es/components/other/Calendar/Calendar.js +1 -1
- package/es/components/other/Calendar/CalendarCell.js +1 -1
- package/es/components/other/Calendar/CalendarGrid.js +1 -1
- package/es/components/other/Calendar/RangeCalendar.js +1 -1
- package/es/components/other/CloudLogo/CloudLogo.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/es/components/overlays/AlertDialog/index.js +1 -1
- package/es/components/overlays/AlertDialog/types.js +1 -1
- package/es/components/overlays/Dialog/Dialog.js +1 -1
- package/es/components/overlays/Dialog/DialogContainer.js +1 -1
- package/es/components/overlays/Dialog/DialogForm.js +1 -1
- package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/es/components/overlays/Dialog/context.js +1 -1
- package/es/components/overlays/Dialog/index.js +1 -1
- package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/es/components/overlays/Modal/Modal.js +1 -1
- package/es/components/overlays/Modal/OpenTransition.js +1 -1
- package/es/components/overlays/Modal/Overlay.js +1 -1
- package/es/components/overlays/Modal/Popover.js +1 -1
- package/es/components/overlays/Modal/Tray.js +1 -1
- package/es/components/overlays/Modal/Underlay.js +1 -1
- package/es/components/overlays/Modal/index.js +1 -1
- package/es/components/overlays/Modal/types.js +1 -1
- package/es/components/overlays/Notifications/Notification.js +89 -0
- package/es/components/overlays/Notifications/NotificationAction.js +82 -0
- package/es/components/overlays/Notifications/NotificationCard.js +87 -0
- package/es/components/overlays/Notifications/NotificationContext.js +44 -0
- package/es/components/overlays/Notifications/NotificationItem.js +63 -0
- package/es/components/overlays/Notifications/OverlayContainer.js +346 -0
- package/es/components/overlays/Notifications/OverlayProvider.js +69 -0
- package/es/components/overlays/Notifications/PersistentNotificationsList.js +120 -0
- package/es/components/overlays/Notifications/format-relative-time.js +55 -0
- package/es/components/overlays/Notifications/index.js +51 -0
- package/es/components/overlays/{NewNotifications/NotificationsList → Notifications}/types.js +1 -1
- package/es/components/overlays/Notifications/use-notification-state.js +239 -0
- package/es/components/overlays/Notifications/use-notifications.js +175 -0
- package/es/components/overlays/Notifications/use-overlay-timers.js +141 -0
- package/es/components/overlays/Notifications/use-persistent-notifications.js +63 -0
- package/es/components/overlays/Notifications/use-persistent-state.js +85 -0
- package/es/components/overlays/Notifications/use-toast-state.js +143 -0
- package/es/components/overlays/OverlayWrapper.js +1 -1
- package/es/components/overlays/Toast/ToastItem.js +6 -3
- package/es/components/overlays/Toast/ToastProvider.js +6 -352
- package/es/components/overlays/Toast/index.js +3 -8
- package/es/components/overlays/Toast/types.js +1 -1
- package/es/components/overlays/Toast/useProgressToast.js +2 -5
- package/es/components/overlays/Toast/useToast.js +1 -7
- package/es/components/overlays/Tooltip/Tooltip.js +1 -1
- package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/es/components/overlays/Tooltip/context.js +1 -1
- package/es/components/overlays/Tooltip/index.js +1 -1
- package/es/components/portal/Portal.js +1 -1
- package/es/components/portal/PortalProvider.js +1 -1
- package/es/components/portal/index.js +1 -1
- package/es/components/portal/types.js +1 -1
- package/es/components/portal/usePortal.js +1 -1
- package/es/components/shared/InvalidIcon.js +1 -1
- package/es/components/shared/ValidIcon.js +1 -1
- package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/es/components/status/LoadingAnimation/index.js +1 -1
- package/es/components/status/Spin/Cube.js +1 -1
- package/es/components/status/Spin/InternalSpinner.js +1 -1
- package/es/components/status/Spin/Spin.js +1 -1
- package/es/components/status/Spin/SpinsContainer.js +1 -1
- package/es/components/status/Spin/index.js +1 -1
- package/es/components/status/Spin/types.js +1 -1
- package/es/components/status/index.js +1 -1
- package/es/data/item-themes.js +1 -1
- package/es/data/themes.js +1 -1
- package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/es/icons/AdjustmentsIcon.js +1 -1
- package/es/icons/AiIcon.js +1 -1
- package/es/icons/AreaChartIcon.js +1 -1
- package/es/icons/BackwardIcon.js +1 -1
- package/es/icons/BarChartIcon.js +1 -1
- package/es/icons/BellFilledIcon.js +1 -1
- package/es/icons/BellIcon.js +1 -1
- package/es/icons/BooleanIcon.js +1 -1
- package/es/icons/CalendarEditIcon.js +1 -1
- package/es/icons/CalendarIcon.js +1 -1
- package/es/icons/CaretDownIcon.js +1 -1
- package/es/icons/CaretUpIcon.js +1 -1
- package/es/icons/ChartAreaStackedIcon.js +1 -1
- package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarGroupedIcon.js +1 -1
- package/es/icons/ChartBarHorizontalIcon.js +1 -1
- package/es/icons/ChartBarLineIcon.js +1 -1
- package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBoxPlot2Icon.js +1 -1
- package/es/icons/ChartBoxPlotIcon.js +1 -1
- package/es/icons/ChartBubbleIcon.js +1 -1
- package/es/icons/ChartDonut2Icon.js +1 -1
- package/es/icons/ChartFunnelIcon.js +1 -1
- package/es/icons/ChartHeatmapIcon.js +1 -1
- package/es/icons/ChartKPIIcon.js +1 -1
- package/es/icons/ChartPie2Icon.js +1 -1
- package/es/icons/ChartScatterIcon.js +1 -1
- package/es/icons/CheckCircleFilledIcon.js +1 -1
- package/es/icons/CheckCircleIcon.js +1 -1
- package/es/icons/CheckIcon.js +1 -1
- package/es/icons/CircleFilledIcon.js +1 -1
- package/es/icons/ClearIcon.js +1 -1
- package/es/icons/CloseCircleFilledIcon.js +1 -1
- package/es/icons/CloseCircleIcon.js +1 -1
- package/es/icons/CloseIcon.js +1 -1
- package/es/icons/CodeIcon.js +1 -1
- package/es/icons/ColumnTotalIcon.js +1 -1
- package/es/icons/CopyIcon.js +1 -1
- package/es/icons/CountIcon.js +1 -1
- package/es/icons/CubeIcon.js +1 -1
- package/es/icons/CubePauseIcon.js +1 -1
- package/es/icons/CubePlayIcon.js +1 -1
- package/es/icons/CurrencyDollarIcon.js +1 -1
- package/es/icons/DangerIcon.js +1 -1
- package/es/icons/DashboardIcon.js +1 -1
- package/es/icons/DatabaseIcon.js +1 -1
- package/es/icons/DecimalDecreaseIcon.js +1 -1
- package/es/icons/DecimalIncreaseIcon.js +1 -1
- package/es/icons/DirectionIcon.js +1 -1
- package/es/icons/DonutIcon.js +1 -1
- package/es/icons/DownIcon.js +1 -1
- package/es/icons/EditIcon.js +1 -1
- package/es/icons/ExclamationCircleFilledIcon.js +1 -1
- package/es/icons/ExclamationCircleIcon.js +1 -1
- package/es/icons/ExclamationIcon.js +1 -1
- package/es/icons/EyeIcon.js +1 -1
- package/es/icons/EyeInvisibleIcon.js +1 -1
- package/es/icons/FilterIcon.js +1 -1
- package/es/icons/FolderFilledIcon.js +1 -1
- package/es/icons/FolderIcon.js +1 -1
- package/es/icons/FolderOpenFilledIcon.js +1 -1
- package/es/icons/FolderOpenIcon.js +1 -1
- package/es/icons/ForwardIcon.js +1 -1
- package/es/icons/HierarchyIcon.js +1 -1
- package/es/icons/HierarchyOpenIcon.js +1 -1
- package/es/icons/Icon.js +1 -1
- package/es/icons/InfoCircleIcon.js +1 -1
- package/es/icons/InfoIcon.js +1 -1
- package/es/icons/KeyIcon.js +1 -1
- package/es/icons/LeftIcon.js +1 -1
- package/es/icons/LineChartIcon.js +1 -1
- package/es/icons/LoadingIcon.js +1 -1
- package/es/icons/LockFilledIcon.js +1 -1
- package/es/icons/LockIcon.js +1 -1
- package/es/icons/MoreIcon.js +1 -1
- package/es/icons/NotAllowedIcon.js +1 -1
- package/es/icons/Number123Icon.js +1 -1
- package/es/icons/NumberIcon.js +1 -1
- package/es/icons/PauseCircleFilledIcon.js +1 -1
- package/es/icons/PauseCircleIcon.js +1 -1
- package/es/icons/PauseIcon.js +1 -1
- package/es/icons/PercentageIcon.js +1 -1
- package/es/icons/PieChartIcon.js +1 -1
- package/es/icons/PlayCircleIcon.js +1 -1
- package/es/icons/PlayIcon.js +1 -1
- package/es/icons/PlusIcon.js +1 -1
- package/es/icons/ProgressBarIcon.js +1 -1
- package/es/icons/ReloadIcon.js +1 -1
- package/es/icons/ReportIcon.js +1 -1
- package/es/icons/ReturnIcon.js +1 -1
- package/es/icons/RightIcon.js +1 -1
- package/es/icons/RowTotalsIcon.js +1 -1
- package/es/icons/SchemeIcon.js +1 -1
- package/es/icons/SearchIcon.js +1 -1
- package/es/icons/SemanticQueryIcon.js +1 -1
- package/es/icons/SettingsIcon.js +1 -1
- package/es/icons/ShieldFilledIcon.js +1 -1
- package/es/icons/ShieldIcon.js +1 -1
- package/es/icons/SlashIcon.js +1 -1
- package/es/icons/SparklesIcon.js +1 -1
- package/es/icons/SqlIcon.js +1 -1
- package/es/icons/StatsIcon.js +1 -1
- package/es/icons/StopIcon.js +1 -1
- package/es/icons/StringIcon.js +1 -1
- package/es/icons/SubtotalsIcon.js +1 -1
- package/es/icons/SwitchIcon.js +1 -1
- package/es/icons/TableIcon.js +1 -1
- package/es/icons/ThumbsDownIcon.js +1 -1
- package/es/icons/ThumbsUpIcon.js +1 -1
- package/es/icons/ThunderboltCrossedIcon.js +1 -1
- package/es/icons/ThunderboltFilledIcon.js +1 -1
- package/es/icons/ThunderboltIcon.js +1 -1
- package/es/icons/TimeIcon.js +1 -1
- package/es/icons/TrashIcon.js +1 -1
- package/es/icons/UnlockIcon.js +1 -1
- package/es/icons/UpIcon.js +1 -1
- package/es/icons/UserGroupIcon.js +1 -1
- package/es/icons/UserIcon.js +1 -1
- package/es/icons/UserLockIcon.js +1 -1
- package/es/icons/ViewIcon.js +1 -1
- package/es/icons/WarningFilledIcon.js +1 -1
- package/es/icons/WarningIcon.js +1 -1
- package/es/icons/index.js +1 -1
- package/es/icons/wrap-icon.js +1 -1
- package/es/index.js +2 -4
- package/es/provider.js +1 -1
- package/es/providers/TrackingProvider.js +1 -1
- package/es/providers/navigation.types.js +1 -1
- package/es/providers/navigationAdapter.default.js +1 -1
- package/es/shared/form.js +1 -1
- package/es/shared/index.js +1 -1
- package/es/stories/Form.legacy-stories.js +1 -1
- package/es/stories/FormFieldArgs.js +1 -1
- package/es/stories/SimpleLayout.stories.js +1 -1
- package/es/stories/Tasty.stories.js +1 -1
- package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
- package/es/stories/components/DialogFormApp.js +1 -1
- package/es/stories/components/StyledButton.js +1 -1
- package/es/stories/lists/baseProps.js +1 -1
- package/es/stories/playground/PlaygroundEditor.js +1 -1
- package/es/stories/playground/PlaygroundLayout.js +1 -1
- package/es/stories/playground/PlaygroundOutput.js +1 -1
- package/es/stories/playground/PlaygroundPreview.js +1 -1
- package/es/stories/playground/components/Button.js +1 -1
- package/es/stories/playground/components/Card.js +1 -1
- package/es/stories/playground/components/ScrollProgress.js +1 -1
- package/es/stories/playground/examples.js +1 -1
- package/es/tasty/chunks/cacheKey.js +1 -1
- package/es/tasty/chunks/definitions.js +1 -1
- package/es/tasty/chunks/index.js +1 -1
- package/es/tasty/chunks/renderChunk.js +1 -1
- package/es/tasty/config.js +1 -1
- package/es/tasty/debug.js +1 -1
- package/es/tasty/hooks/index.js +1 -1
- package/es/tasty/hooks/useGlobalStyles.js +1 -1
- package/es/tasty/hooks/useKeyframes.js +1 -1
- package/es/tasty/hooks/useProperty.js +1 -1
- package/es/tasty/hooks/useRawCSS.js +1 -1
- package/es/tasty/hooks/useStyles.js +1 -1
- package/es/tasty/index.js +1 -1
- package/es/tasty/injector/index.js +1 -1
- package/es/tasty/injector/injector.js +1 -1
- package/es/tasty/injector/sheet-manager.js +1 -1
- package/es/tasty/injector/types.js +1 -1
- package/es/tasty/keyframes/index.js +1 -1
- package/es/tasty/parser/classify.js +1 -1
- package/es/tasty/parser/const.js +1 -1
- package/es/tasty/parser/lru.js +1 -1
- package/es/tasty/parser/parser.js +1 -1
- package/es/tasty/parser/tokenizer.js +1 -1
- package/es/tasty/parser/types.js +1 -1
- package/es/tasty/pipeline/conditions.js +1 -1
- package/es/tasty/pipeline/exclusive.js +1 -1
- package/es/tasty/pipeline/index.js +1 -1
- package/es/tasty/pipeline/materialize.js +1 -1
- package/es/tasty/pipeline/parseStateKey.js +1 -1
- package/es/tasty/pipeline/simplify.js +1 -1
- package/es/tasty/plugins/index.js +1 -1
- package/es/tasty/plugins/okhsl-plugin.js +1 -1
- package/es/tasty/plugins/types.js +1 -1
- package/es/tasty/properties/index.js +1 -1
- package/es/tasty/states/index.js +1 -1
- package/es/tasty/static/index.js +1 -1
- package/es/tasty/static/tastyStatic.js +1 -1
- package/es/tasty/static/types.js +1 -1
- package/es/tasty/styles/align.js +1 -1
- package/es/tasty/styles/border.js +1 -1
- package/es/tasty/styles/boxShadow.combinator.js +1 -1
- package/es/tasty/styles/color.js +1 -1
- package/es/tasty/styles/createStyle.js +1 -1
- package/es/tasty/styles/dimension.js +1 -1
- package/es/tasty/styles/display.js +1 -1
- package/es/tasty/styles/fade.js +1 -1
- package/es/tasty/styles/fill.js +1 -1
- package/es/tasty/styles/flow.js +1 -1
- package/es/tasty/styles/gap.js +1 -1
- package/es/tasty/styles/height.js +1 -1
- package/es/tasty/styles/index.js +1 -1
- package/es/tasty/styles/inset.js +1 -1
- package/es/tasty/styles/justify.js +1 -1
- package/es/tasty/styles/list.js +1 -1
- package/es/tasty/styles/margin.js +1 -1
- package/es/tasty/styles/outline.js +1 -1
- package/es/tasty/styles/padding.js +1 -1
- package/es/tasty/styles/place.js +1 -1
- package/es/tasty/styles/predefined.js +1 -1
- package/es/tasty/styles/preset.js +1 -1
- package/es/tasty/styles/radius.js +1 -1
- package/es/tasty/styles/reset.js +1 -1
- package/es/tasty/styles/scrollbar.js +1 -1
- package/es/tasty/styles/shadow.js +1 -1
- package/es/tasty/styles/styledScrollbar.js +1 -1
- package/es/tasty/styles/transition.js +1 -1
- package/es/tasty/styles/types.js +1 -1
- package/es/tasty/styles/width.js +1 -1
- package/es/tasty/tasty.js +1 -1
- package/es/tasty/types.js +1 -1
- package/es/tasty/utils/cache-wrapper.js +1 -1
- package/es/tasty/utils/case-converter.js +1 -1
- package/es/tasty/utils/colors.js +1 -1
- package/es/tasty/utils/dotize.js +1 -1
- package/es/tasty/utils/filter-base-props.js +1 -1
- package/es/tasty/utils/get-display-name.js +1 -1
- package/es/tasty/utils/hsl-to-rgb.js +1 -1
- package/es/tasty/utils/is-dev-env.js +1 -1
- package/es/tasty/utils/merge-styles.js +1 -1
- package/es/tasty/utils/mod-attrs.js +1 -1
- package/es/tasty/utils/okhsl-to-rgb.js +1 -1
- package/es/tasty/utils/process-tokens.js +1 -1
- package/es/tasty/utils/resolve-recipes.js +1 -1
- package/es/tasty/utils/rgb-to-okhsl.js +1 -1
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +1 -1
- package/es/tasty/utils/typography.js +1 -1
- package/es/tasty/utils/warnings.js +1 -1
- package/es/tasty/zero/babel.js +1 -1
- package/es/tasty/zero/css-writer.js +1 -1
- package/es/tasty/zero/extractor.js +1 -1
- package/es/tasty/zero/index.js +1 -1
- package/es/tasty/zero/next.js +1 -1
- package/es/tokens/base.js +1 -1
- package/es/tokens/colors.js +1 -1
- package/es/tokens/index.js +1 -1
- package/es/tokens/layout.js +1 -1
- package/es/tokens/shadows.js +1 -1
- package/es/tokens/sizes.js +1 -1
- package/es/tokens/spacing.js +1 -1
- package/es/tokens/typography.js +1 -1
- package/es/utils/ResizeSensor.js +1 -1
- package/es/utils/index.js +1 -1
- package/es/utils/modules.js +1 -1
- package/es/utils/promise.js +1 -1
- package/es/utils/raf.js +1 -1
- package/es/utils/random.js +1 -1
- package/es/utils/range.js +1 -1
- package/es/utils/react/RenderCache.js +1 -1
- package/es/utils/react/Slots.js +1 -1
- package/es/utils/react/chain.js +1 -1
- package/es/utils/react/forwardRefWithGenerics.js +1 -1
- package/es/utils/react/index.js +1 -1
- package/es/utils/react/interactions.js +1 -1
- package/es/utils/react/isTextOnly.js +1 -1
- package/es/utils/react/mapProps.js +1 -1
- package/es/utils/react/mergeProps.js +1 -1
- package/es/utils/react/nullableValue.js +1 -1
- package/es/utils/react/resolveIcon.js +1 -1
- package/es/utils/react/sharedStore.js +1 -1
- package/es/utils/react/useCombinedRefs.js +1 -1
- package/es/utils/react/useControlledFocusVisible.js +1 -1
- package/es/utils/react/useEventBus.js +1 -1
- package/es/utils/react/useId.js +1 -1
- package/es/utils/react/useIsDarwin.js +1 -1
- package/es/utils/react/useKeySymbols.js +1 -1
- package/es/utils/react/useLayoutEffect.js +1 -1
- package/es/utils/react/useLocalStorage.js +1 -1
- package/es/utils/react/useMergeStyles.js +1 -1
- package/es/utils/react/useQaProps.js +1 -1
- package/es/utils/react/useViewportSize.js +1 -1
- package/es/utils/react/wrapNodeIfPlain.js +1 -1
- package/es/utils/tree.js +1 -1
- package/es/utils/warnings.js +1 -1
- package/es/version.js +2 -2
- package/package.json +1 -1
- package/types/components/overlays/Notifications/Notification.d.ts +32 -0
- package/types/components/overlays/Notifications/NotificationAction.d.ts +27 -0
- package/types/components/overlays/Notifications/NotificationCard.d.ts +37 -0
- package/types/components/overlays/Notifications/NotificationContext.d.ts +16 -0
- package/types/components/overlays/Notifications/NotificationItem.d.ts +7 -0
- package/types/components/overlays/Notifications/OverlayContainer.d.ts +12 -0
- package/types/components/overlays/Notifications/OverlayProvider.d.ts +3 -0
- package/types/components/overlays/Notifications/PersistentNotificationsList.d.ts +19 -0
- package/types/components/overlays/Notifications/format-relative-time.d.ts +14 -0
- package/types/components/overlays/Notifications/index.d.ts +40 -0
- package/types/components/overlays/Notifications/types.d.ts +154 -0
- package/types/components/overlays/Notifications/use-notification-state.d.ts +23 -0
- package/types/components/overlays/Notifications/use-notifications.d.ts +36 -0
- package/types/components/overlays/Notifications/use-overlay-timers.d.ts +26 -0
- package/types/components/overlays/Notifications/use-persistent-notifications.d.ts +48 -0
- package/types/components/overlays/Notifications/use-persistent-state.d.ts +23 -0
- package/types/components/overlays/Notifications/use-toast-state.d.ts +16 -0
- package/types/components/overlays/Toast/ToastItem.d.ts +3 -1
- package/types/components/overlays/Toast/ToastProvider.d.ts +5 -8
- package/types/components/overlays/Toast/index.d.ts +1 -1
- package/types/components/overlays/Toast/types.d.ts +3 -1
- package/types/index.d.ts +1 -3
- package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +0 -54
- package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +0 -95
- package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +0 -56
- package/es/components/overlays/NewNotifications/Bar/index.js +0 -10
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +0 -19
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +0 -38
- package/es/components/overlays/NewNotifications/Dialog/index.js +0 -10
- package/es/components/overlays/NewNotifications/Notification.js +0 -41
- package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +0 -41
- package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +0 -25
- package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +0 -36
- package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +0 -60
- package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +0 -31
- package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +0 -69
- package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +0 -25
- package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +0 -86
- package/es/components/overlays/NewNotifications/NotificationView/index.js +0 -11
- package/es/components/overlays/NewNotifications/NotificationView/types.js +0 -10
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +0 -11
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +0 -21
- package/es/components/overlays/NewNotifications/NotificationsContext/index.js +0 -11
- package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +0 -91
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +0 -45
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +0 -29
- package/es/components/overlays/NewNotifications/NotificationsList/index.js +0 -10
- package/es/components/overlays/NewNotifications/hooks/index.js +0 -14
- package/es/components/overlays/NewNotifications/hooks/types.js +0 -10
- package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +0 -15
- package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +0 -17
- package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +0 -29
- package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +0 -17
- package/es/components/overlays/NewNotifications/index.js +0 -15
- package/es/components/overlays/NewNotifications/types.js +0 -10
- package/es/components/overlays/Notification/Notification.js +0 -80
- package/es/services/notification.js +0 -71
- package/types/components/overlays/NewNotifications/Bar/FloatingNotification.d.ts +0 -15
- package/types/components/overlays/NewNotifications/Bar/NotificationsBar.d.ts +0 -21
- package/types/components/overlays/NewNotifications/Bar/TransitionComponent.d.ts +0 -4
- package/types/components/overlays/NewNotifications/Bar/index.d.ts +0 -1
- package/types/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.d.ts +0 -9
- package/types/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.d.ts +0 -11
- package/types/components/overlays/NewNotifications/Dialog/index.d.ts +0 -1
- package/types/components/overlays/NewNotifications/Notification.d.ts +0 -18
- package/types/components/overlays/NewNotifications/NotificationView/NotificationAction.d.ts +0 -13
- package/types/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.d.ts +0 -4
- package/types/components/overlays/NewNotifications/NotificationView/NotificationDescription.d.ts +0 -9
- package/types/components/overlays/NewNotifications/NotificationView/NotificationFooter.d.ts +0 -13
- package/types/components/overlays/NewNotifications/NotificationView/NotificationHeader.d.ts +0 -9
- package/types/components/overlays/NewNotifications/NotificationView/NotificationIcon.d.ts +0 -9
- package/types/components/overlays/NewNotifications/NotificationView/NotificationProvider.d.ts +0 -10
- package/types/components/overlays/NewNotifications/NotificationView/NotificationView.d.ts +0 -10
- package/types/components/overlays/NewNotifications/NotificationView/index.d.ts +0 -2
- package/types/components/overlays/NewNotifications/NotificationView/types.d.ts +0 -16
- package/types/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.d.ts +0 -5
- package/types/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.d.ts +0 -4
- package/types/components/overlays/NewNotifications/NotificationsContext/index.d.ts +0 -2
- package/types/components/overlays/NewNotifications/NotificationsContext/use-notifications.d.ts +0 -8
- package/types/components/overlays/NewNotifications/NotificationsList/NotificationsList.d.ts +0 -21
- package/types/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.d.ts +0 -5
- package/types/components/overlays/NewNotifications/NotificationsList/index.d.ts +0 -2
- package/types/components/overlays/NewNotifications/NotificationsList/types.d.ts +0 -22
- package/types/components/overlays/NewNotifications/hooks/index.d.ts +0 -5
- package/types/components/overlays/NewNotifications/hooks/types.d.ts +0 -10
- package/types/components/overlays/NewNotifications/hooks/use-notification-list-item.d.ts +0 -9
- package/types/components/overlays/NewNotifications/hooks/use-notifications-api.d.ts +0 -1
- package/types/components/overlays/NewNotifications/hooks/use-notifications-list.d.ts +0 -12
- package/types/components/overlays/NewNotifications/hooks/use-notifications-observer.d.ts +0 -2
- package/types/components/overlays/NewNotifications/index.d.ts +0 -8
- package/types/components/overlays/NewNotifications/types.d.ts +0 -76
- package/types/components/overlays/Notification/Notification.d.ts +0 -6
- package/types/services/notification.d.ts +0 -28
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.114.0
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { useEffect, useRef } from 'react';
|
|
9
|
+
import { useNotificationContext } from './NotificationContext.js';
|
|
10
|
+
/**
|
|
11
|
+
* Declarative Notification component that shows a notification while mounted.
|
|
12
|
+
* Only supports `mode: 'overlay'` (the default).
|
|
13
|
+
*
|
|
14
|
+
* Duration defaults are the same as for imperative `notify()`:
|
|
15
|
+
* - 3000ms for non-persistent, 5000ms for persistent notifications
|
|
16
|
+
* - Pass `duration={null}` explicitly to disable auto-dismiss.
|
|
17
|
+
*
|
|
18
|
+
* Semantics:
|
|
19
|
+
* - mount → show or update by `id`
|
|
20
|
+
* - unmount → remove from overlay and persistent list
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* <Notification
|
|
25
|
+
* id="release:new-version"
|
|
26
|
+
* theme="warning"
|
|
27
|
+
* title="New release available"
|
|
28
|
+
* description="2.0.0 can be installed now."
|
|
29
|
+
* actions={
|
|
30
|
+
* <>
|
|
31
|
+
* <Notification.Action>Later</Notification.Action>
|
|
32
|
+
* <Notification.Action onPress={() => openUpgradeDialog()}>
|
|
33
|
+
* Upgrade
|
|
34
|
+
* </Notification.Action>
|
|
35
|
+
* </>
|
|
36
|
+
* }
|
|
37
|
+
* />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export function Notification(props) {
|
|
41
|
+
const { addNotification, removeNotification, updateNotification, removePersistentItem, } = useNotificationContext();
|
|
42
|
+
const notificationIdRef = useRef(null);
|
|
43
|
+
// Tracks how many times the update effect has run. The first run (0 → 1)
|
|
44
|
+
// coincides with mount and must be skipped because addNotification already
|
|
45
|
+
// handles the initial state.
|
|
46
|
+
const renderCountRef = useRef(0);
|
|
47
|
+
// Show notification on mount
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
const id = addNotification({
|
|
50
|
+
...props,
|
|
51
|
+
mode: 'overlay',
|
|
52
|
+
});
|
|
53
|
+
notificationIdRef.current = id;
|
|
54
|
+
return () => {
|
|
55
|
+
if (notificationIdRef.current != null) {
|
|
56
|
+
removeNotification(notificationIdRef.current, 'api');
|
|
57
|
+
removePersistentItem(notificationIdRef.current);
|
|
58
|
+
notificationIdRef.current = null;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}, []);
|
|
62
|
+
// Update notification when props change (skip initial mount)
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
// Skip the first run — it coincides with the mount effect above
|
|
65
|
+
if (renderCountRef.current === 0) {
|
|
66
|
+
renderCountRef.current = 1;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (notificationIdRef.current != null) {
|
|
70
|
+
updateNotification(notificationIdRef.current, {
|
|
71
|
+
...props,
|
|
72
|
+
mode: 'overlay',
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}, [
|
|
76
|
+
props.id,
|
|
77
|
+
props.theme,
|
|
78
|
+
props.title,
|
|
79
|
+
props.description,
|
|
80
|
+
props.icon,
|
|
81
|
+
props.actions,
|
|
82
|
+
props.isDismissible,
|
|
83
|
+
props.persistent,
|
|
84
|
+
props.duration,
|
|
85
|
+
]);
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.114.0
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
import { createContext, useContext, useMemo, } from 'react';
|
|
10
|
+
import { useEvent } from '../../../_internal/index.js';
|
|
11
|
+
import { ItemAction } from '../../actions/ItemAction/ItemAction.js';
|
|
12
|
+
// ─── Notification Action Interceptor Context ─────────────────────────
|
|
13
|
+
/**
|
|
14
|
+
* Optional callback invoked BEFORE any action's onPress handler.
|
|
15
|
+
* Provided by PersistentNotificationsList so the parent (e.g. popover)
|
|
16
|
+
* can close itself when an action is triggered.
|
|
17
|
+
*/
|
|
18
|
+
const NotificationActionInterceptorContext = createContext(null);
|
|
19
|
+
export { NotificationActionInterceptorContext };
|
|
20
|
+
const NotificationDismissContext = createContext(null);
|
|
21
|
+
export function NotificationDismissProvider({ notificationId, onDismiss, children, }) {
|
|
22
|
+
const dismiss = useEvent((reason) => {
|
|
23
|
+
onDismiss(notificationId, reason);
|
|
24
|
+
});
|
|
25
|
+
const value = useMemo(() => ({ dismiss }), [dismiss]);
|
|
26
|
+
return (_jsx(NotificationDismissContext.Provider, { value: value, children: children }));
|
|
27
|
+
}
|
|
28
|
+
// ─── Dismiss Action Detection Context ────────────────────────────────
|
|
29
|
+
//
|
|
30
|
+
// Allows NotificationCard to detect whether any child NotificationAction
|
|
31
|
+
// has `isDismiss` set, without requiring a separate `hasDismissAction` prop.
|
|
32
|
+
//
|
|
33
|
+
// Mechanism:
|
|
34
|
+
// - DismissActionDetector provides a ref via context and resets it each render.
|
|
35
|
+
// - NotificationAction writes to the ref during render when isDismiss is true.
|
|
36
|
+
// - DefaultDismissGuard reads the ref to decide whether to show the default button.
|
|
37
|
+
//
|
|
38
|
+
// This relies on React's left-to-right sibling render order: {actions}
|
|
39
|
+
// children render before <DefaultDismissGuard />, so the ref is populated
|
|
40
|
+
// before it's read. The ref is reset at the provider level each render,
|
|
41
|
+
// making it safe under StrictMode double-rendering.
|
|
42
|
+
export const DismissActionDetectedContext = createContext(null);
|
|
43
|
+
// ─── NotificationAction Component ────────────────────────────────────
|
|
44
|
+
/**
|
|
45
|
+
* Action button for use inside Notification components.
|
|
46
|
+
* Wraps ItemAction with auto-dismiss behavior.
|
|
47
|
+
*
|
|
48
|
+
* - `closeOnPress` (default: true) — auto-dismisses the notification after `onPress`.
|
|
49
|
+
* - An action with no `onPress` and `closeOnPress: true` acts as a dismiss-only action.
|
|
50
|
+
* - `isDismiss` — marks this action as the dismiss button; when present, the default
|
|
51
|
+
* "Dismiss" button is auto-suppressed via context detection.
|
|
52
|
+
* - Type (primary/secondary/etc.) is set automatically via ItemActionProvider context.
|
|
53
|
+
*/
|
|
54
|
+
export function NotificationAction({ children, onPress, closeOnPress = true, isDisabled, isDismiss, }) {
|
|
55
|
+
const dismissCtx = useContext(NotificationDismissContext);
|
|
56
|
+
const dismissDetectedRef = useContext(DismissActionDetectedContext);
|
|
57
|
+
// Register isDismiss during render (synchronous, before DefaultDismissGuard renders).
|
|
58
|
+
// Safe under StrictMode: the ref is reset at the DismissActionDetector level each render.
|
|
59
|
+
if (isDismiss && dismissDetectedRef) {
|
|
60
|
+
dismissDetectedRef.current = true;
|
|
61
|
+
}
|
|
62
|
+
const actionInterceptor = useContext(NotificationActionInterceptorContext);
|
|
63
|
+
const handlePress = useEvent(async () => {
|
|
64
|
+
const result = await onPress?.();
|
|
65
|
+
if (result === false) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
actionInterceptor?.();
|
|
69
|
+
if (closeOnPress || actionInterceptor) {
|
|
70
|
+
// isDismiss actions (dismiss button, Escape) use 'close' reason — the
|
|
71
|
+
// notification moves to the persistent list.
|
|
72
|
+
// Regular actions use 'action' reason — the notification is fully dismissed
|
|
73
|
+
// and won't reappear.
|
|
74
|
+
// When an actionInterceptor is present (persistent list), always dismiss
|
|
75
|
+
// regardless of closeOnPress — all actions remove the item permanently.
|
|
76
|
+
dismissCtx?.dismiss(isDismiss ? 'close' : 'action');
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return (_jsx(ItemAction, { type: "secondary", isDisabled: isDisabled, onPress: handlePress, children: children }));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.114.0
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { useContext, useRef } from 'react';
|
|
10
|
+
import { tasty } from '../../../tasty/index.js';
|
|
11
|
+
import { ItemActionProvider } from '../../actions/ItemActionContext.js';
|
|
12
|
+
import { Block } from '../../Block.js';
|
|
13
|
+
import { Item } from '../../content/Item/Item.js';
|
|
14
|
+
import { Flex } from '../../layout/Flex.js';
|
|
15
|
+
import { Space } from '../../layout/Space.js';
|
|
16
|
+
import { getThemeIcon } from '../Toast/useToast.js';
|
|
17
|
+
import { DismissActionDetectedContext, NotificationAction, NotificationDismissProvider, } from './NotificationAction.js';
|
|
18
|
+
// ─── Styled Components ──────────────────────────────────────────────
|
|
19
|
+
const StyledItem = tasty(Item, {
|
|
20
|
+
styles: {
|
|
21
|
+
width: {
|
|
22
|
+
'': 'max min((100vw - 4x), 50x)',
|
|
23
|
+
flat: '100%',
|
|
24
|
+
},
|
|
25
|
+
shadow: {
|
|
26
|
+
'': '$card-shadow',
|
|
27
|
+
flat: false,
|
|
28
|
+
},
|
|
29
|
+
radius: {
|
|
30
|
+
'': '1cr',
|
|
31
|
+
flat: '0',
|
|
32
|
+
},
|
|
33
|
+
transition: 'theme, inset',
|
|
34
|
+
Description: {
|
|
35
|
+
preset: 't4',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
// ─── Dismiss Action Detection ────────────────────────────────────────
|
|
40
|
+
/**
|
|
41
|
+
* Provides a ref via context that NotificationAction children write to
|
|
42
|
+
* during render when `isDismiss` is set. The ref is reset each render.
|
|
43
|
+
*/
|
|
44
|
+
function DismissActionDetector({ children }) {
|
|
45
|
+
const ref = useRef(false);
|
|
46
|
+
// Reset each render so detection is fresh
|
|
47
|
+
ref.current = false;
|
|
48
|
+
return (_jsx(DismissActionDetectedContext.Provider, { value: ref, children: children }));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Renders the default "Dismiss" button only if no sibling NotificationAction
|
|
52
|
+
* has `isDismiss` set. Reads from DismissActionDetectedContext ref which is
|
|
53
|
+
* populated by actions that rendered before this component (left-to-right order).
|
|
54
|
+
*/
|
|
55
|
+
function AutoDismissButton() {
|
|
56
|
+
const dismissDetectedRef = useContext(DismissActionDetectedContext);
|
|
57
|
+
if (dismissDetectedRef?.current)
|
|
58
|
+
return null;
|
|
59
|
+
return _jsx(NotificationAction, { isDismiss: true, children: "Dismiss" });
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Extracted sub-component for the actions area of a notification card.
|
|
63
|
+
*
|
|
64
|
+
* The dismiss provider is always rendered when `hasDismissContext` is true,
|
|
65
|
+
* so any action with `closeOnPress` can close the notification — regardless
|
|
66
|
+
* of `isDismissible`. The `showAutoDismiss` flag only controls the
|
|
67
|
+
* auto-appended "Dismiss" button.
|
|
68
|
+
*/
|
|
69
|
+
function ActionsSection({ actions, theme, showAutoDismiss, hasDismissContext, notificationId, onDismiss, }) {
|
|
70
|
+
const actionsContent = (_jsxs(Space, { placeSelf: "end", placeContent: "end", flexGrow: 1, children: [actions, showAutoDismiss && _jsx(AutoDismissButton, {})] }));
|
|
71
|
+
const wrappedContent = showAutoDismiss ? (_jsx(DismissActionDetector, { children: actionsContent })) : (actionsContent);
|
|
72
|
+
return (_jsx(ItemActionProvider, { type: "card", theme: theme, children: hasDismissContext ? (_jsx(NotificationDismissProvider, { notificationId: notificationId, onDismiss: onDismiss, children: wrappedContent })) : (wrappedContent) }));
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Shared presentational card used by both overlay NotificationItem
|
|
76
|
+
* and PersistentNotificationListItem.
|
|
77
|
+
*/
|
|
78
|
+
export function NotificationCard({ qa = 'Notification', theme, title, description, icon: providedIcon, actions, isDismissible = true, elevated = true, notificationId, onDismiss, suffix, }) {
|
|
79
|
+
const icon = getThemeIcon(theme, providedIcon);
|
|
80
|
+
const hasDismissContext = notificationId != null && onDismiss != null;
|
|
81
|
+
const showAutoDismiss = isDismissible && hasDismissContext;
|
|
82
|
+
const hasActions = !!(actions || showAutoDismiss);
|
|
83
|
+
const descriptionContent = description || hasActions ? (_jsxs(Flex, { flow: "row wrap", gap: "0.5x 1x", placeItems: "center stretch", children: [description && _jsx(Block, { children: description }), hasActions && (_jsx(ActionsSection, { actions: actions, theme: theme, showAutoDismiss: showAutoDismiss, hasDismissContext: hasDismissContext, notificationId: notificationId, onDismiss: onDismiss }))] })) : undefined;
|
|
84
|
+
return (_jsx(StyledItem, { qa: qa, type: "card", theme: theme, icon: icon, description: descriptionContent, suffix: suffix, mods: { flat: !elevated }, styles: !elevated ? { border: '0' } : undefined, children: title }));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.114.0
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { createContext, useContext } from 'react';
|
|
9
|
+
// ─── Contexts ─────────────────────────────────────────────────────────
|
|
10
|
+
export const ToastContext = createContext(null);
|
|
11
|
+
/**
|
|
12
|
+
* Internal context for overlay notification machinery.
|
|
13
|
+
* Not exported publicly — consumers should use `useNotifications` hook.
|
|
14
|
+
*/
|
|
15
|
+
export const NotificationContext = createContext(null);
|
|
16
|
+
/**
|
|
17
|
+
* Public context for persistent notifications.
|
|
18
|
+
* Used by `usePersistentNotifications` and `useNotificationsCount` hooks.
|
|
19
|
+
*/
|
|
20
|
+
export const PersistentNotificationsContext = createContext(null);
|
|
21
|
+
// ─── Context Hooks ────────────────────────────────────────────────────
|
|
22
|
+
export function useToastContext() {
|
|
23
|
+
const context = useContext(ToastContext);
|
|
24
|
+
if (!context) {
|
|
25
|
+
throw new Error('useToastContext must be used within an OverlayProvider');
|
|
26
|
+
}
|
|
27
|
+
return context;
|
|
28
|
+
}
|
|
29
|
+
export function useNotificationContext() {
|
|
30
|
+
const context = useContext(NotificationContext);
|
|
31
|
+
if (!context) {
|
|
32
|
+
throw new Error('useNotificationContext must be used within an OverlayProvider');
|
|
33
|
+
}
|
|
34
|
+
return context;
|
|
35
|
+
}
|
|
36
|
+
export function usePersistentNotificationsContext() {
|
|
37
|
+
const context = useContext(PersistentNotificationsContext);
|
|
38
|
+
if (!context) {
|
|
39
|
+
throw new Error('usePersistentNotificationsContext must be used within an OverlayProvider');
|
|
40
|
+
}
|
|
41
|
+
return context;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.114.0
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
import { useEvent } from '../../../_internal/index.js';
|
|
10
|
+
import { tasty } from '../../../tasty/index.js';
|
|
11
|
+
import { NotificationCard } from './NotificationCard.js';
|
|
12
|
+
// ─── ARIA Helpers ────────────────────────────────────────────────────
|
|
13
|
+
function getAriaRole(theme) {
|
|
14
|
+
if (theme === 'danger' || theme === 'warning') {
|
|
15
|
+
return 'alert';
|
|
16
|
+
}
|
|
17
|
+
return 'status';
|
|
18
|
+
}
|
|
19
|
+
function getAriaLive(theme) {
|
|
20
|
+
if (theme === 'danger' || theme === 'warning') {
|
|
21
|
+
return 'assertive';
|
|
22
|
+
}
|
|
23
|
+
return 'polite';
|
|
24
|
+
}
|
|
25
|
+
// ─── Styled Wrapper ──────────────────────────────────────────────────
|
|
26
|
+
/**
|
|
27
|
+
* Wrapper element for overlay notification items.
|
|
28
|
+
*
|
|
29
|
+
* Accessibility attributes are set as static defaults:
|
|
30
|
+
* - `tabIndex={0}`: Makes the notification focusable via keyboard, allowing
|
|
31
|
+
* users to Tab to it and press Escape to dismiss.
|
|
32
|
+
* - `aria-atomic="true"`: Ensures screen readers announce the entire notification
|
|
33
|
+
* when content changes (not just the diff).
|
|
34
|
+
* - `aria-relevant="additions text"`: Announces when new content is added or
|
|
35
|
+
* text changes, but not when elements are removed (e.g., during exit animation).
|
|
36
|
+
*
|
|
37
|
+
* The `role` and `aria-live` are set dynamically per-instance based on theme
|
|
38
|
+
* (see `getAriaRole` and `getAriaLive` above).
|
|
39
|
+
*/
|
|
40
|
+
const NotificationItemWrapper = tasty({
|
|
41
|
+
as: 'div',
|
|
42
|
+
tabIndex: 0,
|
|
43
|
+
'aria-atomic': 'true',
|
|
44
|
+
'aria-relevant': 'additions text',
|
|
45
|
+
styles: {
|
|
46
|
+
outline: {
|
|
47
|
+
'': 'none',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
export function NotificationItem({ notification, onDismiss, }) {
|
|
52
|
+
const { theme, title, description, icon, actions, isDismissible = true, id, internalId, } = notification;
|
|
53
|
+
const notificationId = id ?? internalId;
|
|
54
|
+
const handleKeyDown = useEvent((e) => {
|
|
55
|
+
if (e.key === 'Escape' && isDismissible) {
|
|
56
|
+
e.stopPropagation();
|
|
57
|
+
onDismiss(notificationId, 'close');
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return (_jsx(NotificationItemWrapper, { role: getAriaRole(theme), "aria-live": getAriaLive(theme), onKeyDown: handleKeyDown, children: _jsx(NotificationCard, { qa: "Notification", theme: theme, title: title, description: description, icon: icon, actions: actions, isDismissible: isDismissible, notificationId: notificationId, onDismiss: onDismiss }) }));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|