@cube-dev/ui-kit 0.137.1 → 0.138.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 +19 -0
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +54 -43
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +9 -4
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.d.ts +1 -0
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +3 -3
- package/dist/components/actions/CommandMenu/styled.js.map +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.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 +5 -5
- package/dist/components/actions/Menu/styled.js.map +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +2 -2
- package/dist/components/content/Card/Card.js.map +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +2 -2
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +2 -2
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +2 -2
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +3 -3
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +5 -5
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +2 -2
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +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.js +3 -3
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +4 -4
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
- 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.js +5 -5
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +3 -3
- package/dist/components/fields/Slider/elements.js.map +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +2 -2
- 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.js +3 -3
- 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 +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +2 -2
- package/dist/components/layout/ResizablePanel.js.map +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.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/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +3 -3
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/FileTabs/FileTabs.js +2 -2
- package/dist/components/organisms/FileTabs/FileTabs.js.map +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +2 -2
- package/dist/components/organisms/StatsCard/StatsCard.js.map +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +2 -2
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +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 +2 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/types.d.ts +1 -0
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +7 -7
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.d.ts +2 -0
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/index.d.ts +1 -0
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +23 -7
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +114 -115
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.d.ts +17 -17
- package/dist/data/themes.js +18 -18
- package/dist/data/themes.js.map +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 +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/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 +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.d.ts +4 -3
- package/dist/tokens/colors.js +93 -83
- package/dist/tokens/colors.js.map +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/palette.js +364 -0
- package/dist/tokens/palette.js.map +1 -0
- package/dist/tokens/shadows.d.ts +4 -1
- package/dist/tokens/shadows.js +9 -6
- package/dist/tokens/shadows.js.map +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.d.ts +3 -0
- package/dist/version.js +13 -5
- package/dist/version.js.map +1 -1
- package/docs/Usage.md +98 -30
- package/docs/components/content/Card.md +1 -1
- package/docs/components/content/PrismCode.md +21 -0
- package/docs/components/form/Field.md +1 -1
- package/docs/components/layout/ResizablePanel.md +1 -1
- package/docs/components/organisms/FileTabs.md +1 -1
- package/docs/components/organisms/StatsCard.md +1 -1
- package/docs/tasty/configuration.md +44 -0
- package/docs/tasty/dsl.md +14 -13
- package/docs/tasty/methodology.md +26 -0
- package/docs/tasty/react-api.md +24 -0
- package/docs/tasty/ssr.md +5 -3
- package/docs/tasty/styles.md +9 -7
- package/docs/tasty/tasty-static.md +15 -0
- package/package.json +8 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileTabs.js","names":[],"sources":["../../../../src/components/organisms/FileTabs/FileTabs.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { CloseIcon } from '../../../icons';\nimport { useLayoutEffect } from '../../../utils/react';\nimport { Action, Button, CubeActionProps } from '../../actions';\nimport { Block } from '../../Block';\nimport { CubeFlexProps, Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\n\ninterface TabData {\n id: string | number;\n title?: string;\n isDirty?: boolean;\n}\n\ninterface FileTabContextValue {\n addTab: (tab: TabData) => void;\n setTab: (id: string | number) => void;\n removeTab: (tab: TabData) => void;\n currentTab?: string | number;\n setDirtyTab: (id: string | number, isDirty: boolean) => void;\n}\n\nconst FileTabsContext = createContext<FileTabContextValue>({\n addTab() {},\n removeTab() {},\n setTab() {},\n setDirtyTab() {},\n});\n\nconst TabsPanelElement = tasty(Space, {\n qa: 'TabsPanel',\n styles: {\n position: 'relative',\n overflow: 'auto hidden',\n top: '1bw',\n gap: '.5x',\n flexShrink: 0,\n whiteSpace: 'nowrap',\n scrollbar: 'styled',\n padding: '1ow 1ow 0 1ow',\n fade: {\n '': false,\n 'left-fade': '3x left',\n 'right-fade': '3x right',\n 'right-fade & left-fade': '3x left right',\n },\n transition: 'fade',\n '--scrollbar-radius': '1ow',\n '--scrollbar-width': '.75x',\n '--scrollbar-outline-width': '1px',\n },\n});\n\nconst TabsContainerElement = tasty(Flex, {\n qa: 'TabsContainer',\n styles: {\n flow: 'column',\n height: 'max 100%',\n width: 'max 100%',\n position: 'relative',\n },\n});\n\nconst DirtyBadge = tasty({\n element: 'DirtyBadge',\n styles: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '1x',\n height: '1x',\n fill: '#dark.30',\n radius: 'round',\n },\n});\n\nconst TabElement = tasty(Action, {\n styles: {\n radius: '1r 1r 0 0',\n padding: '1x 1.5x',\n border: {\n '': 'left top right #clear',\n disabled: 'left top right #border',\n },\n fill: {\n '': '#dark.04',\n hovered: '#dark.08',\n 'disabled, disabled & hover': '#white',\n },\n color: {\n '': '#dark-02',\n 'disabled, hovered, hovered & disabled': '#dark',\n },\n cursor: {\n '': '$pointer',\n disabled: 'default',\n },\n fontWeight: 500,\n opacity: 1,\n preset: 'default',\n transform: {\n '': 'translate(0, 0)',\n disabled: 'translate(0, 1bw)',\n },\n transition: 'theme 0.2s',\n margin: '1bw bottom',\n\n DirtyBadge: {\n opacity: {\n '': 1,\n 'dirty & :hover': 0,\n },\n pointerEvents: {\n '': 'auto',\n 'dirty & :hover': 'none',\n },\n },\n\n CloseButton: {\n opacity: {\n '': 0,\n '!dirty | :hover': 1,\n },\n },\n },\n});\n\nconst CloseButton = tasty(Button, {\n element: 'CloseButton',\n type: 'neutral',\n icon: <CloseIcon />,\n label: 'Close Tab',\n styles: {\n width: '3x',\n height: '3x',\n padding: 0,\n },\n});\n\n/**\n * @deprecated consider using <Tabs /> instead\n */\nexport interface FileTabProps extends Omit<CubeActionProps, 'id'> {\n isDirty?: boolean;\n isDisabled?: boolean;\n children?: ReactNode;\n isClosable?: boolean;\n onClose?: () => void;\n}\n\nfunction Tab({\n isDirty,\n isDisabled,\n children,\n isClosable,\n onClose,\n ...props\n}: FileTabProps) {\n return (\n <TabElement\n mods={{\n dirty: isDirty,\n }}\n isDisabled={isDisabled}\n {...props}\n >\n <Space gap=\".75x\">\n <Block>{children}</Block>\n {(isClosable || isDirty) && (\n <Flex placeItems=\"center\" style={{ position: 'relative' }}>\n {isClosable ? <CloseButton onPress={onClose} /> : <div></div>}\n {isDirty ? <DirtyBadge /> : null}\n </Flex>\n )}\n </Space>\n </TabElement>\n );\n}\n\nexport interface CubeFileTabsProps extends CubeFlexProps {\n /** The initial active key in the tabs (uncontrolled). */\n defaultActiveKey?: string;\n /** The currently active key in the tabs (controlled). */\n activeKey?: string | number;\n /** Handler that is called when the tab is clicked. */\n onTabClick?: (string) => void;\n /** Handler that is called when the tab is closed. */\n onTabClose?: (string) => void;\n /** Styles for each tab pane */\n paneStyles?: Styles;\n /** Whether the tabs are closable */\n isClosable?: boolean;\n children?: ReactNode;\n}\n\nexport function FileTabs({\n defaultActiveKey,\n activeKey: activeKeyProp,\n onTabClick,\n onTabClose,\n paneStyles,\n isClosable = true,\n children,\n ...props\n}: CubeFileTabsProps) {\n const tabsRef = useRef<HTMLButtonElement>(null);\n const [tabs, setTabs] = useState<TabData[]>([]);\n const [activeKey, setActiveKey] = useState<string | number | undefined>(\n activeKeyProp || defaultActiveKey,\n );\n\n const [leftFade, setLeftFade] = useState(false);\n const [rightFade, setRightFade] = useState(false);\n\n function updateScroll() {\n const el = tabsRef && tabsRef.current;\n\n if (!el) return;\n\n setLeftFade(!!el.scrollLeft);\n setRightFade(\n el.scrollWidth !== el.offsetWidth &&\n !!(el.scrollWidth - el.offsetWidth - el.scrollLeft),\n );\n }\n\n useLayoutEffect(updateScroll, [tabs]);\n\n function scrollCurrentIntoView() {\n const el = tabsRef && tabsRef.current;\n\n if (!el) return;\n\n const current = el.querySelector('button[disabled]');\n\n if (!current) return;\n\n current.scrollIntoView({ behavior: 'smooth', inline: 'end', block: 'end' });\n }\n\n useEffect(() => {\n function update() {\n updateScroll();\n }\n\n if (tabsRef && tabsRef.current) {\n tabsRef.current.addEventListener('scroll', update);\n tabsRef.current.addEventListener('mousewheel', update);\n window.addEventListener('resize', update);\n }\n\n return () => {\n if (tabsRef && tabsRef.current) {\n tabsRef.current.removeEventListener('scroll', update);\n tabsRef.current.removeEventListener('mousewheel', update);\n }\n\n window.removeEventListener('resize', update);\n };\n }, [tabsRef]);\n\n useEffect(scrollCurrentIntoView, [activeKey]);\n\n useEffect(() => {\n setActiveKey(activeKeyProp);\n }, [activeKeyProp]);\n\n function getTab(tabs: TabData[], key: string | number): TabData | undefined {\n return tabs.find((tab) => tab.id === key);\n }\n\n function setTab(key: string | number) {\n if (getTab(tabs, key)) {\n setActiveKey(key);\n }\n }\n\n function addTab(tab: TabData) {\n setTabs((tabs) => {\n if (!getTab(tabs, tab.id)) {\n return [...tabs, tab];\n }\n\n return tabs;\n });\n }\n\n function setDirtyTab(id: string | number, isDirty: boolean) {\n setTabs((tabs) => {\n const tab = getTab(tabs, id);\n\n if (tab) {\n tab.isDirty = isDirty;\n\n return [...tabs];\n }\n\n return tabs;\n });\n }\n\n function handleClose(tab) {\n if (getTab(tabs, tab.id)) {\n onTabClose && onTabClose(tab.id);\n }\n }\n\n function removeTab(tab) {\n setTabs((tabs) => {\n const _tabs = tabs.filter((_tab) => _tab.id !== tab.id);\n\n setActiveKey((prevActiveKey) => {\n if (prevActiveKey === tab.id) {\n return _tabs[0] && _tabs[0].id;\n }\n\n return prevActiveKey;\n });\n\n return _tabs;\n });\n }\n\n function onPress(tab) {\n setTab(tab.id);\n onTabClick && onTabClick(tab.id);\n }\n\n return (\n <TabsContainerElement {...props}>\n <FileTabsContext.Provider\n value={{\n addTab,\n setTab,\n removeTab,\n setDirtyTab,\n currentTab: activeKey,\n }}\n >\n <TabsPanelElement\n ref={tabsRef}\n data-left-fade={leftFade || null}\n data-right-fade={rightFade || null}\n >\n {tabs.map((tab) => {\n return (\n <Tab\n key={tab.id}\n isClosable={isClosable}\n isDisabled={tab.id === activeKey || false}\n isDirty={tab.isDirty}\n onPress={() => onPress(tab)}\n onClose={() => isClosable && handleClose(tab)}\n >\n {tab.title}\n </Tab>\n );\n })}\n </TabsPanelElement>\n <Flex flexGrow={1} border=\"top\" {...(paneStyles || {})}>\n {children}\n </Flex>\n </FileTabsContext.Provider>\n </TabsContainerElement>\n );\n}\n\nexport interface CubeFileTabProps extends FileTabProps {\n id: string | number;\n title: string;\n}\n\nFileTabs.TabPane = function FileTabPane(allProps: CubeFileTabProps) {\n let { id, title, isDirty, children, ...props } = allProps;\n const { addTab, removeTab, currentTab, setDirtyTab } =\n useContext(FileTabsContext);\n\n useEffect(() => {\n const tabData = {\n id,\n title,\n isDirty,\n };\n\n addTab(tabData);\n\n return () => {\n removeTab(tabData);\n };\n }, [id, title]);\n\n useEffect(() => {\n setDirtyTab(id, isDirty || false);\n }, [isDirty]);\n\n const isCurrent = id === currentTab;\n\n return (\n <Block\n style={{ display: isCurrent ? 'block' : 'none', maxWidth: '100%' }}\n flexGrow={1}\n {...props}\n >\n {children}\n </Block>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileTabs.js","names":[],"sources":["../../../../src/components/organisms/FileTabs/FileTabs.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { CloseIcon } from '../../../icons';\nimport { useLayoutEffect } from '../../../utils/react';\nimport { Action, Button, CubeActionProps } from '../../actions';\nimport { Block } from '../../Block';\nimport { CubeFlexProps, Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\n\ninterface TabData {\n id: string | number;\n title?: string;\n isDirty?: boolean;\n}\n\ninterface FileTabContextValue {\n addTab: (tab: TabData) => void;\n setTab: (id: string | number) => void;\n removeTab: (tab: TabData) => void;\n currentTab?: string | number;\n setDirtyTab: (id: string | number, isDirty: boolean) => void;\n}\n\nconst FileTabsContext = createContext<FileTabContextValue>({\n addTab() {},\n removeTab() {},\n setTab() {},\n setDirtyTab() {},\n});\n\nconst TabsPanelElement = tasty(Space, {\n qa: 'TabsPanel',\n styles: {\n position: 'relative',\n overflow: 'auto hidden',\n top: '1bw',\n gap: '.5x',\n flexShrink: 0,\n whiteSpace: 'nowrap',\n scrollbar: 'styled',\n padding: '1ow 1ow 0 1ow',\n fade: {\n '': false,\n 'left-fade': '3x left',\n 'right-fade': '3x right',\n 'right-fade & left-fade': '3x left right',\n },\n transition: 'fade',\n '--scrollbar-radius': '1ow',\n '--scrollbar-width': '.75x',\n '--scrollbar-outline-width': '1px',\n },\n});\n\nconst TabsContainerElement = tasty(Flex, {\n qa: 'TabsContainer',\n styles: {\n flow: 'column',\n height: 'max 100%',\n width: 'max 100%',\n position: 'relative',\n },\n});\n\nconst DirtyBadge = tasty({\n element: 'DirtyBadge',\n styles: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '1x',\n height: '1x',\n fill: '#dark.30',\n radius: 'round',\n },\n});\n\nconst TabElement = tasty(Action, {\n styles: {\n radius: '1r 1r 0 0',\n padding: '1x 1.5x',\n border: {\n '': 'left top right #clear',\n disabled: 'left top right #border',\n },\n fill: {\n '': '#dark.04',\n hovered: '#dark.08',\n 'disabled, disabled & hover': '#surface',\n },\n color: {\n '': '#dark-02',\n 'disabled, hovered, hovered & disabled': '#dark',\n },\n cursor: {\n '': '$pointer',\n disabled: 'default',\n },\n fontWeight: 500,\n opacity: 1,\n preset: 'default',\n transform: {\n '': 'translate(0, 0)',\n disabled: 'translate(0, 1bw)',\n },\n transition: 'theme 0.2s',\n margin: '1bw bottom',\n\n DirtyBadge: {\n opacity: {\n '': 1,\n 'dirty & :hover': 0,\n },\n pointerEvents: {\n '': 'auto',\n 'dirty & :hover': 'none',\n },\n },\n\n CloseButton: {\n opacity: {\n '': 0,\n '!dirty | :hover': 1,\n },\n },\n },\n});\n\nconst CloseButton = tasty(Button, {\n element: 'CloseButton',\n type: 'neutral',\n icon: <CloseIcon />,\n label: 'Close Tab',\n styles: {\n width: '3x',\n height: '3x',\n padding: 0,\n },\n});\n\n/**\n * @deprecated consider using <Tabs /> instead\n */\nexport interface FileTabProps extends Omit<CubeActionProps, 'id'> {\n isDirty?: boolean;\n isDisabled?: boolean;\n children?: ReactNode;\n isClosable?: boolean;\n onClose?: () => void;\n}\n\nfunction Tab({\n isDirty,\n isDisabled,\n children,\n isClosable,\n onClose,\n ...props\n}: FileTabProps) {\n return (\n <TabElement\n mods={{\n dirty: isDirty,\n }}\n isDisabled={isDisabled}\n {...props}\n >\n <Space gap=\".75x\">\n <Block>{children}</Block>\n {(isClosable || isDirty) && (\n <Flex placeItems=\"center\" style={{ position: 'relative' }}>\n {isClosable ? <CloseButton onPress={onClose} /> : <div></div>}\n {isDirty ? <DirtyBadge /> : null}\n </Flex>\n )}\n </Space>\n </TabElement>\n );\n}\n\nexport interface CubeFileTabsProps extends CubeFlexProps {\n /** The initial active key in the tabs (uncontrolled). */\n defaultActiveKey?: string;\n /** The currently active key in the tabs (controlled). */\n activeKey?: string | number;\n /** Handler that is called when the tab is clicked. */\n onTabClick?: (string) => void;\n /** Handler that is called when the tab is closed. */\n onTabClose?: (string) => void;\n /** Styles for each tab pane */\n paneStyles?: Styles;\n /** Whether the tabs are closable */\n isClosable?: boolean;\n children?: ReactNode;\n}\n\nexport function FileTabs({\n defaultActiveKey,\n activeKey: activeKeyProp,\n onTabClick,\n onTabClose,\n paneStyles,\n isClosable = true,\n children,\n ...props\n}: CubeFileTabsProps) {\n const tabsRef = useRef<HTMLButtonElement>(null);\n const [tabs, setTabs] = useState<TabData[]>([]);\n const [activeKey, setActiveKey] = useState<string | number | undefined>(\n activeKeyProp || defaultActiveKey,\n );\n\n const [leftFade, setLeftFade] = useState(false);\n const [rightFade, setRightFade] = useState(false);\n\n function updateScroll() {\n const el = tabsRef && tabsRef.current;\n\n if (!el) return;\n\n setLeftFade(!!el.scrollLeft);\n setRightFade(\n el.scrollWidth !== el.offsetWidth &&\n !!(el.scrollWidth - el.offsetWidth - el.scrollLeft),\n );\n }\n\n useLayoutEffect(updateScroll, [tabs]);\n\n function scrollCurrentIntoView() {\n const el = tabsRef && tabsRef.current;\n\n if (!el) return;\n\n const current = el.querySelector('button[disabled]');\n\n if (!current) return;\n\n current.scrollIntoView({ behavior: 'smooth', inline: 'end', block: 'end' });\n }\n\n useEffect(() => {\n function update() {\n updateScroll();\n }\n\n if (tabsRef && tabsRef.current) {\n tabsRef.current.addEventListener('scroll', update);\n tabsRef.current.addEventListener('mousewheel', update);\n window.addEventListener('resize', update);\n }\n\n return () => {\n if (tabsRef && tabsRef.current) {\n tabsRef.current.removeEventListener('scroll', update);\n tabsRef.current.removeEventListener('mousewheel', update);\n }\n\n window.removeEventListener('resize', update);\n };\n }, [tabsRef]);\n\n useEffect(scrollCurrentIntoView, [activeKey]);\n\n useEffect(() => {\n setActiveKey(activeKeyProp);\n }, [activeKeyProp]);\n\n function getTab(tabs: TabData[], key: string | number): TabData | undefined {\n return tabs.find((tab) => tab.id === key);\n }\n\n function setTab(key: string | number) {\n if (getTab(tabs, key)) {\n setActiveKey(key);\n }\n }\n\n function addTab(tab: TabData) {\n setTabs((tabs) => {\n if (!getTab(tabs, tab.id)) {\n return [...tabs, tab];\n }\n\n return tabs;\n });\n }\n\n function setDirtyTab(id: string | number, isDirty: boolean) {\n setTabs((tabs) => {\n const tab = getTab(tabs, id);\n\n if (tab) {\n tab.isDirty = isDirty;\n\n return [...tabs];\n }\n\n return tabs;\n });\n }\n\n function handleClose(tab) {\n if (getTab(tabs, tab.id)) {\n onTabClose && onTabClose(tab.id);\n }\n }\n\n function removeTab(tab) {\n setTabs((tabs) => {\n const _tabs = tabs.filter((_tab) => _tab.id !== tab.id);\n\n setActiveKey((prevActiveKey) => {\n if (prevActiveKey === tab.id) {\n return _tabs[0] && _tabs[0].id;\n }\n\n return prevActiveKey;\n });\n\n return _tabs;\n });\n }\n\n function onPress(tab) {\n setTab(tab.id);\n onTabClick && onTabClick(tab.id);\n }\n\n return (\n <TabsContainerElement {...props}>\n <FileTabsContext.Provider\n value={{\n addTab,\n setTab,\n removeTab,\n setDirtyTab,\n currentTab: activeKey,\n }}\n >\n <TabsPanelElement\n ref={tabsRef}\n data-left-fade={leftFade || null}\n data-right-fade={rightFade || null}\n >\n {tabs.map((tab) => {\n return (\n <Tab\n key={tab.id}\n isClosable={isClosable}\n isDisabled={tab.id === activeKey || false}\n isDirty={tab.isDirty}\n onPress={() => onPress(tab)}\n onClose={() => isClosable && handleClose(tab)}\n >\n {tab.title}\n </Tab>\n );\n })}\n </TabsPanelElement>\n <Flex flexGrow={1} border=\"top\" {...(paneStyles || {})}>\n {children}\n </Flex>\n </FileTabsContext.Provider>\n </TabsContainerElement>\n );\n}\n\nexport interface CubeFileTabProps extends FileTabProps {\n id: string | number;\n title: string;\n}\n\nFileTabs.TabPane = function FileTabPane(allProps: CubeFileTabProps) {\n let { id, title, isDirty, children, ...props } = allProps;\n const { addTab, removeTab, currentTab, setDirtyTab } =\n useContext(FileTabsContext);\n\n useEffect(() => {\n const tabData = {\n id,\n title,\n isDirty,\n };\n\n addTab(tabData);\n\n return () => {\n removeTab(tabData);\n };\n }, [id, title]);\n\n useEffect(() => {\n setDirtyTab(id, isDirty || false);\n }, [isDirty]);\n\n const isCurrent = id === currentTab;\n\n return (\n <Block\n style={{ display: isCurrent ? 'block' : 'none', maxWidth: '100%' }}\n flexGrow={1}\n {...props}\n >\n {children}\n </Block>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { _Text } from "../../content/Text.js";
|
|
3
3
|
import { _Title } from "../../content/Title.js";
|
|
4
4
|
import { Card } from "../../content/Card/Card.js";
|
|
@@ -11,7 +11,7 @@ function StatsCard({ title, value, suffix, ...props }) {
|
|
|
11
11
|
placeContent: "space-between",
|
|
12
12
|
gap: "1x",
|
|
13
13
|
border: false,
|
|
14
|
-
shadow: "
|
|
14
|
+
shadow: "$shadow",
|
|
15
15
|
padding: "2.5x",
|
|
16
16
|
...props,
|
|
17
17
|
children: [/* @__PURE__ */ jsx(_Title, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatsCard.js","names":["Title","Text"],"sources":["../../../../src/components/organisms/StatsCard/StatsCard.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport { Card, CubeCardProps } from '../../content/Card/Card';\nimport { Text } from '../../content/Text';\nimport { Title } from '../../content/Title';\n\nexport interface CubeStatsCard extends CubeCardProps {\n title?: string | ReactNode;\n value?: string | number | ReactNode;\n suffix?: string | number | ReactNode;\n}\n\nexport function StatsCard({ title, value, suffix, ...props }: CubeStatsCard) {\n return (\n <Card\n display=\"flex\"\n placeContent=\"space-between\"\n gap=\"1x\"\n border={false}\n shadow=\"
|
|
1
|
+
{"version":3,"file":"StatsCard.js","names":["Title","Text"],"sources":["../../../../src/components/organisms/StatsCard/StatsCard.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport { Card, CubeCardProps } from '../../content/Card/Card';\nimport { Text } from '../../content/Text';\nimport { Title } from '../../content/Title';\n\nexport interface CubeStatsCard extends CubeCardProps {\n title?: string | ReactNode;\n value?: string | number | ReactNode;\n suffix?: string | number | ReactNode;\n}\n\nexport function StatsCard({ title, value, suffix, ...props }: CubeStatsCard) {\n return (\n <Card\n display=\"flex\"\n placeContent=\"space-between\"\n gap=\"1x\"\n border={false}\n shadow=\"$shadow\"\n padding=\"2.5x\"\n {...props}\n >\n <Title nowrap level={4} color=\"#minor\" preset=\"default\">\n {title}\n </Title>\n <Text.Strong preset=\"h3\">\n {value} {suffix}\n </Text.Strong>\n </Card>\n );\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,UAAU,EAAE,OAAO,OAAO,QAAQ,GAAG,SAAwB;AAC3E,QACE,qBAAC;EACC,SAAQ;EACR,cAAa;EACb,KAAI;EACJ,QAAQ;EACR,QAAO;EACP,SAAQ;EACR,GAAI;aAEJ,oBAACA;GAAM;GAAO,OAAO;GAAG,OAAM;GAAS,QAAO;aAC3C;IACK,EACR,qBAACC,MAAK;GAAO,QAAO;;IACjB;IAAM;IAAE;;IACG;GACT"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { _Title } from "../../content/Title.js";
|
|
3
3
|
import { useProviderProps } from "../../../provider.js";
|
|
4
4
|
import { Space } from "../../layout/Space.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { _Title } from "../../content/Title.js";
|
|
3
3
|
import { useProviderProps } from "../../../provider.js";
|
|
4
4
|
import { Space } from "../../layout/Space.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { chain } from "../../../utils/react/chain.js";
|
|
3
3
|
import { Paragraph } from "../../content/Paragraph.js";
|
|
4
4
|
import { _Title } from "../../content/Title.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { AlertDialogZone } from "./AlertDialogZone.js";
|
|
3
3
|
import { createContext, useContext, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { Portal } from "../../portal/Portal.js";
|
|
3
3
|
import { DialogContainer } from "../Dialog/DialogContainer.js";
|
|
4
4
|
import { _AlertDialog } from "./AlertDialog.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { SlotProvider } from "../../../utils/react/Slots.js";
|
|
@@ -25,7 +25,7 @@ const DialogElement = tasty({
|
|
|
25
25
|
styles: {
|
|
26
26
|
display: "flex",
|
|
27
27
|
flow: "column",
|
|
28
|
-
fill: "#
|
|
28
|
+
fill: "#surface",
|
|
29
29
|
pointerEvents: "auto",
|
|
30
30
|
outline: 0,
|
|
31
31
|
position: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","names":["ItemButton","mergeProps"],"sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { createFocusManager } from '@react-aria/focus';\nimport { useDOMRef } from '@react-spectrum/utils';\nimport { DOMRef } from '@react-types/shared';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n DIMENSION_STYLES,\n DimensionStyleProps,\n FLOW_STYLES,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, ReactElement, useEffect, useMemo } from 'react';\nimport {\n AriaDialogProps,\n DismissButton,\n FocusScope,\n useDialog,\n useMessageFormatter,\n} from 'react-aria';\n\nimport { CloseIcon } from '../../../icons';\nimport { mergeProps, SlotProvider } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { useDialogContext } from './context';\n\nconst STYLES_LIST = [\n ...BASE_STYLES,\n ...DIMENSION_STYLES,\n ...BLOCK_STYLES,\n ...FLOW_STYLES,\n];\n\nconst DialogElement = tasty({\n as: 'section',\n styles: {\n display: 'flex',\n flow: 'column',\n fill: '#white',\n pointerEvents: 'auto',\n outline: 0,\n position: {\n '': 'relative',\n 'type=panel': 'absolute',\n },\n width: {\n '': '$min-dialog-size $dialog-size (100dvw - 8x)',\n 'type=fullscreen': '(100dvw - 8x) (100dvw - 8x)',\n 'type=fullscreenTakeover': '100dvw 100dvw',\n 'type=panel': 'auto',\n },\n height: {\n '': 'auto (100dvh - 8x)',\n 'type=fullscreen': '(100dvh - 8x) (100dvh - 8x)',\n 'type=fullscreenTakeover | type=panel': '100dvh 100dvh',\n 'type=popover': 'initial initial (50dvh - 5x)',\n },\n gap: 0,\n border: {\n '': false,\n 'type=popover': true,\n },\n radius: {\n '': '1cr',\n 'type=tray': '1cr top',\n 'type=fullscreenTakeover': '0r',\n },\n shadow: {\n '': '$dialog-shadow',\n 'type=popover | type=panel': '$shadow',\n },\n top: {\n '': false,\n 'type=modal': '((50vh - 50%) / -3)',\n 'type=panel': 'auto',\n },\n '$dialog-title-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-padding-h': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-footer-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-gap': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n },\n});\n\nconst CloseButton = tasty(ItemButton, {\n qa: 'ModalCloseButton',\n type: 'neutral',\n styles: {\n position: 'absolute',\n top: '1x',\n right: '1x',\n },\n});\n\nconst sizeMap = {\n S: 'small',\n M: 'medium',\n L: 'large',\n};\nconst sizePxMap = {\n small: 360,\n medium: 479,\n large: 798,\n};\n\nconst intlMessages = {\n 'en-US': {\n dismiss: 'Dismiss',\n alert: 'Alert',\n },\n};\n\nexport interface CubeDialogProps\n extends Omit<BaseProps, 'role'>,\n AriaDialogProps,\n BaseStyleProps,\n BlockStyleProps,\n DimensionStyleProps {\n /** The size of the dialog */\n size?: 'S' | 'M' | 'L' | 'small' | 'medium' | 'large';\n /** Whether the dialog is dismissable */\n isDismissable?: boolean;\n /** Trigger when the dialog is dismissed */\n onDismiss?: (arg?: any) => void;\n /** That you can replace the close icon with */\n closeIcon?: ReactElement;\n closeButtonStyles?: Styles;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Dialogs are windows containing contextual information, tasks, or workflows that appear over the user interface.\n * Depending on the kind of Dialog, further interactions may be blocked until the Dialog is acknowledged.\n */\nexport const Dialog = forwardRef(function Dialog(\n props: CubeDialogProps,\n ref: DOMRef<HTMLDivElement>,\n) {\n const transitionContext = useOpenTransitionContext();\n\n const isEntered = transitionContext?.transitionState === 'entered';\n\n const context = useDialogContext();\n\n const content = useMemo(() => {\n return <DialogContent key=\"content\" {...props} ref={ref} />;\n }, [props, ref]);\n\n const shouldContainFocus =\n isEntered && !!context.isOpen && context.type !== 'panel';\n\n return (\n // This component traps the focus inside the dialog and restores it on close.\n <FocusScope restoreFocus contain={shouldContainFocus}>\n {content}\n </FocusScope>\n );\n});\n\nconst DialogContent = forwardRef(function DialogContent(\n props: CubeDialogProps,\n ref: DOMRef<HTMLDivElement>,\n) {\n let { type = 'modal', ...contextProps } = useDialogContext();\n\n let {\n qa,\n children,\n size = 'M',\n isDismissable = contextProps.isDismissable,\n onDismiss = contextProps.onClose,\n closeIcon,\n closeButtonStyles,\n style,\n ...otherProps\n } = props;\n\n size = sizeMap[size.toUpperCase()] || size;\n\n const styles: Styles = extractStyles(otherProps, STYLES_LIST);\n\n let formatMessage = useMessageFormatter(intlMessages);\n\n let domRef = useDOMRef(ref);\n let { dialogProps, titleProps } = useDialog(\n mergeProps(contextProps, props),\n domRef,\n );\n\n // If rendered in a popover or tray there won't be a visible dismiss button,\n // so we render a hidden one for screen readers.\n let dismissButton;\n if (type === 'popover' || type === 'tray') {\n dismissButton = <DismissButton onDismiss={onDismiss} />;\n }\n\n // Focus the first focusable element in the dialog when it opens.\n //\n // We also re-run the priority focus logic when the dialog <section>\n // itself is the active element. This recovers from a race that occurs\n // when a popover-based component (FilterPicker, Picker, Select, …) opens\n // inside another contained Dialog: React's native `autoFocus` on the\n // inner control fires during the mutation phase, before the popover's\n // FocusScope registers in react-aria's focus-scope tree, so the outer\n // FocusScope yanks focus back. useDialog then defaults focus to the\n // dialog <section>; without re-promoting it here, the priority element\n // (e.g. the search input) is never focused.\n useEffect(() => {\n if (contextProps.isOpen) {\n setTimeout(() => {\n if (!domRef.current) return;\n\n const activeElement = document.activeElement;\n const isFocusOutsideDialog = !domRef.current.contains(activeElement);\n const isFocusOnDialogShell = activeElement === domRef.current;\n\n // Priority 1: autofocus input or primary button\n const priorityElement = domRef.current.querySelector(\n 'input[data-autofocus], button[type=\"submit\"], button[data-type=\"primary\"]',\n ) as HTMLElement | null;\n\n if (priorityElement && (isFocusOutsideDialog || isFocusOnDialogShell)) {\n priorityElement.focus();\n return;\n }\n\n if (isFocusOutsideDialog) {\n // Fallback: focus first tabbable element, or dialog itself\n const focusManager = createFocusManager(domRef);\n\n if (!focusManager.focusFirst({ tabbable: true })) {\n domRef.current.focus();\n }\n }\n });\n }\n }, [contextProps.isOpen]);\n\n // let hasHeader = useHasChild('[data-id=\"Header\"]', domRef);\n // let hasFooter = useHasChild('[data-id=\"Footer\"]', domRef);\n\n let slots = {\n title: {\n level: 2,\n preset: 'h4',\n ...titleProps,\n },\n content: {\n styles: {\n flexGrow: 1,\n padding: '$dialog-content-padding-v $dialog-padding-h',\n gap: '$dialog-content-gap',\n height: {\n '': 'max (100% - (2 * $dialog-content-padding-v))',\n ':last-child': 'max (100% - $dialog-content-padding-v)',\n },\n },\n },\n header: {\n ellipsis: true,\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center stretch',\n placeContent: 'space-between',\n padding: `$dialog-title-padding-v ${\n isDismissable ? '($dialog-padding-h + 4x)' : '$dialog-padding-h'\n } $dialog-title-padding-v $dialog-padding-h`,\n border: 'bottom',\n },\n },\n footer: {\n styles: {\n display: 'flex',\n gap: '1x',\n flow: 'row-reverse',\n placeItems: 'baseline stretch',\n placeContent: 'space-between',\n padding: '$dialog-footer-v $dialog-padding-h',\n },\n },\n buttonGroup: {\n styles: {\n flow: 'row-reverse',\n },\n },\n };\n\n return (\n <DialogElement\n ref={domRef}\n data-id=\"Dialog\"\n data-qa={qa || 'Dialog'}\n styles={styles}\n as=\"section\"\n {...dialogProps}\n mods={{ dismissable: isDismissable }}\n style={{\n '--dialog-size': `${sizePxMap[size] || sizePxMap.small}px`,\n ...style,\n }}\n data-type={type}\n data-size={size}\n >\n {dismissButton}\n\n <SlotProvider slots={slots}>\n {isDismissable && (\n <CloseButton\n icon={closeIcon || <CloseIcon size={20} />}\n label={formatMessage('dismiss')}\n onPress={() => onDismiss && onDismiss()}\n />\n )}\n {children}\n </SlotProvider>\n </DialogElement>\n );\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dialog.js","names":["ItemButton","mergeProps"],"sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { createFocusManager } from '@react-aria/focus';\nimport { useDOMRef } from '@react-spectrum/utils';\nimport { DOMRef } from '@react-types/shared';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n DIMENSION_STYLES,\n DimensionStyleProps,\n FLOW_STYLES,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, ReactElement, useEffect, useMemo } from 'react';\nimport {\n AriaDialogProps,\n DismissButton,\n FocusScope,\n useDialog,\n useMessageFormatter,\n} from 'react-aria';\n\nimport { CloseIcon } from '../../../icons';\nimport { mergeProps, SlotProvider } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { useDialogContext } from './context';\n\nconst STYLES_LIST = [\n ...BASE_STYLES,\n ...DIMENSION_STYLES,\n ...BLOCK_STYLES,\n ...FLOW_STYLES,\n];\n\nconst DialogElement = tasty({\n as: 'section',\n styles: {\n display: 'flex',\n flow: 'column',\n fill: '#surface',\n pointerEvents: 'auto',\n outline: 0,\n position: {\n '': 'relative',\n 'type=panel': 'absolute',\n },\n width: {\n '': '$min-dialog-size $dialog-size (100dvw - 8x)',\n 'type=fullscreen': '(100dvw - 8x) (100dvw - 8x)',\n 'type=fullscreenTakeover': '100dvw 100dvw',\n 'type=panel': 'auto',\n },\n height: {\n '': 'auto (100dvh - 8x)',\n 'type=fullscreen': '(100dvh - 8x) (100dvh - 8x)',\n 'type=fullscreenTakeover | type=panel': '100dvh 100dvh',\n 'type=popover': 'initial initial (50dvh - 5x)',\n },\n gap: 0,\n border: {\n '': false,\n 'type=popover': true,\n },\n radius: {\n '': '1cr',\n 'type=tray': '1cr top',\n 'type=fullscreenTakeover': '0r',\n },\n shadow: {\n '': '$dialog-shadow',\n 'type=popover | type=panel': '$shadow',\n },\n top: {\n '': false,\n 'type=modal': '((50vh - 50%) / -3)',\n 'type=panel': 'auto',\n },\n '$dialog-title-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-padding-h': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-footer-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-gap': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n },\n});\n\nconst CloseButton = tasty(ItemButton, {\n qa: 'ModalCloseButton',\n type: 'neutral',\n styles: {\n position: 'absolute',\n top: '1x',\n right: '1x',\n },\n});\n\nconst sizeMap = {\n S: 'small',\n M: 'medium',\n L: 'large',\n};\nconst sizePxMap = {\n small: 360,\n medium: 479,\n large: 798,\n};\n\nconst intlMessages = {\n 'en-US': {\n dismiss: 'Dismiss',\n alert: 'Alert',\n },\n};\n\nexport interface CubeDialogProps\n extends Omit<BaseProps, 'role'>,\n AriaDialogProps,\n BaseStyleProps,\n BlockStyleProps,\n DimensionStyleProps {\n /** The size of the dialog */\n size?: 'S' | 'M' | 'L' | 'small' | 'medium' | 'large';\n /** Whether the dialog is dismissable */\n isDismissable?: boolean;\n /** Trigger when the dialog is dismissed */\n onDismiss?: (arg?: any) => void;\n /** That you can replace the close icon with */\n closeIcon?: ReactElement;\n closeButtonStyles?: Styles;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Dialogs are windows containing contextual information, tasks, or workflows that appear over the user interface.\n * Depending on the kind of Dialog, further interactions may be blocked until the Dialog is acknowledged.\n */\nexport const Dialog = forwardRef(function Dialog(\n props: CubeDialogProps,\n ref: DOMRef<HTMLDivElement>,\n) {\n const transitionContext = useOpenTransitionContext();\n\n const isEntered = transitionContext?.transitionState === 'entered';\n\n const context = useDialogContext();\n\n const content = useMemo(() => {\n return <DialogContent key=\"content\" {...props} ref={ref} />;\n }, [props, ref]);\n\n const shouldContainFocus =\n isEntered && !!context.isOpen && context.type !== 'panel';\n\n return (\n // This component traps the focus inside the dialog and restores it on close.\n <FocusScope restoreFocus contain={shouldContainFocus}>\n {content}\n </FocusScope>\n );\n});\n\nconst DialogContent = forwardRef(function DialogContent(\n props: CubeDialogProps,\n ref: DOMRef<HTMLDivElement>,\n) {\n let { type = 'modal', ...contextProps } = useDialogContext();\n\n let {\n qa,\n children,\n size = 'M',\n isDismissable = contextProps.isDismissable,\n onDismiss = contextProps.onClose,\n closeIcon,\n closeButtonStyles,\n style,\n ...otherProps\n } = props;\n\n size = sizeMap[size.toUpperCase()] || size;\n\n const styles: Styles = extractStyles(otherProps, STYLES_LIST);\n\n let formatMessage = useMessageFormatter(intlMessages);\n\n let domRef = useDOMRef(ref);\n let { dialogProps, titleProps } = useDialog(\n mergeProps(contextProps, props),\n domRef,\n );\n\n // If rendered in a popover or tray there won't be a visible dismiss button,\n // so we render a hidden one for screen readers.\n let dismissButton;\n if (type === 'popover' || type === 'tray') {\n dismissButton = <DismissButton onDismiss={onDismiss} />;\n }\n\n // Focus the first focusable element in the dialog when it opens.\n //\n // We also re-run the priority focus logic when the dialog <section>\n // itself is the active element. This recovers from a race that occurs\n // when a popover-based component (FilterPicker, Picker, Select, …) opens\n // inside another contained Dialog: React's native `autoFocus` on the\n // inner control fires during the mutation phase, before the popover's\n // FocusScope registers in react-aria's focus-scope tree, so the outer\n // FocusScope yanks focus back. useDialog then defaults focus to the\n // dialog <section>; without re-promoting it here, the priority element\n // (e.g. the search input) is never focused.\n useEffect(() => {\n if (contextProps.isOpen) {\n setTimeout(() => {\n if (!domRef.current) return;\n\n const activeElement = document.activeElement;\n const isFocusOutsideDialog = !domRef.current.contains(activeElement);\n const isFocusOnDialogShell = activeElement === domRef.current;\n\n // Priority 1: autofocus input or primary button\n const priorityElement = domRef.current.querySelector(\n 'input[data-autofocus], button[type=\"submit\"], button[data-type=\"primary\"]',\n ) as HTMLElement | null;\n\n if (priorityElement && (isFocusOutsideDialog || isFocusOnDialogShell)) {\n priorityElement.focus();\n return;\n }\n\n if (isFocusOutsideDialog) {\n // Fallback: focus first tabbable element, or dialog itself\n const focusManager = createFocusManager(domRef);\n\n if (!focusManager.focusFirst({ tabbable: true })) {\n domRef.current.focus();\n }\n }\n });\n }\n }, [contextProps.isOpen]);\n\n // let hasHeader = useHasChild('[data-id=\"Header\"]', domRef);\n // let hasFooter = useHasChild('[data-id=\"Footer\"]', domRef);\n\n let slots = {\n title: {\n level: 2,\n preset: 'h4',\n ...titleProps,\n },\n content: {\n styles: {\n flexGrow: 1,\n padding: '$dialog-content-padding-v $dialog-padding-h',\n gap: '$dialog-content-gap',\n height: {\n '': 'max (100% - (2 * $dialog-content-padding-v))',\n ':last-child': 'max (100% - $dialog-content-padding-v)',\n },\n },\n },\n header: {\n ellipsis: true,\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center stretch',\n placeContent: 'space-between',\n padding: `$dialog-title-padding-v ${\n isDismissable ? '($dialog-padding-h + 4x)' : '$dialog-padding-h'\n } $dialog-title-padding-v $dialog-padding-h`,\n border: 'bottom',\n },\n },\n footer: {\n styles: {\n display: 'flex',\n gap: '1x',\n flow: 'row-reverse',\n placeItems: 'baseline stretch',\n placeContent: 'space-between',\n padding: '$dialog-footer-v $dialog-padding-h',\n },\n },\n buttonGroup: {\n styles: {\n flow: 'row-reverse',\n },\n },\n };\n\n return (\n <DialogElement\n ref={domRef}\n data-id=\"Dialog\"\n data-qa={qa || 'Dialog'}\n styles={styles}\n as=\"section\"\n {...dialogProps}\n mods={{ dismissable: isDismissable }}\n style={{\n '--dialog-size': `${sizePxMap[size] || sizePxMap.small}px`,\n ...style,\n }}\n data-type={type}\n data-size={size}\n >\n {dismissButton}\n\n <SlotProvider slots={slots}>\n {isDismissable && (\n <CloseButton\n icon={closeIcon || <CloseIcon size={20} />}\n label={formatMessage('dismiss')}\n onPress={() => onDismiss && onDismiss()}\n />\n )}\n {children}\n </SlotProvider>\n </DialogElement>\n );\n});\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { _Modal } from "../Modal/Modal.js";
|
|
3
3
|
import { DialogContext } from "./context.js";
|
|
4
4
|
import { Children, isValidElement, useRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { _Title } from "../../content/Title.js";
|
|
3
3
|
import { ButtonGroup } from "../../actions/ButtonGroup/ButtonGroup.js";
|
|
4
4
|
import { Button } from "../../actions/index.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
3
3
|
import { _Modal } from "../Modal/Modal.js";
|
|
4
4
|
import { _Tray } from "../Modal/Tray.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { DialogContainer } from "./DialogContainer.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { _Overlay } from "./Overlay.js";
|
|
4
4
|
import { _Underlay } from "./Underlay.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
|
|
3
3
|
import { Provider, useProviderProps } from "../../../provider.js";
|
|
4
4
|
import { OpenTransitionContext } from "./OpenTransitionContext.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { _Overlay } from "./Overlay.js";
|
|
4
4
|
import { tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { _Overlay } from "./Overlay.js";
|
|
4
4
|
import { _Underlay } from "./Underlay.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.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 { createContext, useContext, useMemo } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { Block } from "../../Block.js";
|
|
3
3
|
import { ItemActionProvider } from "../../actions/ItemActionContext.js";
|
|
4
4
|
import { Space } from "../../layout/Space.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { NotificationCard } from "./NotificationCard.js";
|
|
4
4
|
import { tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.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,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { _Text } from "../../content/Text.js";
|
|
4
4
|
import { NotificationActionInterceptorContext } from "./NotificationAction.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.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.138.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.138.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.138.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,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { _Item } from "../../content/Item/Item.js";
|
|
3
3
|
import { getThemeIcon } from "./useToast.js";
|
|
4
4
|
import { tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.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.138.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,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.138.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
4
4
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
@@ -14,12 +14,12 @@ import { createDOMRef } from "@react-spectrum/utils";
|
|
|
14
14
|
const TooltipElement = tasty({ styles: {
|
|
15
15
|
display: "block",
|
|
16
16
|
fill: {
|
|
17
|
-
"": "#
|
|
18
|
-
light: "#
|
|
17
|
+
"": "#surface-inverse.85",
|
|
18
|
+
light: "#surface"
|
|
19
19
|
},
|
|
20
20
|
color: {
|
|
21
21
|
"": "#white",
|
|
22
|
-
light: "#
|
|
22
|
+
light: "#surface-text-soft"
|
|
23
23
|
},
|
|
24
24
|
width: "initial min(36x, (100dvw - 4x)) max-content",
|
|
25
25
|
radius: true,
|
|
@@ -33,7 +33,7 @@ const TooltipElement = tasty({ styles: {
|
|
|
33
33
|
},
|
|
34
34
|
filter: {
|
|
35
35
|
"": false,
|
|
36
|
-
light: "drop-shadow(0 0 1px #
|
|
36
|
+
light: "drop-shadow(0 0 1px #surface-text-soft.2)"
|
|
37
37
|
},
|
|
38
38
|
transition: "translate $transition ease-out, scale $transition ease-out, theme $transition ease-out",
|
|
39
39
|
translate: {
|
|
@@ -69,8 +69,8 @@ const TooltipTipElement = tasty({ styles: {
|
|
|
69
69
|
height: "1px",
|
|
70
70
|
border: ".5x #clear",
|
|
71
71
|
borderTop: {
|
|
72
|
-
"": ".5x solid #
|
|
73
|
-
light: ".5x solid #
|
|
72
|
+
"": ".5x solid #surface-inverse.85",
|
|
73
|
+
light: ".5x solid #surface"
|
|
74
74
|
},
|
|
75
75
|
borderBottom: "0",
|
|
76
76
|
top: {
|