@cube-dev/ui-kit 0.118.0 → 0.119.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +18 -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.d.ts +1 -2
- package/dist/components/Block.js +2 -5
- package/dist/components/Block.js.map +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +2 -3
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.d.ts +1 -2
- package/dist/components/GridProvider.js +2 -3
- package/dist/components/GridProvider.js.map +1 -1
- package/dist/components/HiddenInput.js +2 -2
- package/dist/components/HiddenInput.js.map +1 -1
- package/dist/components/Root.d.ts +1 -2
- package/dist/components/Root.js +2 -6
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.d.ts +1 -2
- package/dist/components/actions/Action/Action.js +2 -4
- package/dist/components/actions/Action/Action.js.map +1 -1
- package/dist/components/actions/Banner/Banner.js +2 -2
- package/dist/components/actions/Banner/Banner.js.map +1 -1
- package/dist/components/actions/Button/Button.d.ts +3 -1769
- package/dist/components/actions/Button/Button.js +2 -4
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +2 -2
- package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.d.ts +1 -3
- package/dist/components/actions/CommandMenu/CommandMenu.js +2 -4
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +3 -3
- package/dist/components/actions/CommandMenu/styled.js.map +1 -1
- package/dist/components/actions/ItemAction/ItemAction.d.ts +1 -3
- package/dist/components/actions/ItemAction/ItemAction.js +2 -2
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.d.ts +1 -2
- package/dist/components/actions/ItemButton/ItemButton.js +2 -2
- package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.d.ts +1 -3
- package/dist/components/actions/Menu/Menu.js +2 -4
- package/dist/components/actions/Menu/Menu.js.map +1 -1
- package/dist/components/actions/Menu/MenuItem.d.ts +1 -2
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.d.ts +1 -2
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js.map +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +2 -2
- package/dist/components/actions/Menu/styled.js.map +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.d.ts +1 -2
- package/dist/components/actions/use-action.js +2 -2
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.d.ts +1 -2
- package/dist/components/content/ActiveZone/ActiveZone.js +2 -5
- package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
- package/dist/components/content/Alert/Alert.js +2 -2
- package/dist/components/content/Alert/Alert.js.map +1 -1
- package/dist/components/content/Alert/types.d.ts +1 -2
- package/dist/components/content/Alert/use-alert.js +2 -4
- package/dist/components/content/Alert/use-alert.js.map +1 -1
- package/dist/components/content/Avatar/Avatar.d.ts +1 -3
- package/dist/components/content/Avatar/Avatar.js +2 -5
- package/dist/components/content/Avatar/Avatar.js.map +1 -1
- package/dist/components/content/Badge/Badge.js +2 -2
- package/dist/components/content/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.d.ts +1 -2
- package/dist/components/content/Card/Card.js +2 -5
- package/dist/components/content/Card/Card.js.map +1 -1
- package/dist/components/content/Content.d.ts +1 -2
- package/dist/components/content/Content.js +2 -5
- package/dist/components/content/Content.js.map +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.d.ts +1 -3
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +2 -4
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +2 -2
- package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
- package/dist/components/content/Disclosure/Disclosure.d.ts +1 -3
- package/dist/components/content/Disclosure/Disclosure.js +2 -4
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider.d.ts +1 -2
- package/dist/components/content/Divider.js +2 -4
- package/dist/components/content/Divider.js.map +1 -1
- package/dist/components/content/Footer.d.ts +1 -2
- package/dist/components/content/Footer.js +2 -5
- package/dist/components/content/Footer.js.map +1 -1
- package/dist/components/content/Header.d.ts +1 -2
- package/dist/components/content/Header.js +2 -5
- package/dist/components/content/Header.js.map +1 -1
- package/dist/components/content/HotKeys/HotKeys.d.ts +1 -2
- package/dist/components/content/HotKeys/HotKeys.js +2 -5
- package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
- package/dist/components/content/Item/Item.d.ts +1 -3
- package/dist/components/content/Item/Item.js +2 -3
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.d.ts +1 -2
- package/dist/components/content/ItemBadge/ItemBadge.js +2 -2
- package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
- package/dist/components/content/Layout/GridLayout.d.ts +1 -2
- package/dist/components/content/Layout/GridLayout.js +2 -2
- package/dist/components/content/Layout/GridLayout.js.map +1 -1
- package/dist/components/content/Layout/Layout.d.ts +1 -3
- package/dist/components/content/Layout/Layout.js +3 -7
- package/dist/components/content/Layout/Layout.js.map +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +2 -2
- package/dist/components/content/Layout/LayoutBlock.js.map +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +2 -2
- package/dist/components/content/Layout/LayoutCenter.js.map +1 -1
- package/dist/components/content/Layout/LayoutContainer.d.ts +1 -3
- package/dist/components/content/Layout/LayoutContainer.js +2 -6
- package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.d.ts +1 -2
- package/dist/components/content/Layout/LayoutContent.js +2 -6
- package/dist/components/content/Layout/LayoutContent.js.map +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +2 -2
- package/dist/components/content/Layout/LayoutFlex.js.map +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +2 -2
- package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
- package/dist/components/content/Layout/LayoutGrid.d.ts +1 -2
- package/dist/components/content/Layout/LayoutGrid.js +2 -2
- package/dist/components/content/Layout/LayoutGrid.js.map +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +2 -2
- package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPane.d.ts +1 -3
- package/dist/components/content/Layout/LayoutPane.js +2 -6
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.d.ts +1 -3
- package/dist/components/content/Layout/LayoutPanel.js +2 -6
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.d.ts +1 -2
- package/dist/components/content/Layout/LayoutPanelHeader.js +2 -4
- package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +2 -2
- package/dist/components/content/Layout/LayoutToolbar.js.map +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.d.ts +1 -2
- package/dist/components/content/Paragraph.js +2 -3
- package/dist/components/content/Paragraph.js.map +1 -1
- package/dist/components/content/Placeholder/Placeholder.d.ts +1 -3
- package/dist/components/content/Placeholder/Placeholder.js +2 -6
- package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/content/PrismCode/PrismCode.d.ts +1 -3
- package/dist/components/content/PrismCode/PrismCode.js +2 -3
- package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.d.ts +1 -3
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js.map +1 -1
- package/dist/components/content/Result/Result.d.ts +1 -2
- package/dist/components/content/Result/Result.js +2 -5
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.d.ts +1 -2
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/content/Tag/Tag.d.ts +1 -2
- package/dist/components/content/Tag/Tag.js +2 -2
- package/dist/components/content/Tag/Tag.js.map +1 -1
- package/dist/components/content/Text.d.ts +128 -159
- package/dist/components/content/Text.js +2 -5
- package/dist/components/content/Text.js.map +1 -1
- package/dist/components/content/TextItem/TextItem.d.ts +1 -2
- package/dist/components/content/TextItem/TextItem.js +2 -5
- package/dist/components/content/TextItem/TextItem.js.map +1 -1
- package/dist/components/content/Title.d.ts +1 -2
- package/dist/components/content/Title.js +2 -5
- package/dist/components/content/Title.js.map +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/highlightText.js.map +1 -1
- package/dist/components/content/use-auto-tooltip.d.ts +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/content/use-auto-tooltip.js.map +1 -1
- package/dist/components/fields/Checkbox/Checkbox.d.ts +1 -3
- package/dist/components/fields/Checkbox/Checkbox.js +2 -5
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +1 -3
- package/dist/components/fields/Checkbox/CheckboxGroup.js +2 -4
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +1 -3
- package/dist/components/fields/ComboBox/ComboBox.js +2 -4
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInput.d.ts +1 -3
- package/dist/components/fields/DatePicker/DateInput.js +2 -3
- package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +2 -4
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.d.ts +1 -3
- package/dist/components/fields/DatePicker/DatePicker.js +2 -3
- package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +2 -2
- package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +2 -2
- package/dist/components/fields/DatePicker/DatePickerElement.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +2 -2
- package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +2 -2
- package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -3
- package/dist/components/fields/DatePicker/DateRangePicker.js +2 -4
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -3
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +2 -4
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/TimeInput.d.ts +1 -3
- package/dist/components/fields/DatePicker/TimeInput.js +2 -3
- package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
- package/dist/components/fields/DatePicker/intl.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.d.ts +1 -3
- package/dist/components/fields/FileInput/FileInput.js +2 -4
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.d.ts +1 -2
- package/dist/components/fields/FilterListBox/FilterListBox.js +5 -7
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +1 -3
- package/dist/components/fields/FilterPicker/FilterPicker.js +2 -5
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/ListBox.d.ts +1 -3
- package/dist/components/fields/ListBox/ListBox.js +2 -5
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +2 -2
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +2 -2
- package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +1 -3
- package/dist/components/fields/Picker/Picker.js +2 -5
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +1 -2
- package/dist/components/fields/RadioGroup/Radio.js +2 -5
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.d.ts +1 -3
- package/dist/components/fields/RadioGroup/RadioGroup.js +2 -4
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.d.ts +834 -836
- package/dist/components/fields/Select/Select.js +2 -4
- 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/HueSlider.js.map +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.d.ts +1 -3
- package/dist/components/fields/Slider/Slider.js +2 -3
- package/dist/components/fields/Slider/Slider.js.map +1 -1
- package/dist/components/fields/Slider/SliderBase.js +2 -4
- package/dist/components/fields/Slider/SliderBase.js.map +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +2 -2
- package/dist/components/fields/Slider/elements.js.map +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Slider/types.d.ts +1 -3
- package/dist/components/fields/Switch/Switch.d.ts +1 -3
- package/dist/components/fields/Switch/Switch.js +2 -4
- package/dist/components/fields/Switch/Switch.js.map +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.d.ts +1 -3
- package/dist/components/fields/TextInput/TextInputBase.js +3 -5
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +2 -2
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/dist/components/form/FieldWrapper/types.d.ts +1 -3
- package/dist/components/form/Form/Field.d.ts +1 -2
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Field.js.map +1 -1
- package/dist/components/form/Form/Form.d.ts +1 -3
- package/dist/components/form/Form/Form.js +2 -5
- package/dist/components/form/Form/Form.js.map +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 +2 -2
- package/dist/components/form/Form/use-form.js.map +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.d.ts +1 -3
- package/dist/components/form/Label.js +2 -5
- package/dist/components/form/Label.js.map +1 -1
- package/dist/components/form/wrapper.d.ts +1 -2
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/form/wrapper.js.map +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +2 -2
- package/dist/components/helpers/IconSwitch/IconSwitch.js.map +1 -1
- package/dist/components/layout/Flex.d.ts +1 -2
- package/dist/components/layout/Flex.js +2 -5
- package/dist/components/layout/Flex.js.map +1 -1
- package/dist/components/layout/Flow.d.ts +1 -2
- package/dist/components/layout/Flow.js +2 -5
- package/dist/components/layout/Flow.js.map +1 -1
- package/dist/components/layout/Grid.d.ts +1 -2
- package/dist/components/layout/Grid.js +2 -5
- package/dist/components/layout/Grid.js.map +1 -1
- package/dist/components/layout/Panel.d.ts +1 -3
- package/dist/components/layout/Panel.js +2 -3
- package/dist/components/layout/Panel.js.map +1 -1
- package/dist/components/layout/Prefix.d.ts +1 -2
- package/dist/components/layout/Prefix.js +2 -5
- package/dist/components/layout/Prefix.js.map +1 -1
- package/dist/components/layout/ResizablePanel.d.ts +1 -2
- package/dist/components/layout/ResizablePanel.js +2 -2
- package/dist/components/layout/ResizablePanel.js.map +1 -1
- package/dist/components/layout/Space.d.ts +1 -2
- package/dist/components/layout/Space.js +2 -5
- package/dist/components/layout/Space.js.map +1 -1
- package/dist/components/layout/Suffix.d.ts +1 -2
- package/dist/components/layout/Suffix.js +2 -5
- package/dist/components/layout/Suffix.js.map +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js.map +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +2 -4
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +2 -2
- package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +2 -2
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +1 -3
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/types.js.map +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/FileTabs/FileTabs.d.ts +1 -2
- package/dist/components/organisms/FileTabs/FileTabs.js +2 -2
- package/dist/components/organisms/FileTabs/FileTabs.js.map +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +2 -2
- package/dist/components/other/Calendar/Calendar.js.map +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +2 -2
- package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +2 -2
- package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +2 -2
- package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.js +2 -2
- package/dist/components/other/CloudLogo/CloudLogo.js.map +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/AlertDialog/types.d.ts +1 -1
- package/dist/components/overlays/Dialog/Dialog.d.ts +1 -3
- package/dist/components/overlays/Dialog/Dialog.js +2 -4
- 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 +1 -2
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.d.ts +3 -2
- package/dist/components/overlays/Modal/Modal.js +2 -2
- package/dist/components/overlays/Modal/Modal.js.map +1 -1
- package/dist/components/overlays/Modal/OpenTransition.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/Overlay.js.map +1 -1
- package/dist/components/overlays/Modal/Popover.d.ts +1 -1
- package/dist/components/overlays/Modal/Popover.js +2 -2
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.d.ts +1 -1
- package/dist/components/overlays/Modal/Tray.js +2 -2
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +2 -2
- package/dist/components/overlays/Modal/Underlay.js.map +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +2 -2
- package/dist/components/overlays/Notifications/NotificationCard.js.map +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 +2 -2
- package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +2 -2
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +2 -2
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-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 +2 -2
- package/dist/components/overlays/Toast/ToastItem.js.map +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 +2 -2
- package/dist/components/overlays/Tooltip/Tooltip.d.ts +1 -3
- package/dist/components/overlays/Tooltip/Tooltip.js +2 -4
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.d.ts +1 -2
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/context.js.map +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/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +2 -2
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
- package/dist/components/status/Spin/Cube.js +2 -2
- package/dist/components/status/Spin/Cube.js.map +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +2 -2
- package/dist/components/status/Spin/InternalSpinner.js.map +1 -1
- package/dist/components/status/Spin/Spin.js +2 -2
- package/dist/components/status/Spin/Spin.js.map +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +2 -2
- package/dist/components/status/Spin/SpinsContainer.js.map +1 -1
- package/dist/components/status/Spin/types.d.ts +1 -2
- package/dist/data/item-themes.d.ts +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +2 -2
- package/dist/icons/DirectionIcon.js.map +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/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.d.ts +1 -3
- package/dist/icons/Icon.js +2 -3
- package/dist/icons/Icon.js.map +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/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +4 -35
- package/dist/index.js +5 -31
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts +1 -2
- package/dist/provider.js +1 -1
- package/dist/provider.js.map +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/shared/form.d.ts +1 -3
- package/dist/tokens/base.d.ts +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/base.js.map +1 -1
- package/dist/tokens/colors.d.ts +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/colors.js.map +1 -1
- package/dist/tokens/index.d.ts +1 -2
- package/dist/tokens/index.js +2 -3
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/layout.d.ts +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/layout.js.map +1 -1
- package/dist/tokens/shadows.d.ts +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/shadows.js.map +1 -1
- package/dist/tokens/sizes.d.ts +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/sizes.js.map +1 -1
- package/dist/tokens/spacing.d.ts +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/spacing.js.map +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/index.d.ts +1 -2
- package/dist/utils/is-dev-env.js +5 -10
- package/dist/utils/is-dev-env.js.map +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.d.ts +3 -3
- package/dist/utils/react/index.js +20 -0
- 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.d.ts +1 -2
- package/dist/utils/react/mergeProps.js +2 -2
- package/dist/utils/react/mergeProps.js.map +1 -1
- package/dist/utils/react/nullableValue.d.ts +1 -2
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/nullableValue.js.map +1 -1
- package/dist/utils/react/resolveIcon.d.ts +1 -2
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/resolveIcon.js.map +1 -1
- package/dist/utils/react/sharedStore.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.d.ts +1 -2
- package/dist/utils/react/useMergeStyles.js +2 -2
- package/dist/utils/react/useMergeStyles.js.map +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/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/package.json +4 -21
- package/dist/_virtual/_rolldown/runtime.js +0 -8
- package/dist/chunks/cacheKey.js +0 -71
- package/dist/chunks/cacheKey.js.map +0 -1
- package/dist/chunks/definitions.js +0 -261
- package/dist/chunks/definitions.js.map +0 -1
- package/dist/chunks/renderChunk.js +0 -68
- package/dist/chunks/renderChunk.js.map +0 -1
- package/dist/config.js +0 -232
- package/dist/config.js.map +0 -1
- package/dist/css-writer.d.ts +0 -46
- package/dist/css-writer.js +0 -75
- package/dist/css-writer.js.map +0 -1
- package/dist/extractor.d.ts +0 -25
- package/dist/extractor.js +0 -151
- package/dist/extractor.js.map +0 -1
- package/dist/injector/injector.js +0 -401
- package/dist/injector/injector.js.map +0 -1
- package/dist/injector/sheet-manager.js +0 -715
- package/dist/injector/sheet-manager.js.map +0 -1
- package/dist/injector/types.d.ts +0 -19
- package/dist/keyframes/index.js +0 -157
- package/dist/keyframes/index.js.map +0 -1
- package/dist/parser/classify.js +0 -320
- package/dist/parser/classify.js.map +0 -1
- package/dist/parser/const.js +0 -34
- package/dist/parser/const.js.map +0 -1
- package/dist/parser/lru.js +0 -110
- package/dist/parser/lru.js.map +0 -1
- package/dist/parser/parser.js +0 -117
- package/dist/parser/parser.js.map +0 -1
- package/dist/parser/tokenizer.js +0 -70
- package/dist/parser/tokenizer.js.map +0 -1
- package/dist/parser/types.d.ts +0 -38
- package/dist/parser/types.js +0 -47
- package/dist/parser/types.js.map +0 -1
- package/dist/pipeline/conditions.js +0 -378
- package/dist/pipeline/conditions.js.map +0 -1
- package/dist/pipeline/exclusive.js +0 -232
- package/dist/pipeline/exclusive.js.map +0 -1
- package/dist/pipeline/index.js +0 -633
- package/dist/pipeline/index.js.map +0 -1
- package/dist/pipeline/materialize.js +0 -822
- package/dist/pipeline/materialize.js.map +0 -1
- package/dist/pipeline/parseStateKey.js +0 -422
- package/dist/pipeline/parseStateKey.js.map +0 -1
- package/dist/pipeline/simplify.js +0 -558
- package/dist/pipeline/simplify.js.map +0 -1
- package/dist/plugins/okhsl-plugin.js +0 -346
- package/dist/plugins/okhsl-plugin.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -52
- package/dist/properties/index.js +0 -142
- package/dist/properties/index.js.map +0 -1
- package/dist/states/index.js +0 -162
- package/dist/states/index.js.map +0 -1
- package/dist/styles/align.js +0 -15
- package/dist/styles/align.js.map +0 -1
- package/dist/styles/border.js +0 -115
- package/dist/styles/border.js.map +0 -1
- package/dist/styles/color.js +0 -24
- package/dist/styles/color.js.map +0 -1
- package/dist/styles/createStyle.js +0 -78
- package/dist/styles/createStyle.js.map +0 -1
- package/dist/styles/dimension.js +0 -100
- package/dist/styles/dimension.js.map +0 -1
- package/dist/styles/display.js +0 -68
- package/dist/styles/display.js.map +0 -1
- package/dist/styles/fade.js +0 -58
- package/dist/styles/fade.js.map +0 -1
- package/dist/styles/fill.js +0 -52
- package/dist/styles/fill.js.map +0 -1
- package/dist/styles/flow.js +0 -13
- package/dist/styles/flow.js.map +0 -1
- package/dist/styles/gap.js +0 -37
- package/dist/styles/gap.js.map +0 -1
- package/dist/styles/height.js +0 -21
- package/dist/styles/height.js.map +0 -1
- package/dist/styles/index.js +0 -10
- package/dist/styles/index.js.map +0 -1
- package/dist/styles/inset.js +0 -143
- package/dist/styles/inset.js.map +0 -1
- package/dist/styles/justify.js +0 -15
- package/dist/styles/justify.js.map +0 -1
- package/dist/styles/margin.js +0 -97
- package/dist/styles/margin.js.map +0 -1
- package/dist/styles/outline.js +0 -66
- package/dist/styles/outline.js.map +0 -1
- package/dist/styles/padding.js +0 -97
- package/dist/styles/padding.js.map +0 -1
- package/dist/styles/predefined.js +0 -233
- package/dist/styles/predefined.js.map +0 -1
- package/dist/styles/preset.js +0 -126
- package/dist/styles/preset.js.map +0 -1
- package/dist/styles/radius.js +0 -52
- package/dist/styles/radius.js.map +0 -1
- package/dist/styles/scrollbar.js +0 -109
- package/dist/styles/scrollbar.js.map +0 -1
- package/dist/styles/shadow.js +0 -28
- package/dist/styles/shadow.js.map +0 -1
- package/dist/styles/styledScrollbar.js +0 -39
- package/dist/styles/styledScrollbar.js.map +0 -1
- package/dist/styles/transition.js +0 -139
- package/dist/styles/transition.js.map +0 -1
- package/dist/styles/types.d.ts +0 -495
- package/dist/styles/width.js +0 -21
- package/dist/styles/width.js.map +0 -1
- package/dist/tasty/chunks/cacheKey.js +0 -71
- package/dist/tasty/chunks/cacheKey.js.map +0 -1
- package/dist/tasty/chunks/definitions.d.ts +0 -38
- package/dist/tasty/chunks/definitions.js +0 -261
- package/dist/tasty/chunks/definitions.js.map +0 -1
- package/dist/tasty/chunks/renderChunk.js +0 -68
- package/dist/tasty/chunks/renderChunk.js.map +0 -1
- package/dist/tasty/config.d.ts +0 -283
- package/dist/tasty/config.js +0 -401
- package/dist/tasty/config.js.map +0 -1
- package/dist/tasty/debug.d.ts +0 -200
- package/dist/tasty/debug.js +0 -734
- package/dist/tasty/debug.js.map +0 -1
- package/dist/tasty/hooks/useGlobalStyles.d.ts +0 -28
- package/dist/tasty/hooks/useGlobalStyles.js +0 -57
- package/dist/tasty/hooks/useGlobalStyles.js.map +0 -1
- package/dist/tasty/hooks/useKeyframes.d.ts +0 -57
- package/dist/tasty/hooks/useKeyframes.js +0 -55
- package/dist/tasty/hooks/useKeyframes.js.map +0 -1
- package/dist/tasty/hooks/useProperty.d.ts +0 -80
- package/dist/tasty/hooks/useProperty.js +0 -92
- package/dist/tasty/hooks/useProperty.js.map +0 -1
- package/dist/tasty/hooks/useRawCSS.d.ts +0 -54
- package/dist/tasty/hooks/useRawCSS.js +0 -29
- package/dist/tasty/hooks/useRawCSS.js.map +0 -1
- package/dist/tasty/hooks/useStyles.d.ts +0 -41
- package/dist/tasty/hooks/useStyles.js +0 -170
- package/dist/tasty/hooks/useStyles.js.map +0 -1
- package/dist/tasty/index.d.ts +0 -35
- package/dist/tasty/injector/index.d.ts +0 -158
- package/dist/tasty/injector/index.js +0 -155
- package/dist/tasty/injector/index.js.map +0 -1
- package/dist/tasty/injector/injector.d.ts +0 -137
- package/dist/tasty/injector/injector.js +0 -401
- package/dist/tasty/injector/injector.js.map +0 -1
- package/dist/tasty/injector/sheet-manager.d.ts +0 -128
- package/dist/tasty/injector/sheet-manager.js +0 -715
- package/dist/tasty/injector/sheet-manager.js.map +0 -1
- package/dist/tasty/injector/types.d.ts +0 -136
- package/dist/tasty/keyframes/index.js +0 -207
- package/dist/tasty/keyframes/index.js.map +0 -1
- package/dist/tasty/parser/classify.js +0 -320
- package/dist/tasty/parser/classify.js.map +0 -1
- package/dist/tasty/parser/const.js +0 -34
- package/dist/tasty/parser/const.js.map +0 -1
- package/dist/tasty/parser/lru.js +0 -110
- package/dist/tasty/parser/lru.js.map +0 -1
- package/dist/tasty/parser/parser.d.ts +0 -26
- package/dist/tasty/parser/parser.js +0 -117
- package/dist/tasty/parser/parser.js.map +0 -1
- package/dist/tasty/parser/tokenizer.js +0 -70
- package/dist/tasty/parser/tokenizer.js.map +0 -1
- package/dist/tasty/parser/types.d.ts +0 -47
- package/dist/tasty/parser/types.js +0 -47
- package/dist/tasty/parser/types.js.map +0 -1
- package/dist/tasty/pipeline/conditions.js +0 -378
- package/dist/tasty/pipeline/conditions.js.map +0 -1
- package/dist/tasty/pipeline/exclusive.js +0 -232
- package/dist/tasty/pipeline/exclusive.js.map +0 -1
- package/dist/tasty/pipeline/index.d.ts +0 -52
- package/dist/tasty/pipeline/index.js +0 -639
- package/dist/tasty/pipeline/index.js.map +0 -1
- package/dist/tasty/pipeline/materialize.js +0 -822
- package/dist/tasty/pipeline/materialize.js.map +0 -1
- package/dist/tasty/pipeline/parseStateKey.js +0 -422
- package/dist/tasty/pipeline/parseStateKey.js.map +0 -1
- package/dist/tasty/pipeline/simplify.js +0 -558
- package/dist/tasty/pipeline/simplify.js.map +0 -1
- package/dist/tasty/plugins/okhsl-plugin.d.ts +0 -36
- package/dist/tasty/plugins/okhsl-plugin.js +0 -372
- package/dist/tasty/plugins/okhsl-plugin.js.map +0 -1
- package/dist/tasty/plugins/types.d.ts +0 -72
- package/dist/tasty/properties/index.js +0 -159
- package/dist/tasty/properties/index.js.map +0 -1
- package/dist/tasty/states/index.d.ts +0 -44
- package/dist/tasty/states/index.js +0 -390
- package/dist/tasty/states/index.js.map +0 -1
- package/dist/tasty/static/index.d.ts +0 -6
- package/dist/tasty/static/index.js +0 -6
- package/dist/tasty/static/tastyStatic.d.ts +0 -47
- package/dist/tasty/static/tastyStatic.js +0 -32
- package/dist/tasty/static/tastyStatic.js.map +0 -1
- package/dist/tasty/static/types.d.ts +0 -50
- package/dist/tasty/static/types.js +0 -25
- package/dist/tasty/static/types.js.map +0 -1
- package/dist/tasty/styles/align.d.ts +0 -16
- package/dist/tasty/styles/align.js +0 -15
- package/dist/tasty/styles/align.js.map +0 -1
- package/dist/tasty/styles/border.d.ts +0 -26
- package/dist/tasty/styles/border.js +0 -115
- package/dist/tasty/styles/border.js.map +0 -1
- package/dist/tasty/styles/color.d.ts +0 -15
- package/dist/tasty/styles/color.js +0 -24
- package/dist/tasty/styles/color.js.map +0 -1
- package/dist/tasty/styles/createStyle.js +0 -78
- package/dist/tasty/styles/createStyle.js.map +0 -1
- package/dist/tasty/styles/dimension.js +0 -100
- package/dist/tasty/styles/dimension.js.map +0 -1
- package/dist/tasty/styles/display.d.ts +0 -38
- package/dist/tasty/styles/display.js +0 -68
- package/dist/tasty/styles/display.js.map +0 -1
- package/dist/tasty/styles/fade.d.ts +0 -16
- package/dist/tasty/styles/fade.js +0 -58
- package/dist/tasty/styles/fade.js.map +0 -1
- package/dist/tasty/styles/fill.d.ts +0 -45
- package/dist/tasty/styles/fill.js +0 -52
- package/dist/tasty/styles/fill.js.map +0 -1
- package/dist/tasty/styles/flow.d.ts +0 -17
- package/dist/tasty/styles/flow.js +0 -13
- package/dist/tasty/styles/flow.js.map +0 -1
- package/dist/tasty/styles/gap.d.ts +0 -32
- package/dist/tasty/styles/gap.js +0 -37
- package/dist/tasty/styles/gap.js.map +0 -1
- package/dist/tasty/styles/height.d.ts +0 -18
- package/dist/tasty/styles/height.js +0 -21
- package/dist/tasty/styles/height.js.map +0 -1
- package/dist/tasty/styles/index.d.ts +0 -3
- package/dist/tasty/styles/index.js +0 -10
- package/dist/tasty/styles/index.js.map +0 -1
- package/dist/tasty/styles/inset.d.ts +0 -51
- package/dist/tasty/styles/inset.js +0 -143
- package/dist/tasty/styles/inset.js.map +0 -1
- package/dist/tasty/styles/justify.d.ts +0 -16
- package/dist/tasty/styles/justify.js +0 -15
- package/dist/tasty/styles/justify.js.map +0 -1
- package/dist/tasty/styles/list.d.ts +0 -17
- package/dist/tasty/styles/list.js +0 -99
- package/dist/tasty/styles/list.js.map +0 -1
- package/dist/tasty/styles/margin.d.ts +0 -29
- package/dist/tasty/styles/margin.js +0 -97
- package/dist/tasty/styles/margin.js.map +0 -1
- package/dist/tasty/styles/outline.d.ts +0 -30
- package/dist/tasty/styles/outline.js +0 -66
- package/dist/tasty/styles/outline.js.map +0 -1
- package/dist/tasty/styles/padding.d.ts +0 -29
- package/dist/tasty/styles/padding.js +0 -97
- package/dist/tasty/styles/padding.js.map +0 -1
- package/dist/tasty/styles/predefined.d.ts +0 -74
- package/dist/tasty/styles/predefined.js +0 -242
- package/dist/tasty/styles/predefined.js.map +0 -1
- package/dist/tasty/styles/preset.d.ts +0 -48
- package/dist/tasty/styles/preset.js +0 -126
- package/dist/tasty/styles/preset.js.map +0 -1
- package/dist/tasty/styles/radius.d.ts +0 -15
- package/dist/tasty/styles/radius.js +0 -52
- package/dist/tasty/styles/radius.js.map +0 -1
- package/dist/tasty/styles/scrollbar.d.ts +0 -22
- package/dist/tasty/styles/scrollbar.js +0 -109
- package/dist/tasty/styles/scrollbar.js.map +0 -1
- package/dist/tasty/styles/shadow.d.ts +0 -15
- package/dist/tasty/styles/shadow.js +0 -28
- package/dist/tasty/styles/shadow.js.map +0 -1
- package/dist/tasty/styles/styledScrollbar.d.ts +0 -48
- package/dist/tasty/styles/styledScrollbar.js +0 -39
- package/dist/tasty/styles/styledScrollbar.js.map +0 -1
- package/dist/tasty/styles/transition.d.ts +0 -15
- package/dist/tasty/styles/transition.js +0 -139
- package/dist/tasty/styles/transition.js.map +0 -1
- package/dist/tasty/styles/types.d.ts +0 -499
- package/dist/tasty/styles/width.d.ts +0 -18
- package/dist/tasty/styles/width.js +0 -21
- package/dist/tasty/styles/width.js.map +0 -1
- package/dist/tasty/tasty.d.ts +0 -936
- package/dist/tasty/tasty.js +0 -191
- package/dist/tasty/tasty.js.map +0 -1
- package/dist/tasty/types.d.ts +0 -192
- package/dist/tasty/utils/cache-wrapper.js +0 -25
- package/dist/tasty/utils/cache-wrapper.js.map +0 -1
- package/dist/tasty/utils/case-converter.js +0 -9
- package/dist/tasty/utils/case-converter.js.map +0 -1
- package/dist/tasty/utils/colors.d.ts +0 -6
- package/dist/tasty/utils/colors.js +0 -10
- package/dist/tasty/utils/colors.js.map +0 -1
- package/dist/tasty/utils/dotize.d.ts +0 -27
- package/dist/tasty/utils/dotize.js +0 -123
- package/dist/tasty/utils/dotize.js.map +0 -1
- package/dist/tasty/utils/filter-base-props.d.ts +0 -16
- package/dist/tasty/utils/filter-base-props.js +0 -46
- package/dist/tasty/utils/filter-base-props.js.map +0 -1
- package/dist/tasty/utils/get-display-name.d.ts +0 -8
- package/dist/tasty/utils/get-display-name.js +0 -11
- package/dist/tasty/utils/get-display-name.js.map +0 -1
- package/dist/tasty/utils/hsl-to-rgb.js +0 -39
- package/dist/tasty/utils/hsl-to-rgb.js.map +0 -1
- package/dist/tasty/utils/is-dev-env.js +0 -20
- package/dist/tasty/utils/is-dev-env.js.map +0 -1
- package/dist/tasty/utils/merge-styles.d.ts +0 -8
- package/dist/tasty/utils/merge-styles.js +0 -147
- package/dist/tasty/utils/merge-styles.js.map +0 -1
- package/dist/tasty/utils/mod-attrs.d.ts +0 -9
- package/dist/tasty/utils/mod-attrs.js +0 -22
- package/dist/tasty/utils/mod-attrs.js.map +0 -1
- package/dist/tasty/utils/okhsl-to-rgb.js +0 -297
- package/dist/tasty/utils/okhsl-to-rgb.js.map +0 -1
- package/dist/tasty/utils/process-tokens.d.ts +0 -32
- package/dist/tasty/utils/process-tokens.js +0 -172
- package/dist/tasty/utils/process-tokens.js.map +0 -1
- package/dist/tasty/utils/resolve-recipes.d.ts +0 -18
- package/dist/tasty/utils/resolve-recipes.js +0 -144
- package/dist/tasty/utils/resolve-recipes.js.map +0 -1
- package/dist/tasty/utils/string.js +0 -9
- package/dist/tasty/utils/string.js.map +0 -1
- package/dist/tasty/utils/styles.d.ts +0 -204
- package/dist/tasty/utils/styles.js +0 -577
- package/dist/tasty/utils/styles.js.map +0 -1
- package/dist/tasty/utils/typography.d.ts +0 -37
- package/dist/tasty/utils/typography.js +0 -54
- package/dist/tasty/utils/typography.js.map +0 -1
- package/dist/tasty/utils/warnings.d.ts +0 -17
- package/dist/tasty/utils/warnings.js +0 -17
- package/dist/tasty/utils/warnings.js.map +0 -1
- package/dist/tasty/zero/babel.d.ts +0 -111
- package/dist/tasty/zero/babel.js +0 -283
- package/dist/tasty/zero/babel.js.map +0 -1
- package/dist/tasty/zero/index.d.ts +0 -4
- package/dist/tasty/zero/index.js +0 -5
- package/dist/tasty/zero/next.d.ts +0 -61
- package/dist/tasty/zero/next.js +0 -79
- package/dist/tasty/zero/next.js.map +0 -1
- package/dist/tasty.config.ts +0 -311
- package/dist/tokens/typography.d.ts +0 -35
- package/dist/tokens/typography.js +0 -238
- package/dist/tokens/typography.js.map +0 -1
- package/dist/utils/cache-wrapper.js +0 -25
- package/dist/utils/cache-wrapper.js.map +0 -1
- package/dist/utils/case-converter.js +0 -9
- package/dist/utils/case-converter.js.map +0 -1
- package/dist/utils/hsl-to-rgb.js +0 -39
- package/dist/utils/hsl-to-rgb.js.map +0 -1
- package/dist/utils/merge-styles.js +0 -147
- package/dist/utils/merge-styles.js.map +0 -1
- package/dist/utils/okhsl-to-rgb.js +0 -297
- package/dist/utils/okhsl-to-rgb.js.map +0 -1
- package/dist/utils/process-tokens.js +0 -29
- package/dist/utils/process-tokens.js.map +0 -1
- package/dist/utils/resolve-recipes.js +0 -144
- package/dist/utils/resolve-recipes.js.map +0 -1
- package/dist/utils/string.js +0 -9
- package/dist/utils/string.js.map +0 -1
- package/dist/utils/styles.d.ts +0 -23
- package/dist/utils/styles.js +0 -338
- package/dist/utils/styles.js.map +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
2
|
-
import { tasty } from "../../../tasty/tasty.js";
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
3
2
|
import { Block } from "../../Block.js";
|
|
4
3
|
import { ItemActionProvider } from "../../actions/ItemActionContext.js";
|
|
5
4
|
import { Space } from "../../layout/Space.js";
|
|
@@ -7,6 +6,7 @@ import { _Item } from "../../content/Item/Item.js";
|
|
|
7
6
|
import { getThemeIcon } from "../Toast/useToast.js";
|
|
8
7
|
import { Flex } from "../../layout/Flex.js";
|
|
9
8
|
import { DismissActionDetectedContext, NotificationAction, NotificationDismissProvider } from "./NotificationAction.js";
|
|
9
|
+
import { tasty } from "@tenphi/tasty";
|
|
10
10
|
import { useContext, useRef } from "react";
|
|
11
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationCard.js","names":["Item"],"sources":["../../../../src/components/overlays/Notifications/NotificationCard.tsx"],"sourcesContent":["import { Key, ReactNode, useContext, useRef } from 'react';\n\nimport {
|
|
1
|
+
{"version":3,"file":"NotificationCard.js","names":["Item"],"sources":["../../../../src/components/overlays/Notifications/NotificationCard.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { Key, ReactNode, useContext, useRef } from 'react';\n\nimport { ItemActionProvider } from '../../actions/ItemActionContext';\nimport { Block } from '../../Block';\nimport { Item } from '../../content/Item/Item';\nimport { Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\nimport { getThemeIcon } from '../Toast/useToast';\n\nimport {\n DismissActionDetectedContext,\n NotificationAction,\n NotificationDismissProvider,\n} from './NotificationAction';\n\nimport type { DismissReason, NotificationType } from './types';\n\n// ─── Styled Components ──────────────────────────────────────────────\n\nconst StyledItem = tasty(Item, {\n styles: {\n width: {\n '': 'max min((100vw - 4x), 50x)',\n flat: '100%',\n },\n shadow: {\n '': '$shadow',\n flat: false,\n },\n radius: {\n '': '1cr',\n flat: '0',\n },\n transition: 'theme, inset',\n\n Description: {\n preset: 't4',\n },\n },\n});\n\n// ─── Dismiss Action Detection ────────────────────────────────────────\n\n/**\n * Provides a ref via context that NotificationAction children write to\n * during render when `isDismiss` is set. The ref is reset each render.\n */\nfunction DismissActionDetector({ children }: { children: ReactNode }) {\n const ref = useRef(false);\n\n // Reset each render so detection is fresh\n ref.current = false;\n\n return (\n <DismissActionDetectedContext.Provider value={ref}>\n {children}\n </DismissActionDetectedContext.Provider>\n );\n}\n\n/**\n * Renders the default \"Dismiss\" button only if no sibling NotificationAction\n * has `isDismiss` set. Reads from DismissActionDetectedContext ref which is\n * populated by actions that rendered before this component (left-to-right order).\n */\nfunction AutoDismissButton() {\n const dismissDetectedRef = useContext(DismissActionDetectedContext);\n\n if (dismissDetectedRef?.current) return null;\n\n return <NotificationAction isDismiss>Dismiss</NotificationAction>;\n}\n\n// ─── ActionsSection ─────────────────────────────────────────────────\n\ninterface ActionsSectionProps {\n actions?: ReactNode;\n theme?: NotificationType;\n /**\n * Whether to show the auto-appended \"Dismiss\" button.\n * Controlled by `isDismissable` on the notification.\n *\n * When false, no default \"Dismiss\" button is rendered, but actions with\n * `closeOnPress` (default `true`) can still close the notification via\n * the dismiss context.\n */\n showAutoDismiss: boolean;\n /** Whether the dismiss context is available (notificationId + onDismiss present) */\n hasDismissContext: boolean;\n notificationId?: Key;\n onDismiss?: (id: Key, reason: DismissReason) => void;\n onRestore?: (id: Key) => void;\n}\n\n/**\n * Extracted sub-component for the actions area of a notification card.\n *\n * The dismiss provider is always rendered when `hasDismissContext` is true,\n * so any action with `closeOnPress` can close the notification — regardless\n * of `isDismissable`. The `showAutoDismiss` flag only controls the\n * auto-appended \"Dismiss\" button.\n */\nfunction ActionsSection({\n actions,\n theme,\n showAutoDismiss,\n hasDismissContext,\n notificationId,\n onDismiss,\n onRestore,\n}: ActionsSectionProps) {\n const actionsContent = (\n <Space placeSelf=\"end\" placeContent=\"end\" flexGrow={1}>\n {actions}\n {showAutoDismiss && <AutoDismissButton />}\n </Space>\n );\n\n const wrappedContent = showAutoDismiss ? (\n <DismissActionDetector>{actionsContent}</DismissActionDetector>\n ) : (\n actionsContent\n );\n\n return (\n <ItemActionProvider type=\"card\" theme={theme}>\n {hasDismissContext ? (\n <NotificationDismissProvider\n notificationId={notificationId!}\n onDismiss={onDismiss!}\n onRestore={onRestore}\n >\n {wrappedContent}\n </NotificationDismissProvider>\n ) : (\n wrappedContent\n )}\n </ItemActionProvider>\n );\n}\n\n// ─── NotificationCard ────────────────────────────────────────────────\n\nexport interface NotificationCardProps {\n qa?: string;\n /** Notification theme */\n theme?: NotificationType;\n /** Primary text */\n title?: ReactNode;\n /** Secondary text */\n description?: ReactNode;\n /** Custom icon override (theme default used if omitted) */\n icon?: ReactNode;\n /** Action buttons rendered below description */\n actions?: ReactNode;\n /**\n * Whether the notification shows the default dismiss UI (auto-appended\n * \"Dismiss\" button and Escape key). Default: true.\n *\n * When false, no default \"Dismiss\" button is rendered and Escape does\n * nothing, but actions with `closeOnPress` (default) can still close\n * the notification.\n */\n isDismissable?: boolean;\n /** When false the card drops its shadow (e.g. inside a list). Default: true. */\n elevated?: boolean;\n /** Notification id */\n notificationId?: Key;\n /** Called when the notification is dismissed */\n onDismiss?: (id: Key, reason: DismissReason) => void;\n /** Called when a dismissed notification should be restored (async action returned false) */\n onRestore?: (id: Key) => void;\n /** Suffix content (e.g. timestamp) */\n suffix?: ReactNode;\n}\n\n/**\n * Shared presentational card used by both overlay NotificationItem\n * and PersistentNotificationListItem.\n */\nexport function NotificationCard({\n qa = 'Notification',\n theme,\n title,\n description,\n icon: providedIcon,\n actions,\n isDismissable = true,\n elevated = true,\n notificationId,\n onDismiss,\n onRestore,\n suffix,\n}: NotificationCardProps) {\n const icon = getThemeIcon(theme, providedIcon);\n\n const hasDismissContext = notificationId != null && onDismiss != null;\n const showAutoDismiss = isDismissable && hasDismissContext;\n const hasActions = !!(actions || showAutoDismiss);\n\n const descriptionContent: ReactNode =\n description || hasActions ? (\n <Flex flow=\"row wrap\" gap=\"0.5x 1x\" placeItems=\"center stretch\">\n {description && <Block>{description}</Block>}\n {hasActions && (\n <ActionsSection\n actions={actions}\n theme={theme}\n showAutoDismiss={showAutoDismiss}\n hasDismissContext={hasDismissContext}\n notificationId={notificationId}\n onDismiss={onDismiss}\n onRestore={onRestore}\n />\n )}\n </Flex>\n ) : undefined;\n\n return (\n <StyledItem\n qa={qa}\n type=\"card\"\n theme={theme}\n icon={icon}\n description={descriptionContent}\n suffix={suffix}\n mods={{ flat: !elevated }}\n styles={!elevated ? { border: '0' } : undefined}\n >\n {title}\n </StyledItem>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAoBA,MAAM,aAAa,MAAMA,OAAM,EAC7B,QAAQ;CACN,OAAO;EACL,IAAI;EACJ,MAAM;EACP;CACD,QAAQ;EACN,IAAI;EACJ,MAAM;EACP;CACD,QAAQ;EACN,IAAI;EACJ,MAAM;EACP;CACD,YAAY;CAEZ,aAAa,EACX,QAAQ,MACT;CACF,EACF,CAAC;;;;;AAQF,SAAS,sBAAsB,EAAE,YAAqC;CACpE,MAAM,MAAM,OAAO,MAAM;AAGzB,KAAI,UAAU;AAEd,QACE,oBAAC,6BAA6B;EAAS,OAAO;EAC3C;GACqC;;;;;;;AAS5C,SAAS,oBAAoB;AAG3B,KAF2B,WAAW,6BAA6B,EAE3C,QAAS,QAAO;AAExC,QAAO,oBAAC;EAAmB;YAAU;GAA4B;;;;;;;;;;AAgCnE,SAAS,eAAe,EACtB,SACA,OACA,iBACA,mBACA,gBACA,WACA,aACsB;CACtB,MAAM,iBACJ,qBAAC;EAAM,WAAU;EAAM,cAAa;EAAM,UAAU;aACjD,SACA,mBAAmB,oBAAC,sBAAoB;GACnC;CAGV,MAAM,iBAAiB,kBACrB,oBAAC,mCAAuB,iBAAuC,GAE/D;AAGF,QACE,oBAAC;EAAmB,MAAK;EAAc;YACpC,oBACC,oBAAC;GACiB;GACL;GACA;aAEV;IAC2B,GAE9B;GAEiB;;;;;;AA2CzB,SAAgB,iBAAiB,EAC/B,KAAK,gBACL,OACA,OACA,aACA,MAAM,cACN,SACA,gBAAgB,MAChB,WAAW,MACX,gBACA,WACA,WACA,UACwB;CACxB,MAAM,OAAO,aAAa,OAAO,aAAa;CAE9C,MAAM,oBAAoB,kBAAkB,QAAQ,aAAa;CACjE,MAAM,kBAAkB,iBAAiB;CACzC,MAAM,aAAa,CAAC,EAAE,WAAW;AAoBjC,QACE,oBAAC;EACK;EACJ,MAAK;EACE;EACD;EACN,aAvBF,eAAe,aACb,qBAAC;GAAK,MAAK;GAAW,KAAI;GAAU,YAAW;cAC5C,eAAe,oBAAC,mBAAO,cAAoB,EAC3C,cACC,oBAAC;IACU;IACF;IACU;IACE;IACH;IACL;IACA;KACX;IAEC,GACL;EASM;EACR,MAAM,EAAE,MAAM,CAAC,UAAU;EACzB,QAAQ,CAAC,WAAW,EAAE,QAAQ,KAAK,GAAG;YAErC;GACU"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
2
|
-
import { tasty } from "../../../tasty/tasty.js";
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
3
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
3
|
import { NotificationCard } from "./NotificationCard.js";
|
|
4
|
+
import { tasty } from "@tenphi/tasty";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
|
|
7
7
|
//#region src/components/overlays/Notifications/NotificationItem.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationItem.js","names":[],"sources":["../../../../src/components/overlays/Notifications/NotificationItem.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"NotificationItem.js","names":[],"sources":["../../../../src/components/overlays/Notifications/NotificationItem.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { Key, KeyboardEvent } from 'react';\n\nimport { useEvent } from '../../../_internal';\n\nimport { NotificationCard } from './NotificationCard';\n\nimport type {\n DismissReason,\n InternalNotification,\n NotificationType,\n} from './types';\n\n// ─── ARIA Helpers ────────────────────────────────────────────────────\n\nfunction getAriaRole(theme?: NotificationType): 'alert' | 'status' {\n if (theme === 'danger' || theme === 'warning') {\n return 'alert';\n }\n\n return 'status';\n}\n\nfunction getAriaLive(theme?: NotificationType): 'assertive' | 'polite' {\n if (theme === 'danger' || theme === 'warning') {\n return 'assertive';\n }\n\n return 'polite';\n}\n\n// ─── Styled Wrapper ──────────────────────────────────────────────────\n\n/**\n * Wrapper element for overlay notification items.\n *\n * Accessibility attributes are set as static defaults:\n * - `tabIndex={0}`: Makes the notification focusable via keyboard, allowing\n * users to Tab to it and press Escape to dismiss.\n * - `aria-atomic=\"true\"`: Ensures screen readers announce the entire notification\n * when content changes (not just the diff).\n * - `aria-relevant=\"additions text\"`: Announces when new content is added or\n * text changes, but not when elements are removed (e.g., during exit animation).\n *\n * The `role` and `aria-live` are set dynamically per-instance based on theme\n * (see `getAriaRole` and `getAriaLive` above).\n */\nconst NotificationItemWrapper = tasty({\n as: 'div',\n tabIndex: 0,\n 'aria-atomic': 'true',\n 'aria-relevant': 'additions text',\n styles: {\n outline: {\n '': 'none',\n },\n },\n});\n\n// ─── NotificationItem Component ─────────────────────────────────────\n\nexport interface NotificationItemProps {\n notification: InternalNotification;\n onDismiss: (id: Key, reason: DismissReason) => void;\n onRestore?: (id: Key) => void;\n}\n\nexport function NotificationItem({\n notification,\n onDismiss,\n onRestore,\n}: NotificationItemProps) {\n const {\n theme,\n title,\n description,\n icon,\n actions,\n isDismissable = true,\n id,\n internalId,\n } = notification;\n\n const notificationId = id ?? internalId;\n\n const handleKeyDown = useEvent((e: KeyboardEvent) => {\n if (e.key === 'Escape' && isDismissable) {\n e.stopPropagation();\n onDismiss(notificationId, 'close');\n }\n });\n\n return (\n <NotificationItemWrapper\n role={getAriaRole(theme)}\n aria-live={getAriaLive(theme)}\n onKeyDown={handleKeyDown}\n >\n <NotificationCard\n qa=\"Notification\"\n theme={theme}\n title={title}\n description={description}\n icon={icon}\n actions={actions}\n isDismissable={isDismissable}\n notificationId={notificationId}\n onDismiss={onDismiss}\n onRestore={onRestore}\n />\n </NotificationItemWrapper>\n );\n}\n"],"mappings":";;;;;;;AAeA,SAAS,YAAY,OAA8C;AACjE,KAAI,UAAU,YAAY,UAAU,UAClC,QAAO;AAGT,QAAO;;AAGT,SAAS,YAAY,OAAkD;AACrE,KAAI,UAAU,YAAY,UAAU,UAClC,QAAO;AAGT,QAAO;;;;;;;;;;;;;;;;AAmBT,MAAM,0BAA0B,MAAM;CACpC,IAAI;CACJ,UAAU;CACV,eAAe;CACf,iBAAiB;CACjB,QAAQ,EACN,SAAS,EACP,IAAI,QACL,EACF;CACF,CAAC;AAUF,SAAgB,iBAAiB,EAC/B,cACA,WACA,aACwB;CACxB,MAAM,EACJ,OACA,OACA,aACA,MACA,SACA,gBAAgB,MAChB,IACA,eACE;CAEJ,MAAM,iBAAiB,MAAM;CAE7B,MAAM,gBAAgB,UAAU,MAAqB;AACnD,MAAI,EAAE,QAAQ,YAAY,eAAe;AACvC,KAAE,iBAAiB;AACnB,aAAU,gBAAgB,QAAQ;;GAEpC;AAEF,QACE,oBAAC;EACC,MAAM,YAAY,MAAM;EACxB,aAAW,YAAY,MAAM;EAC7B,WAAW;YAEX,oBAAC;GACC,IAAG;GACI;GACA;GACM;GACP;GACG;GACM;GACC;GACL;GACA;IACX;GACsB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
2
|
-
import { tasty } from "../../../tasty/tasty.js";
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
3
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
4
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
5
4
|
import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
|
|
6
5
|
import { Portal } from "../../portal/Portal.js";
|
|
7
6
|
import { ToastItem } from "../Toast/ToastItem.js";
|
|
8
7
|
import { NotificationItem } from "./NotificationItem.js";
|
|
8
|
+
import { tasty } from "@tenphi/tasty";
|
|
9
9
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
10
10
|
import { jsx } from "react/jsx-runtime";
|
|
11
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayContainer.js","names":[],"sources":["../../../../src/components/overlays/Notifications/OverlayContainer.tsx"],"sourcesContent":["import {\n FocusEvent,\n Key,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { tasty } from '../../../tasty';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\nimport { ToastItem } from '../Toast/ToastItem';\n\nimport { NotificationItem } from './NotificationItem';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst COLLAPSE_VISIBLE_HEIGHT = 10;\nconst CONTAINER_OFFSET = 16;\nconst ITEM_GAP = 8;\nconst DEFAULT_ITEM_HEIGHT = 56;\n\n// ─── Styled Elements ─────────────────────────────────────────────────\n\nconst OverlayContainerElement = tasty({\n styles: {\n position: 'fixed',\n top: '2x',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 100,\n padding: '1x',\n height: '0',\n pointerEvents: 'none',\n },\n});\n\nconst OverlayItemWrapper = tasty({\n styles: {\n position: 'absolute',\n top: '0',\n left: '50%',\n transform: {\n '': 'translateX(-50%) translateY(-50%)',\n 'isMeasured & isShown': 'translateX(-50%) translateY(0)',\n },\n width: 'max-content 50x',\n pointerEvents: 'auto',\n transition: {\n '': 'opacity $transition ease-in, transform $transition ease-in',\n isMeasured:\n 'top $transition ease-in, opacity $transition ease-in, transform $transition ease-in',\n },\n opacity: {\n '': 0,\n isShown: 1,\n },\n },\n});\n\n// ─── Unified Item Type ───────────────────────────────────────────────\n\ntype OverlayItem =\n | { kind: 'toast'; data: InternalToast }\n | { kind: 'notification'; data: InternalNotification };\n\nfunction getItemId(item: OverlayItem): string {\n return item.data.internalId;\n}\n\nfunction isItemExiting(item: OverlayItem): boolean {\n return item.data.isExiting === true;\n}\n\nfunction getItemCreatedAt(item: OverlayItem): number {\n return item.data.createdAt;\n}\n\n// ─── useItemPositions Hook ───────────────────────────────────────────\n\ninterface ItemPositionsResult {\n heights: Record<string, number>;\n /** Set of item IDs that have been measured AND painted at their correct position. */\n settledIds: Set<string>;\n positions: Map<string, number>;\n lastPositionsRef: ReturnType<typeof useRef<Map<string, number>>>;\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>;\n createRefCallback: (\n itemId: string,\n displayRef: (el: HTMLElement | null) => void,\n ) => (el: HTMLDivElement | null) => void;\n}\n\n/**\n * Manages height measurement, position calculation, and ref tracking\n * for overlay items. Extracted from OverlayContainer for readability.\n */\nfunction useItemPositions(visibleItems: OverlayItem[]): ItemPositionsResult {\n const [heights, setHeights] = useState<Record<string, number>>({});\n const itemRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n const lastPositionsRef = useRef<Map<string, number>>(new Map());\n\n // Items that have been measured AND painted at their correct position.\n // Lags one frame behind `heights` so the browser paints the item at\n // its final `top` before the CSS `top` transition is enabled.\n const [settledIds, setSettledIds] = useState<Set<string>>(new Set());\n const rafRef = useRef<number | null>(null);\n\n // Measure heights using layout effect to avoid visible layout shifts.\n // Runs every render but bails early if nothing changed.\n useLayoutEffect(() => {\n const newHeights: Record<string, number> = {};\n let hasChanges = false;\n\n itemRefs.current.forEach((el, id) => {\n const height = el.offsetHeight || DEFAULT_ITEM_HEIGHT;\n newHeights[id] = height;\n\n if (heights[id] !== height) {\n hasChanges = true;\n }\n });\n\n for (const id of Object.keys(heights)) {\n if (!itemRefs.current.has(id)) {\n hasChanges = true;\n }\n }\n\n if (hasChanges) {\n setHeights(newHeights);\n }\n });\n\n // After heights change, schedule settledIds update for the next frame.\n // This ensures the item is painted at its correct position (with no top\n // transition) before we enable the transition.\n useEffect(() => {\n const heightKeys = Object.keys(heights);\n const newIds = heightKeys.filter((id) => !settledIds.has(id));\n const hasStaleIds =\n settledIds.size > 0 && [...settledIds].some((id) => !(id in heights));\n\n if (newIds.length === 0 && !hasStaleIds) return;\n\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n }\n\n // For pruning-only updates (no new items), apply synchronously since\n // there's no need to wait for a paint frame.\n if (newIds.length === 0 && hasStaleIds) {\n setSettledIds((prev) => new Set(heightKeys.filter((id) => prev.has(id))));\n return;\n }\n\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n setSettledIds((prev) => {\n const next = new Set<string>();\n\n // Only keep IDs that still exist in heights (prune removed items)\n for (const id of heightKeys) {\n if (prev.has(id)) {\n next.add(id);\n }\n }\n\n for (const id of newIds) {\n next.add(id);\n }\n\n return next;\n });\n });\n\n return () => {\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [heights]);\n\n const createRefCallback = useCallback(\n (itemId: string, displayRef: (el: HTMLElement | null) => void) =>\n (el: HTMLDivElement | null) => {\n displayRef(el);\n\n if (el) {\n itemRefs.current.set(itemId, el);\n } else {\n itemRefs.current.delete(itemId);\n }\n },\n [],\n );\n\n const positions = useMemo(() => {\n const posMap = new Map<string, number>();\n let currentTop = 0;\n\n for (const item of visibleItems) {\n const id = getItemId(item);\n posMap.set(id, currentTop);\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n currentTop += height + ITEM_GAP;\n }\n\n return posMap;\n }, [visibleItems, heights]);\n\n useEffect(() => {\n positions.forEach((pos, id) => {\n lastPositionsRef.current.set(id, pos);\n });\n }, [positions]);\n\n return {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n };\n}\n\n// ─── useCollapseState Hook ───────────────────────────────────────────\n\ninterface CollapseStateResult {\n isCollapsed: boolean;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n handleFocus: () => void;\n handleBlur: (e: FocusEvent) => void;\n containerRef: RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages collapse/expand behavior and pause state for the overlay container.\n * Extracted from OverlayContainer for readability.\n */\nfunction useCollapseState(\n canCollapse: boolean,\n allItems: OverlayItem[],\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>,\n onPauseChange: (paused: boolean) => void,\n): CollapseStateResult {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const boundsRef = useRef<DOMRect | null>(null);\n\n const updateBounds = useCallback(() => {\n const refs = itemRefs.current;\n\n if (!refs || refs.size === 0) {\n boundsRef.current = null;\n return;\n }\n\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n refs.forEach((el) => {\n const rect = el.getBoundingClientRect();\n minX = Math.min(minX, rect.left);\n minY = Math.min(minY, rect.top);\n maxX = Math.max(maxX, rect.right);\n maxY = Math.max(maxY, rect.bottom);\n });\n\n if (typeof DOMRect !== 'undefined') {\n boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);\n } else {\n boundsRef.current = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n top: minY,\n right: maxX,\n bottom: maxY,\n left: minX,\n toJSON: () => ({}),\n } as DOMRect;\n }\n }, [itemRefs]);\n\n // Track mouse for collapse — expand when mouse leaves bounds\n useEffect(() => {\n if (!isCollapsed) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const bounds = boundsRef.current;\n\n if (!bounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n return;\n }\n\n const padding = 20;\n const isInBounds =\n e.clientX >= bounds.left - padding &&\n e.clientX <= bounds.right + padding &&\n e.clientY >= bounds.top - padding &&\n e.clientY <= bounds.bottom + padding;\n\n if (!isInBounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [isCollapsed, onPauseChange]);\n\n // Update bounds when items change\n useEffect(() => {\n updateBounds();\n }, [allItems, updateBounds]);\n\n const handleMouseEnter = useCallback(() => {\n updateBounds();\n onPauseChange(true);\n\n if (canCollapse) {\n setIsCollapsed(true);\n }\n }, [updateBounds, canCollapse, onPauseChange]);\n\n const handleMouseLeave = useCallback(() => {\n if (!isCollapsed) {\n onPauseChange(false);\n }\n }, [isCollapsed, onPauseChange]);\n\n const handleFocus = useCallback(() => {\n onPauseChange(true);\n }, [onPauseChange]);\n\n const handleBlur = useCallback(\n (e: FocusEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.relatedTarget as Node)\n ) {\n onPauseChange(false);\n }\n },\n [onPauseChange],\n );\n\n return {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n };\n}\n\n// ─── Overlay Container ───────────────────────────────────────────────\n//\n// INTENTIONAL: Position calculations are done manually (absolute positioning + JS\n// height tracking) rather than relying on CSS flexbox/grid layout. This is\n// deliberate — the container mixes enter/exit animations, collapse behavior, and\n// heterogeneous item sizes (toasts vs notifications) which require per-item\n// position control. CSS-only solutions (e.g., flex column with gap) break when\n// items exit asynchronously or when collapse transforms need to be computed per-item.\n\nexport interface OverlayContainerProps {\n toasts: InternalToast[];\n notifications: InternalNotification[];\n onToastExitComplete: (internalId: string) => void;\n onNotificationExitComplete: (internalId: string) => void;\n onNotificationDismiss: (id: Key, reason: DismissReason) => void;\n onNotificationRestore: (id: Key) => void;\n onPauseChange: (paused: boolean) => void;\n}\n\nexport function OverlayContainer({\n toasts,\n notifications,\n onToastExitComplete,\n onNotificationExitComplete,\n onNotificationDismiss,\n onNotificationRestore,\n onPauseChange,\n}: OverlayContainerProps) {\n // Merge toasts and notifications into a single ordered list\n const allItems: OverlayItem[] = useMemo(() => {\n const items: OverlayItem[] = [\n ...toasts.map((t): OverlayItem => ({ kind: 'toast', data: t })),\n ...notifications.map(\n (n): OverlayItem => ({ kind: 'notification', data: n }),\n ),\n ];\n\n // Sort by createdAt ascending (oldest first = bottom of stack, newest last = top)\n items.sort((a, b) => getItemCreatedAt(a) - getItemCreatedAt(b));\n\n return items;\n }, [toasts, notifications]);\n\n const visibleItems = useMemo(\n () => allItems.filter((item) => !isItemExiting(item)),\n [allItems],\n );\n const hasNotifications = notifications.some((n) => !n.isExiting);\n const hasActionableToasts = toasts.some((t) => !t.isExiting && t.actions);\n const canCollapse = !hasNotifications && !hasActionableToasts;\n\n const {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n } = useItemPositions(visibleItems);\n\n const {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);\n\n // ─── Callbacks ─────────────────────────────────────────────────────\n\n // When the user dismisses a notification they were hovering, the element\n // is removed from the DOM so mouseLeave never fires. Explicitly unpause\n // so remaining notifications' timers resume.\n const handleNotificationDismiss = useEvent(\n (id: Key, reason: DismissReason) => {\n onNotificationDismiss(id, reason);\n onPauseChange(false);\n },\n );\n\n const handleExitComplete = useEvent((item: OverlayItem) => {\n const id = getItemId(item);\n lastPositionsRef.current?.delete(id);\n\n if (item.kind === 'toast') {\n onToastExitComplete(item.data.internalId);\n } else {\n onNotificationExitComplete(item.data.internalId);\n }\n });\n\n // useCallback (not useEvent) because this is called during render.\n // useEvent defers the ref update to useLayoutEffect, so during render\n // it would still read the previous closure's positions/heights.\n const getItemStyle = useCallback(\n (item: OverlayItem, index: number, total: number) => {\n const id = getItemId(item);\n const baseTop =\n positions.get(id) ?? lastPositionsRef.current?.get(id) ?? 0;\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n\n if (!isCollapsed || !canCollapse) {\n return { top: `${baseTop}px` };\n }\n\n const isNewest = index === total - 1;\n const collapsedTop = COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height;\n\n return {\n top: `${collapsedTop}px`,\n zIndex: index,\n opacity: isNewest ? 1 : 0,\n pointerEvents: 'none' as const,\n };\n },\n [isCollapsed, canCollapse, positions, heights, lastPositionsRef],\n );\n\n // Build a visibleIndex lookup map to avoid O(n²) findIndex inside render loop\n const visibleIndexMap = useMemo(() => {\n const map = new Map<string, number>();\n\n visibleItems.forEach((item, index) => {\n map.set(getItemId(item), index);\n });\n\n return map;\n }, [visibleItems]);\n\n if (allItems.length === 0) return null;\n\n return (\n <Portal>\n <OverlayContainerElement\n ref={containerRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {allItems.map((item) => {\n const itemId = getItemId(item);\n const visibleIndex = visibleIndexMap.get(itemId) ?? 0;\n const isExiting = isItemExiting(item);\n\n return (\n <DisplayTransition\n key={itemId}\n animateOnMount\n isShown={!isExiting}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(item);\n }\n }}\n >\n {({ isShown, ref }) => (\n <OverlayItemWrapper\n ref={createRefCallback(itemId, ref)}\n mods={{ isShown, isMeasured: settledIds.has(itemId) }}\n style={getItemStyle(item, visibleIndex, visibleItems.length)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {item.kind === 'toast' ? (\n <ToastItem\n {...item.data.itemProps}\n title={item.data.title}\n description={item.data.description}\n theme={item.data.theme}\n icon={item.data.icon}\n isLoading={item.data.isLoading}\n actions={item.data.actions}\n />\n ) : (\n <NotificationItem\n notification={item.data}\n onDismiss={handleNotificationDismiss}\n onRestore={onNotificationRestore}\n />\n )}\n </OverlayItemWrapper>\n )}\n </DisplayTransition>\n );\n })}\n </OverlayContainerElement>\n </Portal>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OverlayContainer.js","names":[],"sources":["../../../../src/components/overlays/Notifications/OverlayContainer.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport {\n FocusEvent,\n Key,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\nimport { ToastItem } from '../Toast/ToastItem';\n\nimport { NotificationItem } from './NotificationItem';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst COLLAPSE_VISIBLE_HEIGHT = 10;\nconst CONTAINER_OFFSET = 16;\nconst ITEM_GAP = 8;\nconst DEFAULT_ITEM_HEIGHT = 56;\n\n// ─── Styled Elements ─────────────────────────────────────────────────\n\nconst OverlayContainerElement = tasty({\n styles: {\n position: 'fixed',\n top: '2x',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 100,\n padding: '1x',\n height: '0',\n pointerEvents: 'none',\n },\n});\n\nconst OverlayItemWrapper = tasty({\n styles: {\n position: 'absolute',\n top: '0',\n left: '50%',\n transform: {\n '': 'translateX(-50%) translateY(-50%)',\n 'isMeasured & isShown': 'translateX(-50%) translateY(0)',\n },\n width: 'max-content 50x',\n pointerEvents: 'auto',\n transition: {\n '': 'opacity $transition ease-in, transform $transition ease-in',\n isMeasured:\n 'top $transition ease-in, opacity $transition ease-in, transform $transition ease-in',\n },\n opacity: {\n '': 0,\n isShown: 1,\n },\n },\n});\n\n// ─── Unified Item Type ───────────────────────────────────────────────\n\ntype OverlayItem =\n | { kind: 'toast'; data: InternalToast }\n | { kind: 'notification'; data: InternalNotification };\n\nfunction getItemId(item: OverlayItem): string {\n return item.data.internalId;\n}\n\nfunction isItemExiting(item: OverlayItem): boolean {\n return item.data.isExiting === true;\n}\n\nfunction getItemCreatedAt(item: OverlayItem): number {\n return item.data.createdAt;\n}\n\n// ─── useItemPositions Hook ───────────────────────────────────────────\n\ninterface ItemPositionsResult {\n heights: Record<string, number>;\n /** Set of item IDs that have been measured AND painted at their correct position. */\n settledIds: Set<string>;\n positions: Map<string, number>;\n lastPositionsRef: ReturnType<typeof useRef<Map<string, number>>>;\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>;\n createRefCallback: (\n itemId: string,\n displayRef: (el: HTMLElement | null) => void,\n ) => (el: HTMLDivElement | null) => void;\n}\n\n/**\n * Manages height measurement, position calculation, and ref tracking\n * for overlay items. Extracted from OverlayContainer for readability.\n */\nfunction useItemPositions(visibleItems: OverlayItem[]): ItemPositionsResult {\n const [heights, setHeights] = useState<Record<string, number>>({});\n const itemRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n const lastPositionsRef = useRef<Map<string, number>>(new Map());\n\n // Items that have been measured AND painted at their correct position.\n // Lags one frame behind `heights` so the browser paints the item at\n // its final `top` before the CSS `top` transition is enabled.\n const [settledIds, setSettledIds] = useState<Set<string>>(new Set());\n const rafRef = useRef<number | null>(null);\n\n // Measure heights using layout effect to avoid visible layout shifts.\n // Runs every render but bails early if nothing changed.\n useLayoutEffect(() => {\n const newHeights: Record<string, number> = {};\n let hasChanges = false;\n\n itemRefs.current.forEach((el, id) => {\n const height = el.offsetHeight || DEFAULT_ITEM_HEIGHT;\n newHeights[id] = height;\n\n if (heights[id] !== height) {\n hasChanges = true;\n }\n });\n\n for (const id of Object.keys(heights)) {\n if (!itemRefs.current.has(id)) {\n hasChanges = true;\n }\n }\n\n if (hasChanges) {\n setHeights(newHeights);\n }\n });\n\n // After heights change, schedule settledIds update for the next frame.\n // This ensures the item is painted at its correct position (with no top\n // transition) before we enable the transition.\n useEffect(() => {\n const heightKeys = Object.keys(heights);\n const newIds = heightKeys.filter((id) => !settledIds.has(id));\n const hasStaleIds =\n settledIds.size > 0 && [...settledIds].some((id) => !(id in heights));\n\n if (newIds.length === 0 && !hasStaleIds) return;\n\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n }\n\n // For pruning-only updates (no new items), apply synchronously since\n // there's no need to wait for a paint frame.\n if (newIds.length === 0 && hasStaleIds) {\n setSettledIds((prev) => new Set(heightKeys.filter((id) => prev.has(id))));\n return;\n }\n\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n setSettledIds((prev) => {\n const next = new Set<string>();\n\n // Only keep IDs that still exist in heights (prune removed items)\n for (const id of heightKeys) {\n if (prev.has(id)) {\n next.add(id);\n }\n }\n\n for (const id of newIds) {\n next.add(id);\n }\n\n return next;\n });\n });\n\n return () => {\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [heights]);\n\n const createRefCallback = useCallback(\n (itemId: string, displayRef: (el: HTMLElement | null) => void) =>\n (el: HTMLDivElement | null) => {\n displayRef(el);\n\n if (el) {\n itemRefs.current.set(itemId, el);\n } else {\n itemRefs.current.delete(itemId);\n }\n },\n [],\n );\n\n const positions = useMemo(() => {\n const posMap = new Map<string, number>();\n let currentTop = 0;\n\n for (const item of visibleItems) {\n const id = getItemId(item);\n posMap.set(id, currentTop);\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n currentTop += height + ITEM_GAP;\n }\n\n return posMap;\n }, [visibleItems, heights]);\n\n useEffect(() => {\n positions.forEach((pos, id) => {\n lastPositionsRef.current.set(id, pos);\n });\n }, [positions]);\n\n return {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n };\n}\n\n// ─── useCollapseState Hook ───────────────────────────────────────────\n\ninterface CollapseStateResult {\n isCollapsed: boolean;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n handleFocus: () => void;\n handleBlur: (e: FocusEvent) => void;\n containerRef: RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages collapse/expand behavior and pause state for the overlay container.\n * Extracted from OverlayContainer for readability.\n */\nfunction useCollapseState(\n canCollapse: boolean,\n allItems: OverlayItem[],\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>,\n onPauseChange: (paused: boolean) => void,\n): CollapseStateResult {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const boundsRef = useRef<DOMRect | null>(null);\n\n const updateBounds = useCallback(() => {\n const refs = itemRefs.current;\n\n if (!refs || refs.size === 0) {\n boundsRef.current = null;\n return;\n }\n\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n refs.forEach((el) => {\n const rect = el.getBoundingClientRect();\n minX = Math.min(minX, rect.left);\n minY = Math.min(minY, rect.top);\n maxX = Math.max(maxX, rect.right);\n maxY = Math.max(maxY, rect.bottom);\n });\n\n if (typeof DOMRect !== 'undefined') {\n boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);\n } else {\n boundsRef.current = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n top: minY,\n right: maxX,\n bottom: maxY,\n left: minX,\n toJSON: () => ({}),\n } as DOMRect;\n }\n }, [itemRefs]);\n\n // Track mouse for collapse — expand when mouse leaves bounds\n useEffect(() => {\n if (!isCollapsed) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const bounds = boundsRef.current;\n\n if (!bounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n return;\n }\n\n const padding = 20;\n const isInBounds =\n e.clientX >= bounds.left - padding &&\n e.clientX <= bounds.right + padding &&\n e.clientY >= bounds.top - padding &&\n e.clientY <= bounds.bottom + padding;\n\n if (!isInBounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [isCollapsed, onPauseChange]);\n\n // Update bounds when items change\n useEffect(() => {\n updateBounds();\n }, [allItems, updateBounds]);\n\n const handleMouseEnter = useCallback(() => {\n updateBounds();\n onPauseChange(true);\n\n if (canCollapse) {\n setIsCollapsed(true);\n }\n }, [updateBounds, canCollapse, onPauseChange]);\n\n const handleMouseLeave = useCallback(() => {\n if (!isCollapsed) {\n onPauseChange(false);\n }\n }, [isCollapsed, onPauseChange]);\n\n const handleFocus = useCallback(() => {\n onPauseChange(true);\n }, [onPauseChange]);\n\n const handleBlur = useCallback(\n (e: FocusEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.relatedTarget as Node)\n ) {\n onPauseChange(false);\n }\n },\n [onPauseChange],\n );\n\n return {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n };\n}\n\n// ─── Overlay Container ───────────────────────────────────────────────\n//\n// INTENTIONAL: Position calculations are done manually (absolute positioning + JS\n// height tracking) rather than relying on CSS flexbox/grid layout. This is\n// deliberate — the container mixes enter/exit animations, collapse behavior, and\n// heterogeneous item sizes (toasts vs notifications) which require per-item\n// position control. CSS-only solutions (e.g., flex column with gap) break when\n// items exit asynchronously or when collapse transforms need to be computed per-item.\n\nexport interface OverlayContainerProps {\n toasts: InternalToast[];\n notifications: InternalNotification[];\n onToastExitComplete: (internalId: string) => void;\n onNotificationExitComplete: (internalId: string) => void;\n onNotificationDismiss: (id: Key, reason: DismissReason) => void;\n onNotificationRestore: (id: Key) => void;\n onPauseChange: (paused: boolean) => void;\n}\n\nexport function OverlayContainer({\n toasts,\n notifications,\n onToastExitComplete,\n onNotificationExitComplete,\n onNotificationDismiss,\n onNotificationRestore,\n onPauseChange,\n}: OverlayContainerProps) {\n // Merge toasts and notifications into a single ordered list\n const allItems: OverlayItem[] = useMemo(() => {\n const items: OverlayItem[] = [\n ...toasts.map((t): OverlayItem => ({ kind: 'toast', data: t })),\n ...notifications.map(\n (n): OverlayItem => ({ kind: 'notification', data: n }),\n ),\n ];\n\n // Sort by createdAt ascending (oldest first = bottom of stack, newest last = top)\n items.sort((a, b) => getItemCreatedAt(a) - getItemCreatedAt(b));\n\n return items;\n }, [toasts, notifications]);\n\n const visibleItems = useMemo(\n () => allItems.filter((item) => !isItemExiting(item)),\n [allItems],\n );\n const hasNotifications = notifications.some((n) => !n.isExiting);\n const hasActionableToasts = toasts.some((t) => !t.isExiting && t.actions);\n const canCollapse = !hasNotifications && !hasActionableToasts;\n\n const {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n } = useItemPositions(visibleItems);\n\n const {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);\n\n // ─── Callbacks ─────────────────────────────────────────────────────\n\n // When the user dismisses a notification they were hovering, the element\n // is removed from the DOM so mouseLeave never fires. Explicitly unpause\n // so remaining notifications' timers resume.\n const handleNotificationDismiss = useEvent(\n (id: Key, reason: DismissReason) => {\n onNotificationDismiss(id, reason);\n onPauseChange(false);\n },\n );\n\n const handleExitComplete = useEvent((item: OverlayItem) => {\n const id = getItemId(item);\n lastPositionsRef.current?.delete(id);\n\n if (item.kind === 'toast') {\n onToastExitComplete(item.data.internalId);\n } else {\n onNotificationExitComplete(item.data.internalId);\n }\n });\n\n // useCallback (not useEvent) because this is called during render.\n // useEvent defers the ref update to useLayoutEffect, so during render\n // it would still read the previous closure's positions/heights.\n const getItemStyle = useCallback(\n (item: OverlayItem, index: number, total: number) => {\n const id = getItemId(item);\n const baseTop =\n positions.get(id) ?? lastPositionsRef.current?.get(id) ?? 0;\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n\n if (!isCollapsed || !canCollapse) {\n return { top: `${baseTop}px` };\n }\n\n const isNewest = index === total - 1;\n const collapsedTop = COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height;\n\n return {\n top: `${collapsedTop}px`,\n zIndex: index,\n opacity: isNewest ? 1 : 0,\n pointerEvents: 'none' as const,\n };\n },\n [isCollapsed, canCollapse, positions, heights, lastPositionsRef],\n );\n\n // Build a visibleIndex lookup map to avoid O(n²) findIndex inside render loop\n const visibleIndexMap = useMemo(() => {\n const map = new Map<string, number>();\n\n visibleItems.forEach((item, index) => {\n map.set(getItemId(item), index);\n });\n\n return map;\n }, [visibleItems]);\n\n if (allItems.length === 0) return null;\n\n return (\n <Portal>\n <OverlayContainerElement\n ref={containerRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {allItems.map((item) => {\n const itemId = getItemId(item);\n const visibleIndex = visibleIndexMap.get(itemId) ?? 0;\n const isExiting = isItemExiting(item);\n\n return (\n <DisplayTransition\n key={itemId}\n animateOnMount\n isShown={!isExiting}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(item);\n }\n }}\n >\n {({ isShown, ref }) => (\n <OverlayItemWrapper\n ref={createRefCallback(itemId, ref)}\n mods={{ isShown, isMeasured: settledIds.has(itemId) }}\n style={getItemStyle(item, visibleIndex, visibleItems.length)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {item.kind === 'toast' ? (\n <ToastItem\n {...item.data.itemProps}\n title={item.data.title}\n description={item.data.description}\n theme={item.data.theme}\n icon={item.data.icon}\n isLoading={item.data.isLoading}\n actions={item.data.actions}\n />\n ) : (\n <NotificationItem\n notification={item.data}\n onDismiss={handleNotificationDismiss}\n onRestore={onNotificationRestore}\n />\n )}\n </OverlayItemWrapper>\n )}\n </DisplayTransition>\n );\n })}\n </OverlayContainerElement>\n </Portal>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAyBA,MAAM,0BAA0B;AAChC,MAAM,mBAAmB;AACzB,MAAM,WAAW;AACjB,MAAM,sBAAsB;AAI5B,MAAM,0BAA0B,MAAM,EACpC,QAAQ;CACN,UAAU;CACV,KAAK;CACL,MAAM;CACN,WAAW;CACX,QAAQ;CACR,SAAS;CACT,QAAQ;CACR,eAAe;CAChB,EACF,CAAC;AAEF,MAAM,qBAAqB,MAAM,EAC/B,QAAQ;CACN,UAAU;CACV,KAAK;CACL,MAAM;CACN,WAAW;EACT,IAAI;EACJ,wBAAwB;EACzB;CACD,OAAO;CACP,eAAe;CACf,YAAY;EACV,IAAI;EACJ,YACE;EACH;CACD,SAAS;EACP,IAAI;EACJ,SAAS;EACV;CACF,EACF,CAAC;AAQF,SAAS,UAAU,MAA2B;AAC5C,QAAO,KAAK,KAAK;;AAGnB,SAAS,cAAc,MAA4B;AACjD,QAAO,KAAK,KAAK,cAAc;;AAGjC,SAAS,iBAAiB,MAA2B;AACnD,QAAO,KAAK,KAAK;;;;;;AAsBnB,SAAS,iBAAiB,cAAkD;CAC1E,MAAM,CAAC,SAAS,cAAc,SAAiC,EAAE,CAAC;CAClE,MAAM,WAAW,uBAAoC,IAAI,KAAK,CAAC;CAC/D,MAAM,mBAAmB,uBAA4B,IAAI,KAAK,CAAC;CAK/D,MAAM,CAAC,YAAY,iBAAiB,yBAAsB,IAAI,KAAK,CAAC;CACpE,MAAM,SAAS,OAAsB,KAAK;AAI1C,yBAAsB;EACpB,MAAM,aAAqC,EAAE;EAC7C,IAAI,aAAa;AAEjB,WAAS,QAAQ,SAAS,IAAI,OAAO;GACnC,MAAM,SAAS,GAAG,gBAAgB;AAClC,cAAW,MAAM;AAEjB,OAAI,QAAQ,QAAQ,OAClB,cAAa;IAEf;AAEF,OAAK,MAAM,MAAM,OAAO,KAAK,QAAQ,CACnC,KAAI,CAAC,SAAS,QAAQ,IAAI,GAAG,CAC3B,cAAa;AAIjB,MAAI,WACF,YAAW,WAAW;GAExB;AAKF,iBAAgB;EACd,MAAM,aAAa,OAAO,KAAK,QAAQ;EACvC,MAAM,SAAS,WAAW,QAAQ,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;EAC7D,MAAM,cACJ,WAAW,OAAO,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,OAAO,EAAE,MAAM,SAAS;AAEvE,MAAI,OAAO,WAAW,KAAK,CAAC,YAAa;AAEzC,MAAI,OAAO,WAAW,KACpB,sBAAqB,OAAO,QAAQ;AAKtC,MAAI,OAAO,WAAW,KAAK,aAAa;AACtC,kBAAe,SAAS,IAAI,IAAI,WAAW,QAAQ,OAAO,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;AACzE;;AAGF,SAAO,UAAU,4BAA4B;AAC3C,UAAO,UAAU;AACjB,kBAAe,SAAS;IACtB,MAAM,uBAAO,IAAI,KAAa;AAG9B,SAAK,MAAM,MAAM,WACf,KAAI,KAAK,IAAI,GAAG,CACd,MAAK,IAAI,GAAG;AAIhB,SAAK,MAAM,MAAM,OACf,MAAK,IAAI,GAAG;AAGd,WAAO;KACP;IACF;AAEF,eAAa;AACX,OAAI,OAAO,WAAW,MAAM;AAC1B,yBAAqB,OAAO,QAAQ;AACpC,WAAO,UAAU;;;IAGpB,CAAC,QAAQ,CAAC;CAEb,MAAM,oBAAoB,aACvB,QAAgB,gBACd,OAA8B;AAC7B,aAAW,GAAG;AAEd,MAAI,GACF,UAAS,QAAQ,IAAI,QAAQ,GAAG;MAEhC,UAAS,QAAQ,OAAO,OAAO;IAGrC,EAAE,CACH;CAED,MAAM,YAAY,cAAc;EAC9B,MAAM,yBAAS,IAAI,KAAqB;EACxC,IAAI,aAAa;AAEjB,OAAK,MAAM,QAAQ,cAAc;GAC/B,MAAM,KAAK,UAAU,KAAK;AAC1B,UAAO,IAAI,IAAI,WAAW;GAC1B,MAAM,SAAS,QAAQ,OAAO;AAC9B,iBAAc,SAAS;;AAGzB,SAAO;IACN,CAAC,cAAc,QAAQ,CAAC;AAE3B,iBAAgB;AACd,YAAU,SAAS,KAAK,OAAO;AAC7B,oBAAiB,QAAQ,IAAI,IAAI,IAAI;IACrC;IACD,CAAC,UAAU,CAAC;AAEf,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACD;;;;;;AAkBH,SAAS,iBACP,aACA,UACA,UACA,eACqB;CACrB,MAAM,CAAC,aAAa,kBAAkB,SAAS,MAAM;CACrD,MAAM,eAAe,OAAuB,KAAK;CACjD,MAAM,YAAY,OAAuB,KAAK;CAE9C,MAAM,eAAe,kBAAkB;EACrC,MAAM,OAAO,SAAS;AAEtB,MAAI,CAAC,QAAQ,KAAK,SAAS,GAAG;AAC5B,aAAU,UAAU;AACpB;;EAGF,IAAI,OAAO,UACT,OAAO,UACP,OAAO,WACP,OAAO;AAET,OAAK,SAAS,OAAO;GACnB,MAAM,OAAO,GAAG,uBAAuB;AACvC,UAAO,KAAK,IAAI,MAAM,KAAK,KAAK;AAChC,UAAO,KAAK,IAAI,MAAM,KAAK,IAAI;AAC/B,UAAO,KAAK,IAAI,MAAM,KAAK,MAAM;AACjC,UAAO,KAAK,IAAI,MAAM,KAAK,OAAO;IAClC;AAEF,MAAI,OAAO,YAAY,YACrB,WAAU,UAAU,IAAI,QAAQ,MAAM,MAAM,OAAO,MAAM,OAAO,KAAK;MAErE,WAAU,UAAU;GAClB,GAAG;GACH,GAAG;GACH,OAAO,OAAO;GACd,QAAQ,OAAO;GACf,KAAK;GACL,OAAO;GACP,QAAQ;GACR,MAAM;GACN,eAAe,EAAE;GAClB;IAEF,CAAC,SAAS,CAAC;AAGd,iBAAgB;AACd,MAAI,CAAC,YAAa;EAElB,MAAM,mBAAmB,MAAkB;GACzC,MAAM,SAAS,UAAU;AAEzB,OAAI,CAAC,QAAQ;AACX,mBAAe,MAAM;AACrB,kBAAc,MAAM;AACpB;;GAGF,MAAM,UAAU;AAOhB,OAAI,EALF,EAAE,WAAW,OAAO,OAAO,WAC3B,EAAE,WAAW,OAAO,QAAQ,WAC5B,EAAE,WAAW,OAAO,MAAM,WAC1B,EAAE,WAAW,OAAO,SAAS,UAEd;AACf,mBAAe,MAAM;AACrB,kBAAc,MAAM;;;AAIxB,SAAO,iBAAiB,aAAa,gBAAgB;AACrD,eAAa,OAAO,oBAAoB,aAAa,gBAAgB;IACpE,CAAC,aAAa,cAAc,CAAC;AAGhC,iBAAgB;AACd,gBAAc;IACb,CAAC,UAAU,aAAa,CAAC;AAiC5B,QAAO;EACL;EACA,kBAjCuB,kBAAkB;AACzC,iBAAc;AACd,iBAAc,KAAK;AAEnB,OAAI,YACF,gBAAe,KAAK;KAErB;GAAC;GAAc;GAAa;GAAc,CAAC;EA2B5C,kBAzBuB,kBAAkB;AACzC,OAAI,CAAC,YACH,eAAc,MAAM;KAErB,CAAC,aAAa,cAAc,CAAC;EAsB9B,aApBkB,kBAAkB;AACpC,iBAAc,KAAK;KAClB,CAAC,cAAc,CAAC;EAmBjB,YAjBiB,aAChB,MAAkB;AACjB,OACE,aAAa,WACb,CAAC,aAAa,QAAQ,SAAS,EAAE,cAAsB,CAEvD,eAAc,MAAM;KAGxB,CAAC,cAAc,CAChB;EAQC;EACD;;AAsBH,SAAgB,iBAAiB,EAC/B,QACA,eACA,qBACA,4BACA,uBACA,uBACA,iBACwB;CAExB,MAAM,WAA0B,cAAc;EAC5C,MAAM,QAAuB,CAC3B,GAAG,OAAO,KAAK,OAAoB;GAAE,MAAM;GAAS,MAAM;GAAG,EAAE,EAC/D,GAAG,cAAc,KACd,OAAoB;GAAE,MAAM;GAAgB,MAAM;GAAG,EACvD,CACF;AAGD,QAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAAC;AAE/D,SAAO;IACN,CAAC,QAAQ,cAAc,CAAC;CAE3B,MAAM,eAAe,cACb,SAAS,QAAQ,SAAS,CAAC,cAAc,KAAK,CAAC,EACrD,CAAC,SAAS,CACX;CACD,MAAM,mBAAmB,cAAc,MAAM,MAAM,CAAC,EAAE,UAAU;CAChE,MAAM,sBAAsB,OAAO,MAAM,MAAM,CAAC,EAAE,aAAa,EAAE,QAAQ;CACzE,MAAM,cAAc,CAAC,oBAAoB,CAAC;CAE1C,MAAM,EACJ,SACA,YACA,WACA,kBACA,UACA,sBACE,iBAAiB,aAAa;CAElC,MAAM,EACJ,aACA,kBACA,kBACA,aACA,YACA,iBACE,iBAAiB,aAAa,UAAU,UAAU,cAAc;CAOpE,MAAM,4BAA4B,UAC/B,IAAS,WAA0B;AAClC,wBAAsB,IAAI,OAAO;AACjC,gBAAc,MAAM;GAEvB;CAED,MAAM,qBAAqB,UAAU,SAAsB;EACzD,MAAM,KAAK,UAAU,KAAK;AAC1B,mBAAiB,SAAS,OAAO,GAAG;AAEpC,MAAI,KAAK,SAAS,QAChB,qBAAoB,KAAK,KAAK,WAAW;MAEzC,4BAA2B,KAAK,KAAK,WAAW;GAElD;CAKF,MAAM,eAAe,aAClB,MAAmB,OAAe,UAAkB;EACnD,MAAM,KAAK,UAAU,KAAK;EAC1B,MAAM,UACJ,UAAU,IAAI,GAAG,IAAI,iBAAiB,SAAS,IAAI,GAAG,IAAI;EAC5D,MAAM,SAAS,QAAQ,OAAO;AAE9B,MAAI,CAAC,eAAe,CAAC,YACnB,QAAO,EAAE,KAAK,GAAG,QAAQ,KAAK;EAGhC,MAAM,WAAW,UAAU,QAAQ;AAGnC,SAAO;GACL,KAAK,GAHc,0BAA0B,mBAAmB,OAG3C;GACrB,QAAQ;GACR,SAAS,WAAW,IAAI;GACxB,eAAe;GAChB;IAEH;EAAC;EAAa;EAAa;EAAW;EAAS;EAAiB,CACjE;CAGD,MAAM,kBAAkB,cAAc;EACpC,MAAM,sBAAM,IAAI,KAAqB;AAErC,eAAa,SAAS,MAAM,UAAU;AACpC,OAAI,IAAI,UAAU,KAAK,EAAE,MAAM;IAC/B;AAEF,SAAO;IACN,CAAC,aAAa,CAAC;AAElB,KAAI,SAAS,WAAW,EAAG,QAAO;AAElC,QACE,oBAAC,oBACC,oBAAC;EACC,KAAK;EACL,SAAS;EACT,QAAQ;YAEP,SAAS,KAAK,SAAS;GACtB,MAAM,SAAS,UAAU,KAAK;GAC9B,MAAM,eAAe,gBAAgB,IAAI,OAAO,IAAI;AAGpD,UACE,oBAAC;IAEC;IACA,SAAS,CANK,cAAc,KAAK;IAOjC,SAAS,eAAe;AACtB,SAAI,eAAe,OACjB,oBAAmB,KAAK;;eAI1B,EAAE,SAAS,UACX,oBAAC;KACC,KAAK,kBAAkB,QAAQ,IAAI;KACnC,MAAM;MAAE;MAAS,YAAY,WAAW,IAAI,OAAO;MAAE;KACrD,OAAO,aAAa,MAAM,cAAc,aAAa,OAAO;KAC5D,cAAc;KACd,cAAc;eAEb,KAAK,SAAS,UACb,oBAAC;MACC,GAAI,KAAK,KAAK;MACd,OAAO,KAAK,KAAK;MACjB,aAAa,KAAK,KAAK;MACvB,OAAO,KAAK,KAAK;MACjB,MAAM,KAAK,KAAK;MAChB,WAAW,KAAK,KAAK;MACrB,SAAS,KAAK,KAAK;OACnB,GAEF,oBAAC;MACC,cAAc,KAAK;MACnB,WAAW;MACX,WAAW;OACX;MAEe;MAlClB,OAoCa;IAEtB;GACsB,GACnB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { NotificationContext, PersistentNotificationsContext, ToastContext, useNotificationContext, useToastContext } from "./NotificationContext.js";
|
|
3
3
|
import { OverlayContainer } from "./OverlayContainer.js";
|
|
4
4
|
import { useNotificationState } from "./use-notification-state.js";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
2
|
-
import { tasty } from "../../../tasty/tasty.js";
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
3
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
3
|
import { _Text } from "../../content/Text.js";
|
|
5
4
|
import { NotificationActionInterceptorContext } from "./NotificationAction.js";
|
|
@@ -7,6 +6,7 @@ import { NotificationCard } from "./NotificationCard.js";
|
|
|
7
6
|
import { Divider } from "../../content/Divider.js";
|
|
8
7
|
import { formatRelativeTime } from "./format-relative-time.js";
|
|
9
8
|
import { usePersistentNotifications } from "./use-persistent-notifications.js";
|
|
9
|
+
import { tasty } from "@tenphi/tasty";
|
|
10
10
|
import { Fragment, useContext, useEffect, useRef, useState } from "react";
|
|
11
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistentNotificationsList.js","names":["Text"],"sources":["../../../../src/components/overlays/Notifications/PersistentNotificationsList.tsx"],"sourcesContent":["import { Fragment, Key, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport {
|
|
1
|
+
{"version":3,"file":"PersistentNotificationsList.js","names":["Text"],"sources":["../../../../src/components/overlays/Notifications/PersistentNotificationsList.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { Fragment, Key, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { Divider } from '../../content/Divider';\nimport { Text } from '../../content/Text';\n\nimport { formatRelativeTime } from './format-relative-time';\nimport { NotificationActionInterceptorContext } from './NotificationAction';\nimport { NotificationCard } from './NotificationCard';\nimport { usePersistentNotifications } from './use-persistent-notifications';\n\nimport type {\n DismissReason,\n PersistentNotificationItem,\n PersistentNotificationsListProps,\n} from './types';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst MARK_READ_DELAY = 2000;\n/** Interval (ms) at which relative timestamps refresh while the list is mounted. */\nconst TIMESTAMP_REFRESH_INTERVAL = 10_000;\n\n// ─── Styled Components ──────────────────────────────────────────────\n\nconst ListContainer = tasty({\n qa: 'PersistentNotificationsList',\n role: 'log',\n 'aria-label': 'Notifications',\n styles: {\n display: 'flex',\n flow: 'column',\n },\n});\n\nconst EmptyStateContainer = tasty({\n styles: {\n display: 'flex',\n placeItems: 'center',\n placeContent: 'center',\n padding: '4x',\n color: '#dark.5',\n preset: 't3',\n },\n});\n\n// ─── PersistentNotificationsList Component ───────────────────────────\n\n/**\n * Standardized rendering for archived/persistent notifications.\n * Always reads items from the notification context.\n * Composable with app-specific shells (popover, dialog, page section).\n *\n * Marks all items as read after being visible for 2 seconds.\n * Relative timestamps refresh every 10 seconds while the list is mounted.\n *\n * Items are always dismissible. Dismissing an item removes it from the\n * persistent list and marks its ID as \"fully dismissed\" — subsequent triggers\n * with the same ID will be completely ignored (no overlay, no re-archival).\n *\n * @example\n * ```tsx\n * <PersistentNotificationsList emptyState=\"No notifications\" />\n * ```\n */\nexport function PersistentNotificationsList({\n onDismissItem,\n onAction,\n emptyState,\n}: PersistentNotificationsListProps) {\n const { items, remove, markAllAsRead } = usePersistentNotifications();\n\n // Default dismiss handler removes the item from the persistent list (which\n // also marks the id as \"fully dismissed\" so it won't reappear).\n // If a consumer provides `onDismissItem`, it is called *after* the built-in removal.\n const handleDismiss = useEvent((item: PersistentNotificationItem) => {\n remove(item.id);\n onDismissItem?.(item);\n });\n const markReadTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Tick counter that increments every TIMESTAMP_REFRESH_INTERVAL to force\n // re-render so relative timestamps (e.g. \"5 min ago\") stay up to date.\n const [, setTick] = useState(0);\n\n useEffect(() => {\n if (items.length === 0) return;\n\n const interval = setInterval(() => {\n setTick((t) => t + 1);\n }, TIMESTAMP_REFRESH_INTERVAL);\n\n return () => clearInterval(interval);\n }, [items.length]);\n\n // Mark all persistent notifications as read after a 2s delay.\n // Re-starts the timer whenever items change (e.g. new unread items arrive\n // while the list is already visible).\n useEffect(() => {\n const hasUnread = items.some((i) => !i.isRead);\n\n if (!hasUnread) return;\n\n markReadTimerRef.current = setTimeout(() => {\n markAllAsRead();\n }, MARK_READ_DELAY);\n\n return () => {\n if (markReadTimerRef.current) {\n clearTimeout(markReadTimerRef.current);\n markReadTimerRef.current = null;\n }\n };\n }, [markAllAsRead, items]);\n\n if (items.length === 0) {\n return (\n <ListContainer>\n <EmptyStateContainer>\n {emptyState ?? 'No notifications'}\n </EmptyStateContainer>\n </ListContainer>\n );\n }\n\n return (\n <NotificationActionInterceptorContext.Provider value={onAction ?? null}>\n <ListContainer>\n {items.map((item, index) => (\n <Fragment key={String(item.id)}>\n {index > 0 && <Divider />}\n <PersistentNotificationListItem\n item={item}\n onDismiss={handleDismiss}\n />\n </Fragment>\n ))}\n </ListContainer>\n </NotificationActionInterceptorContext.Provider>\n );\n}\n\n// ─── List Item ───────────────────────────────────────────────────────\n\ninterface PersistentNotificationListItemProps {\n item: PersistentNotificationItem;\n onDismiss?: (item: PersistentNotificationItem) => void;\n}\n\nfunction PersistentNotificationListItem({\n item,\n onDismiss,\n}: PersistentNotificationListItemProps) {\n const suffix = (\n <Text opacity={0.5} preset=\"c2\">\n {formatRelativeTime(item.createdAt)}\n </Text>\n );\n\n // useEvent keeps the callback stable across re-renders regardless of\n // item reference changes (avoids unnecessary NotificationCard re-renders).\n const handleDismiss = useEvent((_id: Key, _reason: DismissReason) => {\n onDismiss?.(item);\n });\n\n const parentInterceptor = useContext(NotificationActionInterceptorContext);\n\n // Chains with the list-level interceptor (e.g. closing the parent popover).\n // Dismissal itself is handled by NotificationAction via the dismiss context\n // to avoid double-firing onDismiss.\n const handleItemAction = useEvent(() => {\n parentInterceptor?.();\n });\n\n return (\n <NotificationActionInterceptorContext.Provider value={handleItemAction}>\n <NotificationCard\n qa=\"PersistentNotificationItem\"\n theme={item.theme}\n title={item.title}\n description={item.description}\n icon={item.icon}\n actions={item.actions}\n isDismissable={!!onDismiss}\n elevated={false}\n notificationId={item.id}\n suffix={suffix}\n onDismiss={onDismiss ? handleDismiss : undefined}\n />\n </NotificationActionInterceptorContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAoBA,MAAM,kBAAkB;;AAExB,MAAM,6BAA6B;AAInC,MAAM,gBAAgB,MAAM;CAC1B,IAAI;CACJ,MAAM;CACN,cAAc;CACd,QAAQ;EACN,SAAS;EACT,MAAM;EACP;CACF,CAAC;AAEF,MAAM,sBAAsB,MAAM,EAChC,QAAQ;CACN,SAAS;CACT,YAAY;CACZ,cAAc;CACd,SAAS;CACT,OAAO;CACP,QAAQ;CACT,EACF,CAAC;;;;;;;;;;;;;;;;;;AAqBF,SAAgB,4BAA4B,EAC1C,eACA,UACA,cACmC;CACnC,MAAM,EAAE,OAAO,QAAQ,kBAAkB,4BAA4B;CAKrE,MAAM,gBAAgB,UAAU,SAAqC;AACnE,SAAO,KAAK,GAAG;AACf,kBAAgB,KAAK;GACrB;CACF,MAAM,mBAAmB,OAA6C,KAAK;CAI3E,MAAM,GAAG,WAAW,SAAS,EAAE;AAE/B,iBAAgB;AACd,MAAI,MAAM,WAAW,EAAG;EAExB,MAAM,WAAW,kBAAkB;AACjC,YAAS,MAAM,IAAI,EAAE;KACpB,2BAA2B;AAE9B,eAAa,cAAc,SAAS;IACnC,CAAC,MAAM,OAAO,CAAC;AAKlB,iBAAgB;AAGd,MAAI,CAFc,MAAM,MAAM,MAAM,CAAC,EAAE,OAAO,CAE9B;AAEhB,mBAAiB,UAAU,iBAAiB;AAC1C,kBAAe;KACd,gBAAgB;AAEnB,eAAa;AACX,OAAI,iBAAiB,SAAS;AAC5B,iBAAa,iBAAiB,QAAQ;AACtC,qBAAiB,UAAU;;;IAG9B,CAAC,eAAe,MAAM,CAAC;AAE1B,KAAI,MAAM,WAAW,EACnB,QACE,oBAAC,2BACC,oBAAC,iCACE,cAAc,qBACK,GACR;AAIpB,QACE,oBAAC,qCAAqC;EAAS,OAAO,YAAY;YAChE,oBAAC,2BACE,MAAM,KAAK,MAAM,UAChB,qBAAC,uBACE,QAAQ,KAAK,oBAAC,YAAU,EACzB,oBAAC;GACO;GACN,WAAW;IACX,KALW,OAAO,KAAK,GAAG,CAMnB,CACX,GACY;GAC8B;;AAWpD,SAAS,+BAA+B,EACtC,MACA,aACsC;CACtC,MAAM,SACJ,oBAACA;EAAK,SAAS;EAAK,QAAO;YACxB,mBAAmB,KAAK,UAAU;GAC9B;CAKT,MAAM,gBAAgB,UAAU,KAAU,YAA2B;AACnE,cAAY,KAAK;GACjB;CAEF,MAAM,oBAAoB,WAAW,qCAAqC;CAK1E,MAAM,mBAAmB,eAAe;AACtC,uBAAqB;GACrB;AAEF,QACE,oBAAC,qCAAqC;EAAS,OAAO;YACpD,oBAAC;GACC,IAAG;GACH,OAAO,KAAK;GACZ,OAAO,KAAK;GACZ,aAAa,KAAK;GAClB,MAAM,KAAK;GACX,SAAS,KAAK;GACd,eAAe,CAAC,CAAC;GACjB,UAAU;GACV,gBAAgB,KAAK;GACb;GACR,WAAW,YAAY,gBAAgB;IACvC;GAC4C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
//#region src/components/overlays/Notifications/dismissed-storage.ts
|
|
3
3
|
const STORAGE_KEY = "cube-ui-dismissed-notifications";
|
|
4
4
|
const TTL_MS = 864e5;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { useToastContext } from "./NotificationContext.js";
|
|
3
3
|
import { NotificationAction } from "./NotificationAction.js";
|
|
4
4
|
import { NotificationCard } from "./NotificationCard.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { useWarn } from "../../../_internal/hooks/use-warn.js";
|
|
4
4
|
import { useNotificationContext } from "./NotificationContext.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { cleanupAndGetValidIds, saveDismissedId } from "./dismissed-storage.js";
|
|
4
4
|
import { useRef, useState } from "react";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
2
|
-
import { tasty } from "../../../tasty/tasty.js";
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
3
2
|
import { _Item } from "../../content/Item/Item.js";
|
|
4
3
|
import { getThemeIcon } from "./useToast.js";
|
|
4
|
+
import { tasty } from "@tenphi/tasty";
|
|
5
5
|
import { forwardRef } from "react";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastItem.js","names":["Item"],"sources":["../../../../src/components/overlays/Toast/ToastItem.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"ToastItem.js","names":["Item"],"sources":["../../../../src/components/overlays/Toast/ToastItem.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode } from 'react';\n\nimport { CubeItemProps, Item } from '../../content/Item/Item';\n\nimport { getThemeIcon } from './useToast';\n\nimport type { ToastType } from './types';\n\nexport interface ToastItemProps\n extends Partial<Omit<CubeItemProps, 'type' | 'icon'>> {\n /** Primary content (→ Item children). Also supports description-only for migration. */\n title?: ReactNode;\n /** Secondary content (or primary if no title/children) */\n description?: ReactNode;\n /** Visual theme */\n theme?: ToastType;\n /** Whether the toast is in loading state */\n isLoading?: boolean;\n /** Icon to display (resolved ReactNode, not a dynamic icon function) */\n icon?: ReactNode;\n}\n\nconst StyledItem = tasty(Item, {\n styles: {\n shadow: '$shadow',\n transition: 'theme, inset',\n pointerEvents: {\n '': 'none',\n 'has-actions': 'auto',\n },\n\n Description: {\n preset: 't4',\n },\n },\n});\n\nexport const ToastItem = forwardRef<HTMLElement, ToastItemProps>(\n function ToastItem(props, ref) {\n const {\n title,\n description,\n theme,\n isLoading,\n icon: providedIcon,\n children,\n qa,\n ...itemProps\n } = props;\n\n const icon = getThemeIcon(theme, providedIcon, isLoading);\n\n // If only description provided (no title/children), use description as primary content\n const primaryContent = children ?? title ?? description;\n const secondaryContent = children || title ? description : undefined;\n\n return (\n <StyledItem\n ref={ref}\n qa={qa ?? 'Toast'}\n type=\"card\"\n theme={theme}\n icon={icon}\n isLoading={isLoading}\n isDisabled={false}\n description={secondaryContent}\n {...itemProps}\n >\n {primaryContent}\n </StyledItem>\n );\n },\n);\n"],"mappings":";;;;;;;;AAuBA,MAAM,aAAa,MAAMA,OAAM,EAC7B,QAAQ;CACN,QAAQ;CACR,YAAY;CACZ,eAAe;EACb,IAAI;EACJ,eAAe;EAChB;CAED,aAAa,EACX,QAAQ,MACT;CACF,EACF,CAAC;AAEF,MAAa,YAAY,WACvB,SAAS,UAAU,OAAO,KAAK;CAC7B,MAAM,EACJ,OACA,aACA,OACA,WACA,MAAM,cACN,UACA,IACA,GAAG,cACD;CAEJ,MAAM,OAAO,aAAa,OAAO,cAAc,UAAU;CAGzD,MAAM,iBAAiB,YAAY,SAAS;AAG5C,QACE,oBAAC;EACM;EACL,IAAI,MAAM;EACV,MAAK;EACE;EACD;EACK;EACX,YAAY;EACZ,aAXqB,YAAY,QAAQ,cAAc;EAYvD,GAAI;YAEH;GACU;EAGlB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { useToastContext } from "../Notifications/NotificationContext.js";
|
|
3
3
|
import { useProgressToast } from "./useProgressToast.js";
|
|
4
4
|
import { getThemeIcon, useToast } from "./useToast.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
|
|
4
4
|
import { useToastContext } from "../Notifications/NotificationContext.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { CheckIcon } from "../../../icons/CheckIcon.js";
|
|
3
3
|
import { DangerIcon } from "../../../icons/DangerIcon.js";
|
|
4
4
|
import { InfoCircleIcon } from "../../../icons/InfoCircleIcon.js";
|
|
5
5
|
import { WarningIcon } from "../../../icons/WarningIcon.js";
|
|
6
6
|
import { useToastContext } from "../Notifications/NotificationContext.js";
|
|
7
7
|
import { isValidElement, useMemo } from "react";
|
|
8
|
-
import { isFragment } from "react-is";
|
|
9
8
|
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
import { isFragment } from "react-is";
|
|
10
10
|
|
|
11
11
|
//#region src/components/overlays/Toast/useToast.tsx
|
|
12
12
|
const THEME_ICONS = {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
import { Styles } from "../../../tasty/styles/types.js";
|
|
3
|
-
import { BaseProps, ContainerStyleProps } from "../../../tasty/types.js";
|
|
4
|
-
import "../../../tasty/index.js";
|
|
5
2
|
import { PlacementAxis } from "../../../shared/index.js";
|
|
3
|
+
import { BaseProps, ContainerStyleProps, Styles } from "@tenphi/tasty";
|
|
6
4
|
import * as react from "react";
|
|
7
5
|
import { AriaTooltipProps } from "react-aria";
|
|
8
6
|
import { DOMRefValue } from "@react-types/shared";
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
2
|
-
import { extractStyles } from "../../../tasty/utils/styles.js";
|
|
3
|
-
import { CONTAINER_STYLES } from "../../../tasty/styles/list.js";
|
|
4
|
-
import { tasty } from "../../../tasty/tasty.js";
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
5
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
6
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
7
4
|
import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
8
5
|
import { TooltipContext } from "./context.js";
|
|
6
|
+
import { CONTAINER_STYLES, extractStyles, tasty } from "@tenphi/tasty";
|
|
9
7
|
import { forwardRef, useContext, useImperativeHandle, useMemo, useRef } from "react";
|
|
10
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
9
|
import { useTooltip } from "react-aria";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","names":["mergeProps"],"sources":["../../../../src/components/overlays/Tooltip/Tooltip.tsx"],"sourcesContent":["import { createDOMRef } from '@react-spectrum/utils';\nimport { DOMRefValue } from '@react-types/shared';\nimport {\n ForwardedRef,\n forwardRef,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport { AriaTooltipProps, useTooltip } from 'react-aria';\n\nimport { PlacementAxis } from '../../../shared';\nimport {
|
|
1
|
+
{"version":3,"file":"Tooltip.js","names":["mergeProps"],"sources":["../../../../src/components/overlays/Tooltip/Tooltip.tsx"],"sourcesContent":["import { createDOMRef } from '@react-spectrum/utils';\nimport { DOMRefValue } from '@react-types/shared';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n extractStyles,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport { AriaTooltipProps, useTooltip } from 'react-aria';\n\nimport { PlacementAxis } from '../../../shared';\nimport { mergeProps, mergeRefs, useLayoutEffect } from '../../../utils/react';\n\nimport { TooltipContext } from './context';\n\nexport type { AriaTooltipProps };\n\nconst TooltipElement = tasty({\n styles: {\n display: 'block',\n fill: {\n '': '#dark.85',\n light: '#white',\n },\n color: {\n '': '#white',\n light: '#dark-02',\n },\n width: 'initial 36x max-content',\n radius: true,\n padding: '.75x 1x',\n preset: 't4',\n backdropFilter: 'blur(.5x)',\n whiteSpace: 'pre-line',\n pointerEvents: {\n '': 'none',\n material: 'auto',\n },\n filter: {\n '': false,\n light: 'drop-shadow(0 0 1px #dark.2)',\n },\n transition:\n 'translate $transition ease-out, scale $transition ease-out, theme $transition ease-out',\n translate: {\n '': '0 0',\n 'open & [data-placement=\"top\"]': '0 0',\n '!open & [data-placement=\"top\"]': '0 1x',\n 'open & [data-placement=\"bottom\"]': '0 0',\n '!open & [data-placement=\"bottom\"]': '0 -1x',\n 'open & [data-placement=\"left\"]': '0 0',\n '!open & [data-placement=\"left\"]': '1x 0',\n 'open & [data-placement=\"right\"]': '0 0',\n '!open & [data-placement=\"right\"]': '-1x 0',\n },\n transformOrigin: {\n '': 'top center',\n '[data-placement=\"top\"]': 'bottom center',\n '[data-placement=\"left\"]': 'right center',\n '[data-placement=\"right\"]': 'left center',\n },\n scale: {\n '': '1 1',\n '!open': '1 .8',\n '!open & ([data-placement=\"left\"] | [data-placement=\"right\"])': '.8 1',\n },\n opacity: {\n '': 1,\n '!open': 0.001,\n },\n },\n});\n\nconst TooltipTipElement = tasty({\n styles: {\n position: 'absolute',\n width: '1px',\n height: '1px',\n border: '.5x #clear',\n borderTop: {\n '': '.5x solid #dark.85',\n light: '.5x solid #white',\n },\n borderBottom: '0',\n top: {\n '': 'initial',\n '[data-placement=\"left\"] | [data-placement=\"right\"]': '50%',\n '[data-placement=\"top\"]': '100%',\n },\n left: {\n '': 'initial',\n '[data-placement=\"top\"] | [data-placement=\"bottom\"]': '50%',\n '[data-placement=\"left\"]': '100%',\n },\n right: {\n '': 'initial',\n '[data-placement=\"right\"]': '100%',\n },\n bottom: {\n '': 'initial',\n '[data-placement=\"bottom\"]': '100%',\n },\n transform: {\n '': 'translate((-.375x - 1px), 0)',\n '[data-placement=\"bottom\"]':\n 'translate((-.375x - 1px), 0) rotate(180deg)',\n '[data-placement=\"left\"]': 'translate(-.25x, -.25x) rotate(270deg)',\n '[data-placement=\"right\"]': 'translate(.25x, -.25x) rotate(90deg)',\n },\n transition: 'theme',\n },\n});\n\nexport interface CubeTooltipProps\n extends BaseProps,\n ContainerStyleProps,\n AriaTooltipProps {\n tipStyles?: Styles;\n showIcon?: boolean;\n placement?: PlacementAxis;\n isMaterial?: boolean;\n isOpen?: boolean;\n isLight?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n defaultOpen?: boolean;\n shouldFlip?: boolean;\n}\n\nfunction Tooltip(\n props: CubeTooltipProps,\n ref: ForwardedRef<DOMRefValue<HTMLDivElement>>,\n) {\n let {\n ref: overlayRef,\n transitionRef,\n arrowProps,\n state,\n overlayProps,\n minOffset,\n minScale,\n isMaterial: isMaterialContext,\n isLight: isLightContext,\n phase,\n isShown,\n updatePosition,\n ...tooltipProviderProps\n } = useContext(TooltipContext);\n\n const defaultRef = useRef<HTMLDivElement>(null);\n const combinedRef = mergeRefs(transitionRef, overlayRef ?? defaultRef);\n const finalOverlayRef = overlayRef ?? defaultRef;\n\n props = mergeProps(props, tooltipProviderProps);\n\n let {\n placement = 'top',\n isOpen,\n tipStyles,\n showIcon,\n isMaterial = isMaterialContext,\n isLight = isLightContext,\n ...otherProps\n } = props;\n\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n let { tooltipProps } = useTooltip({ ...props, isDismissable: false }, state);\n\n // Sync ref with overlayRef from context.\n useImperativeHandle(ref, () => createDOMRef(finalOverlayRef));\n\n if (typeof minOffset === 'number') {\n minOffset = `${minOffset}px`;\n }\n\n if (typeof minScale === 'number') {\n minScale = String(minScale);\n }\n\n // Extract primary placement direction for consistent styling\n const placementDirection = placement?.split(' ')[0] || placement || 'top';\n\n const mods = useMemo(() => {\n return {\n material: isMaterial,\n light: isLight,\n open: isShown ?? isOpen,\n };\n }, [isMaterial, isShown, isOpen, isLight]);\n\n // Update position when tooltip becomes visible\n useLayoutEffect(() => {\n updatePosition?.();\n }, []);\n\n return (\n <TooltipElement\n {...tooltipProps}\n {...overlayProps}\n ref={combinedRef}\n styles={styles}\n mods={mods}\n data-min-offset={minOffset}\n data-min-scale={minScale}\n data-placement={placementDirection}\n data-phase={phase}\n >\n {props.children}\n <TooltipTipElement\n data-placement={placementDirection}\n styles={tipStyles}\n mods={mods}\n {...arrowProps}\n />\n </TooltipElement>\n );\n}\n\n/**\n * Display container for Tooltip content. Has a directional arrow dependent on its placement.\n */\nlet _Tooltip = forwardRef(Tooltip);\n\n_Tooltip.displayName = 'Tooltip';\n\nexport { _Tooltip as Tooltip };\n"],"mappings":";;;;;;;;;;;;AA2BA,MAAM,iBAAiB,MAAM,EAC3B,QAAQ;CACN,SAAS;CACT,MAAM;EACJ,IAAI;EACJ,OAAO;EACR;CACD,OAAO;EACL,IAAI;EACJ,OAAO;EACR;CACD,OAAO;CACP,QAAQ;CACR,SAAS;CACT,QAAQ;CACR,gBAAgB;CAChB,YAAY;CACZ,eAAe;EACb,IAAI;EACJ,UAAU;EACX;CACD,QAAQ;EACN,IAAI;EACJ,OAAO;EACR;CACD,YACE;CACF,WAAW;EACT,IAAI;EACJ,mCAAiC;EACjC,oCAAkC;EAClC,sCAAoC;EACpC,uCAAqC;EACrC,oCAAkC;EAClC,qCAAmC;EACnC,qCAAmC;EACnC,sCAAoC;EACrC;CACD,iBAAiB;EACf,IAAI;EACJ,4BAA0B;EAC1B,6BAA2B;EAC3B,8BAA4B;EAC7B;CACD,OAAO;EACL,IAAI;EACJ,SAAS;EACT,oEAAgE;EACjE;CACD,SAAS;EACP,IAAI;EACJ,SAAS;EACV;CACF,EACF,CAAC;AAEF,MAAM,oBAAoB,MAAM,EAC9B,QAAQ;CACN,UAAU;CACV,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,WAAW;EACT,IAAI;EACJ,OAAO;EACR;CACD,cAAc;CACd,KAAK;EACH,IAAI;EACJ,0DAAsD;EACtD,4BAA0B;EAC3B;CACD,MAAM;EACJ,IAAI;EACJ,0DAAsD;EACtD,6BAA2B;EAC5B;CACD,OAAO;EACL,IAAI;EACJ,8BAA4B;EAC7B;CACD,QAAQ;EACN,IAAI;EACJ,+BAA6B;EAC9B;CACD,WAAW;EACT,IAAI;EACJ,+BACE;EACF,6BAA2B;EAC3B,8BAA4B;EAC7B;CACD,YAAY;CACb,EACF,CAAC;AAiBF,SAAS,QACP,OACA,KACA;CACA,IAAI,EACF,KAAK,YACL,eACA,YACA,OACA,cACA,WACA,UACA,YAAY,mBACZ,SAAS,gBACT,OACA,SACA,gBACA,GAAG,yBACD,WAAW,eAAe;CAE9B,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,cAAc,UAAU,eAAe,cAAc,WAAW;CACtE,MAAM,kBAAkB,cAAc;AAEtC,SAAQA,aAAW,OAAO,qBAAqB;CAE/C,IAAI,EACF,YAAY,OACZ,QACA,WACA,UACA,aAAa,mBACb,UAAU,gBACV,GAAG,eACD;CAEJ,MAAM,SAAS,cAAc,YAAY,iBAAiB;CAE1D,IAAI,EAAE,iBAAiB,WAAW;EAAE,GAAG;EAAO,eAAe;EAAO,EAAE,MAAM;AAG5E,qBAAoB,WAAW,aAAa,gBAAgB,CAAC;AAE7D,KAAI,OAAO,cAAc,SACvB,aAAY,GAAG,UAAU;AAG3B,KAAI,OAAO,aAAa,SACtB,YAAW,OAAO,SAAS;CAI7B,MAAM,qBAAqB,WAAW,MAAM,IAAI,CAAC,MAAM,aAAa;CAEpE,MAAM,OAAO,cAAc;AACzB,SAAO;GACL,UAAU;GACV,OAAO;GACP,MAAM,WAAW;GAClB;IACA;EAAC;EAAY;EAAS;EAAQ;EAAQ,CAAC;AAG1C,yBAAsB;AACpB,oBAAkB;IACjB,EAAE,CAAC;AAEN,QACE,qBAAC;EACC,GAAI;EACJ,GAAI;EACJ,KAAK;EACG;EACF;EACN,mBAAiB;EACjB,kBAAgB;EAChB,kBAAgB;EAChB,cAAY;aAEX,MAAM,UACP,oBAAC;GACC,kBAAgB;GAChB,QAAQ;GACF;GACN,GAAI;IACJ;GACa;;;;;AAOrB,IAAI,WAAW,WAAW,QAAQ;AAElC,SAAS,cAAc"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
|
|
2
|
-
import { Styles } from "../../../tasty/styles/types.js";
|
|
3
|
-
import "../../../tasty/index.js";
|
|
4
2
|
import { CubeTooltipProps } from "./Tooltip.js";
|
|
5
3
|
import { CubeTooltipTriggerProps, TooltipTriggerFunction } from "./TooltipTrigger.js";
|
|
4
|
+
import { Styles } from "@tenphi/tasty";
|
|
6
5
|
import { ReactElement, ReactNode } from "react";
|
|
7
6
|
|
|
8
7
|
//#region src/components/overlays/Tooltip/TooltipProvider.d.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { _Tooltip } from "./Tooltip.js";
|
|
3
3
|
import { TooltipTrigger } from "./TooltipTrigger.js";
|
|
4
4
|
import { isValidElement, useEffect, useState } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipProvider.js","names":["Tooltip"],"sources":["../../../../src/components/overlays/Tooltip/TooltipProvider.tsx"],"sourcesContent":["import {\n isValidElement,\n ReactElement,\n ReactNode,\n RefObject,\n useEffect,\n useState,\n} from 'react';\n\nimport {
|
|
1
|
+
{"version":3,"file":"TooltipProvider.js","names":["Tooltip"],"sources":["../../../../src/components/overlays/Tooltip/TooltipProvider.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport {\n isValidElement,\n ReactElement,\n ReactNode,\n RefObject,\n useEffect,\n useState,\n} from 'react';\n\nimport { CubeTooltipProps, Tooltip } from './Tooltip';\nimport {\n CubeTooltipTriggerProps,\n TooltipTrigger,\n TooltipTriggerFunction,\n} from './TooltipTrigger';\n\nexport interface CubeTooltipProviderProps\n extends Omit<CubeTooltipTriggerProps, 'children'> {\n children: ReactNode | TooltipTriggerFunction;\n title?: ReactNode;\n tooltipStyles?: Styles;\n width?: CubeTooltipProps['width'];\n}\n\nexport function TooltipProvider(props: CubeTooltipProviderProps): ReactElement {\n const [rendered, setRendered] = useState(false);\n const { title, children, tooltipStyles, width, isDisabled, ...otherProps } =\n props;\n\n useEffect(() => {\n setRendered(true);\n }, []);\n\n const isFunction = typeof children === 'function';\n\n // SSR: render without tooltip\n if (!rendered) {\n return (\n <>\n {isFunction\n ? children({}, { current: null } as unknown as RefObject<HTMLElement>)\n : children}\n </>\n ) as ReactElement;\n }\n\n // Both patterns pass through to TooltipTrigger\n // The difference is whether we pass function or element as first child\n return (\n <TooltipTrigger\n {...otherProps}\n isDisabled={isDisabled}\n disableFocusableProvider={isFunction}\n >\n {isFunction ||\n isValidElement(children) ||\n typeof children === 'string' ? (\n children\n ) : (\n <>{children}</>\n )}\n {isDisabled ? (\n <div />\n ) : (\n <Tooltip styles={tooltipStyles} {...(width ? { width } : null)}>\n {title}\n </Tooltip>\n )}\n </TooltipTrigger>\n );\n}\n"],"mappings":";;;;;;;AAyBA,SAAgB,gBAAgB,OAA+C;CAC7E,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAC/C,MAAM,EAAE,OAAO,UAAU,eAAe,OAAO,YAAY,GAAG,eAC5D;AAEF,iBAAgB;AACd,cAAY,KAAK;IAChB,EAAE,CAAC;CAEN,MAAM,aAAa,OAAO,aAAa;AAGvC,KAAI,CAAC,SACH,QACE,4CACG,aACG,SAAS,EAAE,EAAE,EAAE,SAAS,MAAM,CAAsC,GACpE,WACH;AAMP,QACE,qBAAC;EACC,GAAI;EACQ;EACZ,0BAA0B;aAEzB,cACD,eAAe,SAAS,IACxB,OAAO,aAAa,WAClB,WAEA,kCAAG,WAAY,EAEhB,aACC,oBAAC,UAAM,GAEP,oBAACA;GAAQ,QAAQ;GAAe,GAAK,QAAQ,EAAE,OAAO,GAAG;aACtD;IACO;GAEG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { TooltipContext } from "./context.js";
|
|
3
3
|
import { Block } from "../../Block.js";
|
|
4
4
|
import { _ActiveZone } from "../../content/ActiveZone/ActiveZone.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/components/overlays/Tooltip/context.ts"],"sourcesContent":["import React, { HTMLAttributes, RefCallback, RefObject } from 'react';\nimport { TooltipTriggerState } from 'react-stately';\n\nimport { PlacementAxis } from '../../../shared';\
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/components/overlays/Tooltip/context.ts"],"sourcesContent":["import { Props } from '@tenphi/tasty';\nimport React, { HTMLAttributes, RefCallback, RefObject } from 'react';\nimport { TooltipTriggerState } from 'react-stately';\n\nimport { PlacementAxis } from '../../../shared';\n\ntype Phase = 'enter' | 'entered' | 'exit' | 'unmounted';\n\ninterface TooltipContextProps {\n state?: TooltipTriggerState;\n ref?: RefObject<HTMLDivElement>;\n transitionRef?: RefCallback<HTMLDivElement>;\n placement?: PlacementAxis;\n arrowProps?: HTMLAttributes<HTMLElement>;\n overlayProps?: Props;\n minScale?: string | number;\n minOffset?: string | number;\n isMaterial?: boolean;\n isLight?: boolean;\n phase?: Phase;\n isShown?: boolean;\n updatePosition?: () => void;\n}\n\nexport const TooltipContext = React.createContext<TooltipContextProps>({});\n"],"mappings":";;;;AAwBA,MAAa,iBAAiB,MAAM,cAAmC,EAAE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
|
|
2
2
|
import { usePortal } from "./usePortal.js";
|
|
3
3
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
4
4
|
import { createPortal } from "react-dom";
|