@cube-dev/ui-kit 0.0.0-canary-9b9355c → 0.0.0-canary-186a28f
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/es/_internal/hooks/index.js +1 -1
- package/es/_internal/hooks/use-chained-callback.js +1 -1
- package/es/_internal/hooks/use-debounced-value.js +1 -1
- package/es/_internal/hooks/use-deprecation-warning.js +1 -1
- package/es/_internal/hooks/use-effect-once.js +1 -1
- package/es/_internal/hooks/use-event.js +1 -1
- package/es/_internal/hooks/use-is-first-render.js +1 -1
- package/es/_internal/hooks/use-sync-ref.js +1 -1
- package/es/_internal/hooks/use-timer/index.js +1 -1
- package/es/_internal/hooks/use-timer/timer.js +1 -1
- package/es/_internal/hooks/use-timer/use-timer.js +1 -1
- package/es/_internal/hooks/use-update-effect.js +1 -1
- package/es/_internal/hooks/use-warn.js +1 -1
- package/es/_internal/index.js +1 -1
- package/es/components/Block.js +1 -1
- package/es/components/CollectionItem.js +1 -1
- package/es/components/GlobalStyles.js +1 -1
- package/es/components/GridProvider.js +1 -1
- package/es/components/HiddenInput.js +1 -1
- package/es/components/OpenTrasition.js +1 -1
- package/es/components/Root.js +1 -1
- package/es/components/actions/Action/Action.js +1 -1
- package/es/components/actions/Button/Button.js +1 -1
- package/es/components/actions/Button/index.js +1 -1
- package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/es/components/actions/CommandMenu/index.js +1 -1
- package/es/components/actions/CommandMenu/styled.js +1 -1
- package/es/components/actions/ItemAction/ItemAction.js +1 -1
- package/es/components/actions/ItemAction/index.js +1 -1
- package/es/components/actions/ItemActionContext.js +1 -1
- package/es/components/actions/ItemButton/ItemButton.js +1 -1
- package/es/components/actions/ItemButton/index.js +1 -1
- package/es/components/actions/Link/Link.js +1 -1
- package/es/components/actions/Menu/Menu.js +1 -1
- package/es/components/actions/Menu/MenuItem.js +1 -1
- package/es/components/actions/Menu/MenuSection.js +1 -1
- package/es/components/actions/Menu/MenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/es/components/actions/Menu/context.js +1 -1
- package/es/components/actions/Menu/index.js +1 -1
- package/es/components/actions/Menu/styled.js +1 -1
- package/es/components/actions/index.js +1 -1
- package/es/components/actions/use-action.js +1 -1
- package/es/components/actions/use-anchored-menu.js +1 -1
- package/es/components/actions/use-context-menu.js +1 -1
- package/es/components/content/ActiveZone/ActiveZone.js +1 -1
- package/es/components/content/Alert/Alert.js +1 -1
- package/es/components/content/Alert/index.js +1 -1
- package/es/components/content/Alert/types.js +1 -1
- package/es/components/content/Alert/use-alert.js +1 -1
- package/es/components/content/Avatar/Avatar.js +1 -1
- package/es/components/content/Badge/Badge.js +1 -1
- package/es/components/content/Card/Card.js +1 -1
- package/es/components/content/Content.js +1 -1
- package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/es/components/content/CopyPasteBlock/index.js +1 -1
- package/es/components/content/CopySnippet/CopySnippet.js +1 -1
- package/es/components/content/CopySnippet/index.js +1 -1
- package/es/components/content/Disclosure/Disclosure.js +1 -1
- package/es/components/content/Disclosure/index.js +1 -1
- package/es/components/content/Divider.js +1 -1
- package/es/components/content/Footer.js +1 -1
- package/es/components/content/Header.js +1 -1
- package/es/components/content/HotKeys/HotKeys.js +1 -1
- package/es/components/content/HotKeys/index.js +1 -1
- package/es/components/content/Item/Item.js +1 -1
- package/es/components/content/Item/index.js +1 -1
- package/es/components/content/ItemBadge/ItemBadge.js +1 -1
- package/es/components/content/ItemBadge/index.js +1 -1
- package/es/components/content/Layout/GridLayout.js +1 -1
- package/es/components/content/Layout/Layout.js +1 -1
- package/es/components/content/Layout/LayoutBlock.js +1 -1
- package/es/components/content/Layout/LayoutCenter.js +1 -1
- package/es/components/content/Layout/LayoutContainer.js +1 -1
- package/es/components/content/Layout/LayoutContent.js +1 -1
- package/es/components/content/Layout/LayoutContext.js +1 -1
- package/es/components/content/Layout/LayoutFlex.js +1 -1
- package/es/components/content/Layout/LayoutFooter.js +1 -1
- package/es/components/content/Layout/LayoutGrid.js +1 -1
- package/es/components/content/Layout/LayoutHeader.js +1 -1
- package/es/components/content/Layout/LayoutPane.js +1 -1
- package/es/components/content/Layout/LayoutPanel.js +1 -1
- package/es/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/es/components/content/Layout/LayoutToolbar.js +1 -1
- package/es/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/es/components/content/Layout/index.js +1 -1
- package/es/components/content/Layout/utils.js +1 -1
- package/es/components/content/List/SectionHeading.js +1 -1
- package/es/components/content/List/index.js +1 -1
- package/es/components/content/Paragraph.js +1 -1
- package/es/components/content/Placeholder/Placeholder.js +1 -1
- package/es/components/content/PrismCode/PrismCode.js +1 -1
- package/es/components/content/PrismCode/prismSetup.js +1 -1
- package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/es/components/content/Result/Result.js +1 -1
- package/es/components/content/Skeleton/Skeleton.js +1 -1
- package/es/components/content/Tag/Tag.js +1 -1
- package/es/components/content/Text.js +1 -1
- package/es/components/content/TextItem/TextItem.js +1 -1
- package/es/components/content/TextItem/index.js +1 -1
- package/es/components/content/Title.js +1 -1
- package/es/components/content/highlightText.js +1 -1
- package/es/components/content/use-auto-tooltip.js +1 -1
- package/es/components/fields/Checkbox/Checkbox.js +1 -1
- package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/es/components/fields/Checkbox/context.js +1 -1
- package/es/components/fields/Checkbox/index.js +1 -1
- package/es/components/fields/ComboBox/ComboBox.js +1 -1
- package/es/components/fields/ComboBox/index.js +1 -1
- package/es/components/fields/DatePicker/DateInput.js +1 -1
- package/es/components/fields/DatePicker/DateInputBase.js +1 -1
- package/es/components/fields/DatePicker/DatePicker.js +1 -1
- package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/es/components/fields/DatePicker/TimeInput.js +1 -1
- package/es/components/fields/DatePicker/index.js +1 -1
- package/es/components/fields/DatePicker/intl.js +1 -1
- package/es/components/fields/DatePicker/parseDate.js +1 -1
- package/es/components/fields/DatePicker/props.js +1 -1
- package/es/components/fields/DatePicker/types.js +1 -1
- package/es/components/fields/DatePicker/utils.js +1 -1
- package/es/components/fields/FileInput/FileInput.js +1 -1
- package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/es/components/fields/FilterListBox/index.js +1 -1
- package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/es/components/fields/FilterPicker/index.js +1 -1
- package/es/components/fields/Input/Input.js +1 -1
- package/es/components/fields/Input/index.js +1 -1
- package/es/components/fields/ListBox/ListBox.js +1 -1
- package/es/components/fields/ListBox/index.js +1 -1
- package/es/components/fields/NumberInput/NumberInput.js +1 -1
- package/es/components/fields/NumberInput/StepButton.js +1 -1
- package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/es/components/fields/Picker/Picker.js +1 -1
- package/es/components/fields/Picker/index.js +1 -1
- package/es/components/fields/RadioGroup/Radio.js +1 -1
- package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/es/components/fields/RadioGroup/context.js +1 -1
- package/es/components/fields/RadioGroup/index.js +1 -1
- package/es/components/fields/SearchInput/SearchInput.js +1 -1
- package/es/components/fields/SearchInput/index.js +1 -1
- package/es/components/fields/Select/Select.js +1 -1
- package/es/components/fields/Select/index.js +1 -1
- package/es/components/fields/Slider/Gradation.js +1 -1
- package/es/components/fields/Slider/Header.js +1 -1
- package/es/components/fields/Slider/RangeSlider.js +1 -1
- package/es/components/fields/Slider/Slider.js +1 -1
- package/es/components/fields/Slider/SliderBase.js +1 -1
- package/es/components/fields/Slider/SliderInput.js +1 -1
- package/es/components/fields/Slider/SliderThumb.js +1 -1
- package/es/components/fields/Slider/SliderTrack.js +1 -1
- package/es/components/fields/Slider/elements.js +1 -1
- package/es/components/fields/Slider/index.js +1 -1
- package/es/components/fields/Slider/types.js +1 -1
- package/es/components/fields/Switch/Switch.js +1 -1
- package/es/components/fields/Switch/index.js +1 -1
- package/es/components/fields/TextArea/TextArea.js +1 -1
- package/es/components/fields/TextArea/index.js +1 -1
- package/es/components/fields/TextInput/TextInput.js +1 -1
- package/es/components/fields/TextInput/TextInputBase.js +1 -1
- package/es/components/fields/TextInput/index.js +1 -1
- package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/es/components/fields/TextInputMapper/index.js +1 -1
- package/es/components/fields/index.js +1 -1
- package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/es/components/form/FieldWrapper/index.js +1 -1
- package/es/components/form/FieldWrapper/types.js +1 -1
- package/es/components/form/Form/Field.js +1 -1
- package/es/components/form/Form/Form.js +1 -1
- package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/es/components/form/Form/ResetButton/index.js +1 -1
- package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/es/components/form/Form/SubmitButton/index.js +1 -1
- package/es/components/form/Form/SubmitError.js +1 -1
- package/es/components/form/Form/index.js +1 -1
- package/es/components/form/Form/types.js +1 -1
- package/es/components/form/Form/use-field/index.js +1 -1
- package/es/components/form/Form/use-field/types.js +1 -1
- package/es/components/form/Form/use-field/use-field-props.js +1 -1
- package/es/components/form/Form/use-field/use-field.js +1 -1
- package/es/components/form/Form/use-form.js +1 -1
- package/es/components/form/Form/validation.js +1 -1
- package/es/components/form/Label.js +1 -1
- package/es/components/form/index.js +1 -1
- package/es/components/form/wrapper.js +1 -1
- package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/es/components/helpers/DisplayTransition/index.js +1 -1
- package/es/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/es/components/helpers/index.js +1 -1
- package/es/components/layout/Flex.js +1 -1
- package/es/components/layout/Flow.js +1 -1
- package/es/components/layout/Grid.js +1 -1
- package/es/components/layout/Panel.js +1 -1
- package/es/components/layout/Prefix.js +1 -1
- package/es/components/layout/ResizablePanel.js +1 -1
- package/es/components/layout/Space.js +1 -1
- package/es/components/layout/Suffix.js +1 -1
- package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
- package/es/components/organisms/FileTabs/FileTabs.js +1 -1
- package/es/components/organisms/StatsCard/StatsCard.js +1 -1
- package/es/components/other/Base64Upload/Base64Upload.js +1 -1
- package/es/components/other/Calendar/Calendar.js +1 -1
- package/es/components/other/Calendar/CalendarCell.js +1 -1
- package/es/components/other/Calendar/CalendarGrid.js +1 -1
- package/es/components/other/Calendar/RangeCalendar.js +1 -1
- package/es/components/other/CloudLogo/CloudLogo.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/es/components/overlays/AlertDialog/index.js +1 -1
- package/es/components/overlays/AlertDialog/types.js +1 -1
- package/es/components/overlays/Dialog/Dialog.js +1 -1
- package/es/components/overlays/Dialog/DialogContainer.js +1 -1
- package/es/components/overlays/Dialog/DialogForm.js +1 -1
- package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/es/components/overlays/Dialog/context.js +1 -1
- package/es/components/overlays/Dialog/index.js +1 -1
- package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/es/components/overlays/Modal/Modal.js +1 -1
- package/es/components/overlays/Modal/OpenTransition.js +1 -1
- package/es/components/overlays/Modal/Overlay.js +1 -1
- package/es/components/overlays/Modal/Popover.js +1 -1
- package/es/components/overlays/Modal/Tray.js +1 -1
- package/es/components/overlays/Modal/Underlay.js +1 -1
- package/es/components/overlays/Modal/index.js +1 -1
- package/es/components/overlays/Modal/types.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
- package/es/components/overlays/NewNotifications/Notification.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
- package/es/components/overlays/NewNotifications/index.js +1 -1
- package/es/components/overlays/NewNotifications/types.js +1 -1
- package/es/components/overlays/Notification/Notification.js +1 -1
- package/es/components/overlays/OverlayWrapper.js +1 -1
- package/es/components/overlays/Toasts/Toast.js +1 -1
- package/es/components/overlays/Toasts/index.js +1 -1
- package/es/components/overlays/Toasts/types.js +1 -1
- package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
- package/es/components/overlays/Tooltip/Tooltip.js +1 -1
- package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/es/components/overlays/Tooltip/context.js +1 -1
- package/es/components/overlays/Tooltip/index.js +1 -1
- package/es/components/portal/Portal.js +1 -1
- package/es/components/portal/PortalProvider.js +1 -1
- package/es/components/portal/index.js +1 -1
- package/es/components/portal/types.js +1 -1
- package/es/components/portal/usePortal.js +1 -1
- package/es/components/shared/InvalidIcon.js +1 -1
- package/es/components/shared/ValidIcon.js +1 -1
- package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/es/components/status/LoadingAnimation/index.js +1 -1
- package/es/components/status/Spin/Cube.js +1 -1
- package/es/components/status/Spin/InternalSpinner.js +1 -1
- package/es/components/status/Spin/Spin.js +1 -1
- package/es/components/status/Spin/SpinsContainer.js +1 -1
- package/es/components/status/Spin/index.js +1 -1
- package/es/components/status/Spin/types.js +1 -1
- package/es/components/status/index.js +1 -1
- package/es/data/item-themes.js +1 -1
- package/es/data/themes.js +1 -1
- package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/es/icons/AdjustmentsIcon.js +1 -1
- package/es/icons/AiIcon.js +1 -1
- package/es/icons/AreaChartIcon.js +1 -1
- package/es/icons/BackwardIcon.js +1 -1
- package/es/icons/BarChartIcon.js +1 -1
- package/es/icons/BellFilledIcon.js +1 -1
- package/es/icons/BellIcon.js +1 -1
- package/es/icons/BooleanIcon.js +1 -1
- package/es/icons/CalendarEditIcon.js +1 -1
- package/es/icons/CalendarIcon.js +1 -1
- package/es/icons/CaretDownIcon.js +1 -1
- package/es/icons/CaretUpIcon.js +1 -1
- package/es/icons/ChartAreaStackedIcon.js +1 -1
- package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarGroupedIcon.js +1 -1
- package/es/icons/ChartBarHorizontalIcon.js +1 -1
- package/es/icons/ChartBarLineIcon.js +1 -1
- package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBoxPlot2Icon.js +1 -1
- package/es/icons/ChartBoxPlotIcon.js +1 -1
- package/es/icons/ChartBubbleIcon.js +1 -1
- package/es/icons/ChartDonut2Icon.js +1 -1
- package/es/icons/ChartFunnelIcon.js +1 -1
- package/es/icons/ChartHeatmapIcon.js +1 -1
- package/es/icons/ChartKPIIcon.js +1 -1
- package/es/icons/ChartPie2Icon.js +1 -1
- package/es/icons/ChartScatterIcon.js +1 -1
- package/es/icons/CheckCircleFilledIcon.js +1 -1
- package/es/icons/CheckCircleIcon.js +1 -1
- package/es/icons/CheckIcon.js +1 -1
- package/es/icons/CircleFilledIcon.js +1 -1
- package/es/icons/ClearIcon.js +1 -1
- package/es/icons/CloseCircleFilledIcon.js +1 -1
- package/es/icons/CloseCircleIcon.js +1 -1
- package/es/icons/CloseIcon.js +1 -1
- package/es/icons/CodeIcon.js +1 -1
- package/es/icons/ColumnTotalIcon.js +1 -1
- package/es/icons/CopyIcon.js +1 -1
- package/es/icons/CountIcon.js +1 -1
- package/es/icons/CubeIcon.js +1 -1
- package/es/icons/CubePauseIcon.js +1 -1
- package/es/icons/CubePlayIcon.js +1 -1
- package/es/icons/CurrencyDollarIcon.js +1 -1
- package/es/icons/DangerIcon.js +1 -1
- package/es/icons/DashboardIcon.js +1 -1
- package/es/icons/DatabaseIcon.js +1 -1
- package/es/icons/DecimalDecreaseIcon.js +1 -1
- package/es/icons/DecimalIncreaseIcon.js +1 -1
- package/es/icons/DirectionIcon.js +1 -1
- package/es/icons/DonutIcon.js +1 -1
- package/es/icons/DownIcon.js +1 -1
- package/es/icons/EditIcon.js +1 -1
- package/es/icons/ExclamationCircleFilledIcon.js +1 -1
- package/es/icons/ExclamationCircleIcon.js +1 -1
- package/es/icons/ExclamationIcon.js +1 -1
- package/es/icons/EyeIcon.js +1 -1
- package/es/icons/EyeInvisibleIcon.js +1 -1
- package/es/icons/FilterIcon.js +1 -1
- package/es/icons/FolderFilledIcon.js +1 -1
- package/es/icons/FolderIcon.js +1 -1
- package/es/icons/FolderOpenFilledIcon.js +1 -1
- package/es/icons/FolderOpenIcon.js +1 -1
- package/es/icons/ForwardIcon.js +1 -1
- package/es/icons/HierarchyIcon.js +1 -1
- package/es/icons/HierarchyOpenIcon.js +1 -1
- package/es/icons/Icon.js +1 -1
- package/es/icons/InfoCircleIcon.js +1 -1
- package/es/icons/InfoIcon.js +1 -1
- package/es/icons/KeyIcon.js +1 -1
- package/es/icons/LeftIcon.js +1 -1
- package/es/icons/LineChartIcon.js +1 -1
- package/es/icons/LoadingIcon.js +1 -1
- package/es/icons/LockFilledIcon.js +1 -1
- package/es/icons/LockIcon.js +1 -1
- package/es/icons/MoreIcon.js +1 -1
- package/es/icons/NotAllowedIcon.js +1 -1
- package/es/icons/Number123Icon.js +1 -1
- package/es/icons/NumberIcon.js +1 -1
- package/es/icons/PauseCircleFilledIcon.js +1 -1
- package/es/icons/PauseCircleIcon.js +1 -1
- package/es/icons/PauseIcon.js +1 -1
- package/es/icons/PercentageIcon.js +1 -1
- package/es/icons/PieChartIcon.js +1 -1
- package/es/icons/PlayCircleIcon.js +1 -1
- package/es/icons/PlayIcon.js +1 -1
- package/es/icons/PlusIcon.js +1 -1
- package/es/icons/ProgressBarIcon.js +1 -1
- package/es/icons/ReloadIcon.js +1 -1
- package/es/icons/ReportIcon.js +1 -1
- package/es/icons/ReturnIcon.js +1 -1
- package/es/icons/RightIcon.js +1 -1
- package/es/icons/RowTotalsIcon.js +1 -1
- package/es/icons/SchemeIcon.js +1 -1
- package/es/icons/SearchIcon.js +1 -1
- package/es/icons/SettingsIcon.js +1 -1
- package/es/icons/ShieldFilledIcon.js +1 -1
- package/es/icons/ShieldIcon.js +1 -1
- package/es/icons/SlashIcon.js +1 -1
- package/es/icons/SparklesIcon.js +1 -1
- package/es/icons/SqlIcon.js +1 -1
- package/es/icons/StatsIcon.js +1 -1
- package/es/icons/StopIcon.js +1 -1
- package/es/icons/StringIcon.js +1 -1
- package/es/icons/SubtotalsIcon.js +1 -1
- package/es/icons/SwitchIcon.js +1 -1
- package/es/icons/TableIcon.js +1 -1
- package/es/icons/ThumbsDownIcon.js +1 -1
- package/es/icons/ThumbsUpIcon.js +1 -1
- package/es/icons/ThunderboltCrossedIcon.js +1 -1
- package/es/icons/ThunderboltFilledIcon.js +1 -1
- package/es/icons/ThunderboltIcon.js +1 -1
- package/es/icons/TimeIcon.js +1 -1
- package/es/icons/TrashIcon.js +1 -1
- package/es/icons/UnlockIcon.js +1 -1
- package/es/icons/UpIcon.js +1 -1
- package/es/icons/UserGroupIcon.js +1 -1
- package/es/icons/UserIcon.js +1 -1
- package/es/icons/UserLockIcon.js +1 -1
- package/es/icons/ViewIcon.js +1 -1
- package/es/icons/WarningFilledIcon.js +1 -1
- package/es/icons/WarningIcon.js +1 -1
- package/es/icons/add-new-icon.js +1 -1
- package/es/icons/index.js +1 -1
- package/es/icons/wrap-icon.js +1 -1
- package/es/index.js +1 -1
- package/es/provider.js +1 -1
- package/es/providers/TrackingProvider.js +1 -1
- package/es/providers/navigation.types.js +1 -1
- package/es/providers/navigationAdapter.default.js +1 -1
- package/es/services/notification.js +1 -1
- package/es/shared/form.js +1 -1
- package/es/shared/index.js +1 -1
- package/es/stories/Form.legacy-stories.js +1 -1
- package/es/stories/FormFieldArgs.js +1 -1
- package/es/stories/SimpleLayout.stories.js +1 -1
- package/es/stories/Tasty.stories.js +1 -1
- package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
- package/es/stories/components/DialogFormApp.js +1 -1
- package/es/stories/components/StyledButton.js +1 -1
- package/es/stories/lists/baseProps.js +1 -1
- package/es/tasty/chunks/cacheKey.js +1 -1
- package/es/tasty/chunks/definitions.js +3 -1
- package/es/tasty/chunks/index.js +1 -1
- package/es/tasty/chunks/renderChunk.js +1 -1
- package/es/tasty/debug.js +1 -1
- package/es/tasty/hooks/index.js +1 -1
- package/es/tasty/hooks/useGlobalStyles.js +1 -1
- package/es/tasty/hooks/useStyles.js +1 -1
- package/es/tasty/index.js +2 -2
- package/es/tasty/injector/index.js +1 -1
- package/es/tasty/injector/injector.js +1 -1
- package/es/tasty/injector/sheet-manager.js +1 -1
- package/es/tasty/injector/types.js +1 -1
- package/es/tasty/parser/classify.js +1 -1
- package/es/tasty/parser/const.js +1 -1
- package/es/tasty/parser/lru.js +1 -1
- package/es/tasty/parser/parser.js +1 -1
- package/es/tasty/parser/tokenizer.js +1 -1
- package/es/tasty/parser/types.js +1 -1
- package/es/tasty/pipeline/conditions.js +1 -1
- package/es/tasty/pipeline/exclusive.js +1 -1
- package/es/tasty/pipeline/index.js +1 -1
- package/es/tasty/pipeline/materialize.js +358 -61
- package/es/tasty/pipeline/parseStateKey.js +1 -1
- package/es/tasty/pipeline/simplify.js +1 -1
- package/es/tasty/states/index.js +1 -1
- package/es/tasty/styles/align.js +1 -1
- package/es/tasty/styles/border.js +1 -1
- package/es/tasty/styles/boxShadow.combinator.js +1 -1
- package/es/tasty/styles/color.js +1 -1
- package/es/tasty/styles/createStyle.js +1 -1
- package/es/tasty/styles/dimension.js +1 -1
- package/es/tasty/styles/display.js +1 -1
- package/es/tasty/styles/fade.js +1 -1
- package/es/tasty/styles/fill.js +1 -1
- package/es/tasty/styles/flow.js +1 -1
- package/es/tasty/styles/font.js +1 -1
- package/es/tasty/styles/fontStyle.js +1 -1
- package/es/tasty/styles/gap.js +1 -1
- package/es/tasty/styles/groupRadius.js +1 -1
- package/es/tasty/styles/height.js +1 -1
- package/es/tasty/styles/index.js +1 -1
- package/es/tasty/styles/inset.js +1 -1
- package/es/tasty/styles/justify.js +1 -1
- package/es/tasty/styles/list.js +1 -1
- package/es/tasty/styles/margin.js +1 -1
- package/es/tasty/styles/outline.js +1 -1
- package/es/tasty/styles/padding.js +1 -1
- package/es/tasty/styles/place.js +1 -1
- package/es/tasty/styles/predefined.js +1 -1
- package/es/tasty/styles/preset.js +1 -1
- package/es/tasty/styles/radius.js +1 -1
- package/es/tasty/styles/reset.js +1 -1
- package/es/tasty/styles/scrollbar.js +1 -1
- package/es/tasty/styles/shadow.js +1 -1
- package/es/tasty/styles/styledScrollbar.js +1 -1
- package/es/tasty/styles/transition.js +1 -1
- package/es/tasty/styles/types.js +1 -1
- package/es/tasty/styles/width.js +1 -1
- package/es/tasty/tasty.js +1 -1
- package/es/tasty/types.js +1 -1
- package/es/tasty/utils/cache-wrapper.js +1 -1
- package/es/tasty/utils/case-converter.js +1 -1
- package/es/tasty/utils/colors.js +1 -1
- package/es/tasty/utils/dotize.js +1 -1
- package/es/tasty/utils/filterBaseProps.js +1 -1
- package/es/tasty/utils/getDisplayName.js +1 -1
- package/es/tasty/utils/isDevEnv.js +1 -1
- package/es/tasty/utils/mergeStyles.js +1 -1
- package/es/tasty/utils/modAttrs.js +1 -1
- package/es/tasty/utils/processTokens.js +1 -1
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +1 -1
- package/es/tasty/utils/warnings.js +1 -1
- package/es/tokens.js +1 -1
- package/es/utils/ResizeSensor.js +1 -1
- package/es/utils/index.js +1 -1
- package/es/utils/modules.js +1 -1
- package/es/utils/promise.js +1 -1
- package/es/utils/raf.js +1 -1
- package/es/utils/random.js +1 -1
- package/es/utils/range.js +1 -1
- package/es/utils/react/RenderCache.js +1 -1
- package/es/utils/react/Slots.js +1 -1
- package/es/utils/react/chain.js +1 -1
- package/es/utils/react/forwardRefWithGenerics.js +1 -1
- package/es/utils/react/index.js +1 -1
- package/es/utils/react/interactions.js +1 -1
- package/es/utils/react/isTextOnly.js +1 -1
- package/es/utils/react/mapProps.js +1 -1
- package/es/utils/react/mergeProps.js +1 -1
- package/es/utils/react/nullableValue.js +1 -1
- package/es/utils/react/resolveIcon.js +1 -1
- package/es/utils/react/sharedStore.js +1 -1
- package/es/utils/react/useCombinedRefs.js +1 -1
- package/es/utils/react/useControlledFocusVisible.js +1 -1
- package/es/utils/react/useEventBus.js +1 -1
- package/es/utils/react/useId.js +1 -1
- package/es/utils/react/useIsDarwin.js +1 -1
- package/es/utils/react/useKeySymbols.js +1 -1
- package/es/utils/react/useLayoutEffect.js +1 -1
- package/es/utils/react/useLocalStorage.js +1 -1
- package/es/utils/react/useQaProps.js +1 -1
- package/es/utils/react/useViewportSize.js +1 -1
- package/es/utils/react/wrapNodeIfPlain.js +1 -1
- package/es/utils/tree.js +1 -1
- package/es/utils/warnings.js +1 -1
- package/es/version.js +2 -2
- package/package.json +1 -1
- package/types/tasty/chunks/definitions.d.ts +1 -1
- package/types/tasty/index.d.ts +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license MIT
|
|
3
3
|
* author: Cube Dev Team
|
|
4
|
-
* @cube-dev/ui-kit v0.0.0-canary-
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-186a28f
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -93,34 +93,45 @@ function conditionToCSSInner(node) {
|
|
|
93
93
|
* Convert a state condition to CSS
|
|
94
94
|
*/
|
|
95
95
|
function stateToCSS(state) {
|
|
96
|
-
const variant = emptyVariant();
|
|
97
96
|
switch (state.type) {
|
|
98
|
-
case '
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
97
|
+
case 'media': {
|
|
98
|
+
// Media rules can return multiple variants for negated ranges (OR branches)
|
|
99
|
+
const mediaResults = mediaToCSS(state);
|
|
100
|
+
const variants = mediaResults.map((mediaRule) => {
|
|
101
|
+
const v = emptyVariant();
|
|
102
|
+
v.mediaRules.push(mediaRule);
|
|
103
|
+
return v;
|
|
104
|
+
});
|
|
105
|
+
return { variants, isImpossible: false };
|
|
106
|
+
}
|
|
107
|
+
default: {
|
|
108
|
+
const variant = emptyVariant();
|
|
109
|
+
switch (state.type) {
|
|
110
|
+
case 'modifier':
|
|
111
|
+
variant.modifierSelectors.push(modifierToCSS(state));
|
|
112
|
+
break;
|
|
113
|
+
case 'pseudo':
|
|
114
|
+
variant.modifierSelectors.push(pseudoToCSS(state));
|
|
115
|
+
break;
|
|
116
|
+
case 'container':
|
|
117
|
+
variant.containerRules.push(containerToCSS(state));
|
|
118
|
+
break;
|
|
119
|
+
case 'root':
|
|
120
|
+
variant.rootPrefix = rootToCSS(state);
|
|
121
|
+
break;
|
|
122
|
+
case 'own':
|
|
123
|
+
variant.ownSelectors.push(...ownToCSS(state));
|
|
124
|
+
break;
|
|
125
|
+
case 'starting':
|
|
126
|
+
variant.startingStyle = !state.negated;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
variants: [variant],
|
|
131
|
+
isImpossible: false,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
119
134
|
}
|
|
120
|
-
return {
|
|
121
|
-
variants: [variant],
|
|
122
|
-
isImpossible: false,
|
|
123
|
-
};
|
|
124
135
|
}
|
|
125
136
|
/**
|
|
126
137
|
* Convert modifier condition to CSS selector
|
|
@@ -156,34 +167,44 @@ function pseudoToCSS(state) {
|
|
|
156
167
|
return state.pseudo;
|
|
157
168
|
}
|
|
158
169
|
/**
|
|
159
|
-
* Convert media condition to CSS at-rule
|
|
170
|
+
* Convert media condition to CSS at-rule(s)
|
|
171
|
+
* Returns an array because negated ranges produce OR branches (two separate rules)
|
|
160
172
|
*/
|
|
161
173
|
function mediaToCSS(state) {
|
|
162
|
-
let condition;
|
|
163
174
|
if (state.subtype === 'type') {
|
|
164
|
-
// @media:print → @media print
|
|
165
|
-
|
|
175
|
+
// @media:print → @media print (or @media not print)
|
|
176
|
+
const mediaType = state.mediaType || 'all';
|
|
177
|
+
if (state.negated) {
|
|
178
|
+
return [`@media not ${mediaType}`];
|
|
179
|
+
}
|
|
180
|
+
return [`@media ${mediaType}`];
|
|
166
181
|
}
|
|
167
182
|
else if (state.subtype === 'feature') {
|
|
168
183
|
// @media(prefers-contrast: high) → @media (prefers-contrast: high)
|
|
184
|
+
let condition;
|
|
169
185
|
if (state.featureValue) {
|
|
170
186
|
condition = `(${state.feature}: ${state.featureValue})`;
|
|
171
187
|
}
|
|
172
188
|
else {
|
|
173
189
|
condition = `(${state.feature})`;
|
|
174
190
|
}
|
|
191
|
+
// "not (condition)" is valid for feature queries like prefers-color-scheme
|
|
192
|
+
if (state.negated) {
|
|
193
|
+
return [`@media not ${condition}`];
|
|
194
|
+
}
|
|
195
|
+
return [`@media ${condition}`];
|
|
175
196
|
}
|
|
176
197
|
else {
|
|
177
|
-
// Dimension query
|
|
178
|
-
|
|
198
|
+
// Dimension query - negation is handled by inverting the condition
|
|
199
|
+
// because "not (width < x)" doesn't work reliably in browsers
|
|
200
|
+
const conditions = dimensionToMediaCondition(state.dimension || 'width', state.lowerBound, state.upperBound, state.negated);
|
|
201
|
+
// dimensionToMediaCondition returns array for negated ranges (OR branches)
|
|
202
|
+
return conditions.map((c) => `@media ${c}`);
|
|
179
203
|
}
|
|
180
|
-
if (state.negated) {
|
|
181
|
-
return `@media not ${condition}`;
|
|
182
|
-
}
|
|
183
|
-
return `@media ${condition}`;
|
|
184
204
|
}
|
|
185
205
|
/**
|
|
186
206
|
* Convert container condition to CSS at-rule
|
|
207
|
+
* Container queries support "not (condition)" syntax, so we can use it directly
|
|
187
208
|
*/
|
|
188
209
|
function containerToCSS(state) {
|
|
189
210
|
const name = state.containerName ? `${state.containerName} ` : '';
|
|
@@ -198,8 +219,8 @@ function containerToCSS(state) {
|
|
|
198
219
|
}
|
|
199
220
|
}
|
|
200
221
|
else {
|
|
201
|
-
// Dimension query
|
|
202
|
-
condition =
|
|
222
|
+
// Dimension query - container queries support "not (condition)"
|
|
223
|
+
condition = dimensionToContainerCondition(state.dimension || 'width', state.lowerBound, state.upperBound);
|
|
203
224
|
}
|
|
204
225
|
if (state.negated) {
|
|
205
226
|
return `@container ${name}not ${condition}`;
|
|
@@ -207,9 +228,10 @@ function containerToCSS(state) {
|
|
|
207
228
|
return `@container ${name}${condition}`;
|
|
208
229
|
}
|
|
209
230
|
/**
|
|
210
|
-
* Convert dimension bounds to
|
|
231
|
+
* Convert dimension bounds to container query condition (single string)
|
|
232
|
+
* Container queries support "not (condition)", so no need to invert manually
|
|
211
233
|
*/
|
|
212
|
-
function
|
|
234
|
+
function dimensionToContainerCondition(dimension, lowerBound, upperBound) {
|
|
213
235
|
if (lowerBound && upperBound) {
|
|
214
236
|
const lowerOp = lowerBound.inclusive ? '<=' : '<';
|
|
215
237
|
const upperOp = upperBound.inclusive ? '<=' : '<';
|
|
@@ -225,6 +247,58 @@ function dimensionToMediaCondition(dimension, lowerBound, upperBound) {
|
|
|
225
247
|
}
|
|
226
248
|
return '(width)'; // Fallback
|
|
227
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* Convert dimension bounds to media condition(s)
|
|
252
|
+
* Returns an array because negated ranges produce OR branches (two separate conditions)
|
|
253
|
+
*/
|
|
254
|
+
function dimensionToMediaCondition(dimension, lowerBound, upperBound, negated) {
|
|
255
|
+
if (negated) {
|
|
256
|
+
// Invert the condition manually since "not (width < x)" doesn't work in browsers
|
|
257
|
+
// Single bounds: flip the operator → returns single condition
|
|
258
|
+
// Range: NOT (a <= x < b) = (x < a) OR (x >= b) → returns two conditions (OR branches)
|
|
259
|
+
if (lowerBound && upperBound) {
|
|
260
|
+
// Range query: (lower <= dim < upper) negated is (dim < lower) OR (dim >= upper)
|
|
261
|
+
// Return two separate conditions - these become separate variants
|
|
262
|
+
const lowerOp = lowerBound.inclusive ? '<' : '<=';
|
|
263
|
+
const upperOp = upperBound.inclusive ? '>' : '>=';
|
|
264
|
+
return [
|
|
265
|
+
`(${dimension} ${lowerOp} ${lowerBound.value})`,
|
|
266
|
+
`(${dimension} ${upperOp} ${upperBound.value})`,
|
|
267
|
+
];
|
|
268
|
+
}
|
|
269
|
+
else if (upperBound) {
|
|
270
|
+
// (dim < upper) negated is (dim >= upper)
|
|
271
|
+
// (dim <= upper) negated is (dim > upper)
|
|
272
|
+
const op = upperBound.inclusive ? '>' : '>=';
|
|
273
|
+
return [`(${dimension} ${op} ${upperBound.value})`];
|
|
274
|
+
}
|
|
275
|
+
else if (lowerBound) {
|
|
276
|
+
// (dim >= lower) negated is (dim < lower)
|
|
277
|
+
// (dim > lower) negated is (dim <= lower)
|
|
278
|
+
const op = lowerBound.inclusive ? '<' : '<=';
|
|
279
|
+
return [`(${dimension} ${op} ${lowerBound.value})`];
|
|
280
|
+
}
|
|
281
|
+
// Fallback - should not happen
|
|
282
|
+
return ['(width < 0px)'];
|
|
283
|
+
}
|
|
284
|
+
// Positive condition - always returns single condition
|
|
285
|
+
if (lowerBound && upperBound) {
|
|
286
|
+
const lowerOp = lowerBound.inclusive ? '<=' : '<';
|
|
287
|
+
const upperOp = upperBound.inclusive ? '<=' : '<';
|
|
288
|
+
return [
|
|
289
|
+
`(${lowerBound.value} ${lowerOp} ${dimension} ${upperOp} ${upperBound.value})`,
|
|
290
|
+
];
|
|
291
|
+
}
|
|
292
|
+
else if (upperBound) {
|
|
293
|
+
const op = upperBound.inclusive ? '<=' : '<';
|
|
294
|
+
return [`(${dimension} ${op} ${upperBound.value})`];
|
|
295
|
+
}
|
|
296
|
+
else if (lowerBound) {
|
|
297
|
+
const op = lowerBound.inclusive ? '>=' : '>';
|
|
298
|
+
return [`(${dimension} ${op} ${lowerBound.value})`];
|
|
299
|
+
}
|
|
300
|
+
return ['(width)']; // Fallback
|
|
301
|
+
}
|
|
228
302
|
/**
|
|
229
303
|
* Convert root condition to CSS selector prefix
|
|
230
304
|
*/
|
|
@@ -298,32 +372,164 @@ function mergeVariants(a, b) {
|
|
|
298
372
|
startingStyle: a.startingStyle || b.startingStyle,
|
|
299
373
|
};
|
|
300
374
|
}
|
|
375
|
+
function parseValue(str) {
|
|
376
|
+
const match = str.match(/^(\d+(?:\.\d+)?)(px|em|rem|vh|vw|%)$/i);
|
|
377
|
+
if (match) {
|
|
378
|
+
return { value: parseFloat(match[1]), unit: match[2].toLowerCase() };
|
|
379
|
+
}
|
|
380
|
+
return null;
|
|
381
|
+
}
|
|
382
|
+
function parseDimensionCondition(condition) {
|
|
383
|
+
// Try range syntax first: (600px <= width < 900px)
|
|
384
|
+
const rangeMatch = condition.match(/\(\s*(\d+(?:\.\d+)?(?:px|em|rem|vh|vw|%))\s*(<=?)\s*(width|height)\s*(<=?)\s*(\d+(?:\.\d+)?(?:px|em|rem|vh|vw|%))\s*\)/i);
|
|
385
|
+
if (rangeMatch) {
|
|
386
|
+
const lowerVal = parseValue(rangeMatch[1]);
|
|
387
|
+
const upperVal = parseValue(rangeMatch[5]);
|
|
388
|
+
if (lowerVal && upperVal && lowerVal.unit === upperVal.unit) {
|
|
389
|
+
return {
|
|
390
|
+
dimension: rangeMatch[3].toLowerCase(),
|
|
391
|
+
lowerBound: {
|
|
392
|
+
value: lowerVal.value,
|
|
393
|
+
unit: lowerVal.unit,
|
|
394
|
+
inclusive: rangeMatch[2] === '<=',
|
|
395
|
+
},
|
|
396
|
+
upperBound: {
|
|
397
|
+
value: upperVal.value,
|
|
398
|
+
unit: upperVal.unit,
|
|
399
|
+
inclusive: rangeMatch[4] === '<=',
|
|
400
|
+
},
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
// Try single bound: (width < 600px) or (width >= 900px)
|
|
405
|
+
const singleMatch = condition.match(/\(\s*(width|height)\s*(<=?|>=?)\s*(\d+(?:\.\d+)?(?:px|em|rem|vh|vw|%))\s*\)/i);
|
|
406
|
+
if (singleMatch) {
|
|
407
|
+
const val = parseValue(singleMatch[3]);
|
|
408
|
+
if (val) {
|
|
409
|
+
const op = singleMatch[2];
|
|
410
|
+
if (op === '<' || op === '<=') {
|
|
411
|
+
return {
|
|
412
|
+
dimension: singleMatch[1].toLowerCase(),
|
|
413
|
+
upperBound: {
|
|
414
|
+
value: val.value,
|
|
415
|
+
unit: val.unit,
|
|
416
|
+
inclusive: op === '<=',
|
|
417
|
+
},
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
return {
|
|
422
|
+
dimension: singleMatch[1].toLowerCase(),
|
|
423
|
+
lowerBound: {
|
|
424
|
+
value: val.value,
|
|
425
|
+
unit: val.unit,
|
|
426
|
+
inclusive: op === '>=',
|
|
427
|
+
},
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Check if two dimension conditions are contradictory
|
|
436
|
+
* e.g., "width >= 900px" and "width < 900px" are contradictory
|
|
437
|
+
* Also handles ranges: "(600px <= width < 900px)" and "(width < 600px)" are contradictory
|
|
438
|
+
*/
|
|
439
|
+
function areDimensionContradictions(a, b) {
|
|
440
|
+
if (a.dimension !== b.dimension)
|
|
441
|
+
return false;
|
|
442
|
+
// Get effective bounds - considering both single-bound and ranges
|
|
443
|
+
const aLower = a.lowerBound;
|
|
444
|
+
const aUpper = a.upperBound;
|
|
445
|
+
const bLower = b.lowerBound;
|
|
446
|
+
const bUpper = b.upperBound;
|
|
447
|
+
// Check if units are compatible (only compare if same unit)
|
|
448
|
+
const getUnit = (bound) => bound?.unit;
|
|
449
|
+
const units = [aLower, aUpper, bLower, bUpper]
|
|
450
|
+
.filter(Boolean)
|
|
451
|
+
.map((b) => b.unit);
|
|
452
|
+
if (units.length > 0 && !units.every((u) => u === units[0])) {
|
|
453
|
+
return false; // Different units, can't determine
|
|
454
|
+
}
|
|
455
|
+
// Two conditions contradict if their valid ranges don't overlap
|
|
456
|
+
// A range is [aLowerVal, aUpperVal) or similar
|
|
457
|
+
// Default: -Infinity to +Infinity
|
|
458
|
+
const aLowerVal = aLower?.value ?? -Infinity;
|
|
459
|
+
const aUpperVal = aUpper?.value ?? Infinity;
|
|
460
|
+
const bLowerVal = bLower?.value ?? -Infinity;
|
|
461
|
+
const bUpperVal = bUpper?.value ?? Infinity;
|
|
462
|
+
// For non-inclusive bounds, adjust slightly for comparison
|
|
463
|
+
// But for simplicity, we'll use strict non-overlap check
|
|
464
|
+
// Two ranges [aL, aU) and [bL, bU) don't overlap if:
|
|
465
|
+
// aU <= bL or bU <= aL (considering inclusivity)
|
|
466
|
+
// Check if a's upper bound is at or below b's lower bound
|
|
467
|
+
if (aUpper && bLower && aUpper.value === bLower.value) {
|
|
468
|
+
// Same value - check inclusivity
|
|
469
|
+
// If a.upper is exclusive (<) and b.lower is inclusive (>=), they don't overlap at this point
|
|
470
|
+
// If a.upper is inclusive (<=) and b.lower is exclusive (>), they don't overlap
|
|
471
|
+
if (!aUpper.inclusive && bLower.inclusive) {
|
|
472
|
+
return true; // a < X and X <= b → no overlap at X
|
|
473
|
+
}
|
|
474
|
+
if (aUpper.inclusive && !bLower.inclusive) {
|
|
475
|
+
return true; // a <= X and X > b → no overlap at X
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
if (aUpperVal < bLowerVal)
|
|
479
|
+
return true;
|
|
480
|
+
// Check if b's upper bound is at or below a's lower bound
|
|
481
|
+
if (bUpper && aLower && bUpper.value === aLower.value) {
|
|
482
|
+
if (!bUpper.inclusive && aLower.inclusive) {
|
|
483
|
+
return true;
|
|
484
|
+
}
|
|
485
|
+
if (bUpper.inclusive && !aLower.inclusive) {
|
|
486
|
+
return true;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
if (bUpperVal < aLowerVal)
|
|
490
|
+
return true;
|
|
491
|
+
return false;
|
|
492
|
+
}
|
|
301
493
|
/**
|
|
302
494
|
* Check if a set of media rules contains contradictions
|
|
303
495
|
* e.g., "@media (prefers-color-scheme: light)" and "@media not (prefers-color-scheme: light)"
|
|
496
|
+
* or "@media (width >= 900px)" and "@media (width < 900px)"
|
|
304
497
|
*/
|
|
305
498
|
function hasMediaContradiction(mediaRules) {
|
|
306
|
-
const
|
|
499
|
+
const conditions = new Map();
|
|
500
|
+
const dimensionConditions = [];
|
|
307
501
|
for (const rule of mediaRules) {
|
|
308
|
-
//
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
const posMatch = rule.match(/@media\s
|
|
502
|
+
// Check for negated media rule: @media not (...)
|
|
503
|
+
const notMatch = rule.match(/@media\s+not\s+(\([^)]+\))/i);
|
|
504
|
+
// Check for positive media rule: @media (...)
|
|
505
|
+
const posMatch = rule.match(/@media\s+(\([^)]+\))/i);
|
|
312
506
|
if (notMatch) {
|
|
313
|
-
|
|
314
|
-
const
|
|
507
|
+
// Normalize the condition (remove extra whitespace)
|
|
508
|
+
const key = notMatch[1].replace(/\s+/g, ' ').trim();
|
|
509
|
+
const existing = conditions.get(key);
|
|
315
510
|
if (existing && existing.positive) {
|
|
316
|
-
return true; // Found: (
|
|
511
|
+
return true; // Found: (condition) AND not (condition)
|
|
317
512
|
}
|
|
318
|
-
|
|
513
|
+
conditions.set(key, { positive: false, rule });
|
|
319
514
|
}
|
|
320
515
|
else if (posMatch) {
|
|
321
|
-
|
|
322
|
-
const
|
|
516
|
+
// Normalize the condition (remove extra whitespace)
|
|
517
|
+
const key = posMatch[1].replace(/\s+/g, ' ').trim();
|
|
518
|
+
const existing = conditions.get(key);
|
|
323
519
|
if (existing && !existing.positive) {
|
|
324
|
-
return true; // Found: not (
|
|
520
|
+
return true; // Found: not (condition) AND (condition)
|
|
521
|
+
}
|
|
522
|
+
conditions.set(key, { positive: true, rule });
|
|
523
|
+
// Also check for dimension contradictions
|
|
524
|
+
const dimCond = parseDimensionCondition(posMatch[1]);
|
|
525
|
+
if (dimCond) {
|
|
526
|
+
for (const existing of dimensionConditions) {
|
|
527
|
+
if (areDimensionContradictions(dimCond, existing)) {
|
|
528
|
+
return true;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
dimensionConditions.push(dimCond);
|
|
325
532
|
}
|
|
326
|
-
features.set(key, { positive: true, rule });
|
|
327
533
|
}
|
|
328
534
|
}
|
|
329
535
|
return false;
|
|
@@ -394,12 +600,69 @@ function getVariantKey(v) {
|
|
|
394
600
|
v.startingStyle ? '1' : '0',
|
|
395
601
|
].join('###');
|
|
396
602
|
}
|
|
603
|
+
/**
|
|
604
|
+
* Check if variant A is a superset of variant B (A is more restrictive)
|
|
605
|
+
*
|
|
606
|
+
* If A has all of B's conditions plus more, then A is redundant
|
|
607
|
+
* because B already covers the same cases (and more).
|
|
608
|
+
*
|
|
609
|
+
* Example:
|
|
610
|
+
* A: :not([size=large]):not([size=medium]):not([size=small])
|
|
611
|
+
* B: :not([size=large])
|
|
612
|
+
* A is a superset of B, so A is redundant when B exists.
|
|
613
|
+
*/
|
|
614
|
+
function isVariantSuperset(a, b) {
|
|
615
|
+
// Must have same context (root prefix, at-rules, etc.)
|
|
616
|
+
if (a.rootPrefix !== b.rootPrefix)
|
|
617
|
+
return false;
|
|
618
|
+
if (a.startingStyle !== b.startingStyle)
|
|
619
|
+
return false;
|
|
620
|
+
// Check if a.mediaRules is superset of b.mediaRules
|
|
621
|
+
if (!isArraySuperset(a.mediaRules, b.mediaRules))
|
|
622
|
+
return false;
|
|
623
|
+
// Check if a.containerRules is superset of b.containerRules
|
|
624
|
+
if (!isArraySuperset(a.containerRules, b.containerRules))
|
|
625
|
+
return false;
|
|
626
|
+
// Check if a.modifierSelectors is superset of b.modifierSelectors
|
|
627
|
+
if (!isArraySuperset(a.modifierSelectors, b.modifierSelectors))
|
|
628
|
+
return false;
|
|
629
|
+
// Check if a.ownSelectors is superset of b.ownSelectors
|
|
630
|
+
if (!isArraySuperset(a.ownSelectors, b.ownSelectors))
|
|
631
|
+
return false;
|
|
632
|
+
// A is a superset if it has all of B's items (possibly more)
|
|
633
|
+
// and at least one category has strictly more items
|
|
634
|
+
const aTotal = a.mediaRules.length +
|
|
635
|
+
a.containerRules.length +
|
|
636
|
+
a.modifierSelectors.length +
|
|
637
|
+
a.ownSelectors.length;
|
|
638
|
+
const bTotal = b.mediaRules.length +
|
|
639
|
+
b.containerRules.length +
|
|
640
|
+
b.modifierSelectors.length +
|
|
641
|
+
b.ownSelectors.length;
|
|
642
|
+
return aTotal > bTotal;
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Check if array A contains all elements of array B (superset)
|
|
646
|
+
*/
|
|
647
|
+
function isArraySuperset(a, b) {
|
|
648
|
+
const setA = new Set(a);
|
|
649
|
+
for (const item of b) {
|
|
650
|
+
if (!setA.has(item))
|
|
651
|
+
return false;
|
|
652
|
+
}
|
|
653
|
+
return true;
|
|
654
|
+
}
|
|
397
655
|
/**
|
|
398
656
|
* Deduplicate variants
|
|
657
|
+
*
|
|
658
|
+
* Removes:
|
|
659
|
+
* 1. Exact duplicates (same key)
|
|
660
|
+
* 2. Superset variants (more restrictive selectors that are redundant)
|
|
399
661
|
*/
|
|
400
662
|
function dedupeVariants(variants) {
|
|
663
|
+
// First pass: exact deduplication
|
|
401
664
|
const seen = new Set();
|
|
402
|
-
|
|
665
|
+
let result = [];
|
|
403
666
|
for (const v of variants) {
|
|
404
667
|
const key = getVariantKey(v);
|
|
405
668
|
if (!seen.has(key)) {
|
|
@@ -407,7 +670,34 @@ function dedupeVariants(variants) {
|
|
|
407
670
|
result.push(v);
|
|
408
671
|
}
|
|
409
672
|
}
|
|
410
|
-
|
|
673
|
+
// Second pass: remove supersets (more restrictive variants)
|
|
674
|
+
// Sort by total selector count (fewer selectors = less restrictive = keep)
|
|
675
|
+
result.sort((a, b) => {
|
|
676
|
+
const aCount = a.modifierSelectors.length +
|
|
677
|
+
a.ownSelectors.length +
|
|
678
|
+
a.mediaRules.length +
|
|
679
|
+
a.containerRules.length;
|
|
680
|
+
const bCount = b.modifierSelectors.length +
|
|
681
|
+
b.ownSelectors.length +
|
|
682
|
+
b.mediaRules.length +
|
|
683
|
+
b.containerRules.length;
|
|
684
|
+
return aCount - bCount;
|
|
685
|
+
});
|
|
686
|
+
// Remove variants that are supersets of earlier (less restrictive) variants
|
|
687
|
+
const filtered = [];
|
|
688
|
+
for (const candidate of result) {
|
|
689
|
+
let isRedundant = false;
|
|
690
|
+
for (const kept of filtered) {
|
|
691
|
+
if (isVariantSuperset(candidate, kept)) {
|
|
692
|
+
isRedundant = true;
|
|
693
|
+
break;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
if (!isRedundant) {
|
|
697
|
+
filtered.push(candidate);
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
return filtered;
|
|
411
701
|
}
|
|
412
702
|
/**
|
|
413
703
|
* Combine AND conditions into CSS
|
|
@@ -520,11 +810,18 @@ export function buildAtRulesFromVariant(variant) {
|
|
|
520
810
|
const atRules = [];
|
|
521
811
|
// Add media rules
|
|
522
812
|
if (variant.mediaRules.length > 0) {
|
|
523
|
-
//
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
813
|
+
// Each rule is either:
|
|
814
|
+
// - "@media (condition)" for positive conditions
|
|
815
|
+
// - "@media not (condition)" for negated conditions
|
|
816
|
+
// - "@media not print" for negated media types
|
|
817
|
+
// - "@media (inverted-condition)" for negated dimension queries (already inverted)
|
|
818
|
+
//
|
|
819
|
+
// We strip "@media " and join with " and "
|
|
820
|
+
// This produces valid CSS like:
|
|
821
|
+
// @media not (prefers-color-scheme: dark) and (width > 800px)
|
|
822
|
+
// which means: NOT(dark) AND (width > 800px)
|
|
823
|
+
const conditions = variant.mediaRules.map((r) => r.replace(/^@media\s*/, ''));
|
|
824
|
+
atRules.push(`@media ${conditions.join(' and ')}`);
|
|
528
825
|
}
|
|
529
826
|
// Add container rules
|
|
530
827
|
atRules.push(...variant.containerRules);
|
package/es/tasty/states/index.js
CHANGED
package/es/tasty/styles/align.js
CHANGED
package/es/tasty/styles/color.js
CHANGED
package/es/tasty/styles/fade.js
CHANGED
package/es/tasty/styles/fill.js
CHANGED
package/es/tasty/styles/flow.js
CHANGED
package/es/tasty/styles/font.js
CHANGED