@cube-dev/ui-kit 0.98.9 → 0.99.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/es/_internal/hooks/index.js +10 -10
- package/es/_internal/hooks/use-chained-callback.js +2 -2
- package/es/_internal/hooks/use-debounced-value.js +1 -1
- package/es/_internal/hooks/use-deprecation-warning.js +2 -2
- package/es/_internal/hooks/use-effect-once.js +1 -1
- package/es/_internal/hooks/use-event.js +2 -2
- package/es/_internal/hooks/use-is-first-render.js +1 -1
- package/es/_internal/hooks/use-sync-ref.js +2 -2
- package/es/_internal/hooks/use-timer/index.js +3 -3
- package/es/_internal/hooks/use-timer/timer.js +1 -1
- package/es/_internal/hooks/use-timer/use-timer.js +3 -3
- package/es/_internal/hooks/use-update-effect.js +2 -2
- package/es/_internal/hooks/use-warn.js +3 -3
- package/es/_internal/index.js +2 -2
- package/es/components/Block.js +2 -2
- package/es/components/CollectionItem.js +3 -3
- package/es/components/GlobalStyles.js +56 -65
- package/es/components/GridProvider.js +4 -4
- package/es/components/HiddenInput.js +2 -2
- package/es/components/OpenTrasition.js +1 -1
- package/es/components/Root.js +22 -64
- package/es/components/actions/Action/Action.js +3 -3
- package/es/components/actions/Button/Button.js +12 -12
- package/es/components/actions/Button/index.js +2 -2
- package/es/components/actions/ButtonGroup/ButtonGroup.js +4 -4
- package/es/components/actions/CommandMenu/CommandMenu.js +11 -11
- package/es/components/actions/CommandMenu/index.js +2 -2
- package/es/components/actions/CommandMenu/styled.js +2 -2
- package/es/components/actions/ItemAction/ItemAction.js +9 -9
- package/es/components/actions/ItemAction/index.js +2 -2
- package/es/components/actions/ItemActionContext.js +1 -1
- package/es/components/actions/ItemButton/ItemButton.js +9 -9
- package/es/components/actions/ItemButton/index.js +2 -2
- package/es/components/actions/Link/Link.js +2 -2
- package/es/components/actions/Menu/Menu.js +10 -10
- package/es/components/actions/Menu/MenuItem.js +7 -7
- package/es/components/actions/Menu/MenuSection.js +4 -4
- package/es/components/actions/Menu/MenuTrigger.js +6 -6
- package/es/components/actions/Menu/SubMenuTrigger.js +6 -6
- 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 +10 -10
- package/es/components/actions/Menu/styled.js +5 -5
- package/es/components/actions/index.js +13 -13
- package/es/components/actions/use-action.js +7 -7
- package/es/components/actions/use-anchored-menu.js +6 -6
- package/es/components/actions/use-context-menu.js +6 -6
- package/es/components/content/ActiveZone/ActiveZone.js +4 -4
- package/es/components/content/Alert/Alert.js +4 -4
- package/es/components/content/Alert/index.js +2 -2
- package/es/components/content/Alert/types.js +1 -1
- package/es/components/content/Alert/use-alert.js +3 -3
- package/es/components/content/Avatar/Avatar.js +2 -2
- package/es/components/content/Badge/Badge.js +4 -4
- package/es/components/content/Card/Card.js +2 -2
- package/es/components/content/Content.js +3 -3
- package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +8 -8
- package/es/components/content/CopyPasteBlock/index.js +2 -2
- package/es/components/content/CopySnippet/CopySnippet.js +9 -9
- package/es/components/content/CopySnippet/index.js +2 -2
- package/es/components/content/Disclosure/Disclosure.js +6 -6
- package/es/components/content/Disclosure/index.js +2 -2
- package/es/components/content/Divider.js +3 -3
- package/es/components/content/Footer.js +3 -3
- package/es/components/content/Header.js +3 -3
- package/es/components/content/HotKeys/HotKeys.js +5 -5
- package/es/components/content/HotKeys/index.js +2 -2
- package/es/components/content/Item/Item.js +15 -15
- package/es/components/content/Item/index.js +3 -3
- package/es/components/content/ItemBadge/ItemBadge.js +8 -8
- package/es/components/content/ItemBadge/index.js +2 -2
- package/es/components/content/Layout/GridLayout.js +13 -13
- package/es/components/content/Layout/Layout.js +7 -6
- package/es/components/content/Layout/LayoutBlock.js +4 -3
- package/es/components/content/Layout/LayoutCenter.js +3 -3
- package/es/components/content/Layout/LayoutContainer.js +4 -4
- package/es/components/content/Layout/LayoutContent.js +6 -5
- package/es/components/content/Layout/LayoutContext.js +1 -1
- package/es/components/content/Layout/LayoutFlex.js +4 -3
- package/es/components/content/Layout/LayoutFooter.js +4 -3
- package/es/components/content/Layout/LayoutGrid.js +4 -3
- package/es/components/content/Layout/LayoutHeader.js +8 -7
- package/es/components/content/Layout/LayoutPane.js +8 -7
- package/es/components/content/Layout/LayoutPanel.js +10 -9
- package/es/components/content/Layout/LayoutPanelHeader.js +7 -7
- package/es/components/content/Layout/LayoutToolbar.js +4 -3
- package/es/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/es/components/content/Layout/index.js +16 -16
- package/es/components/content/Layout/utils.js +1 -1
- package/es/components/content/List/SectionHeading.js +3 -3
- package/es/components/content/List/index.js +2 -2
- package/es/components/content/Paragraph.js +3 -3
- package/es/components/content/Placeholder/Placeholder.js +2 -2
- package/es/components/content/PrismCode/PrismCode.js +7 -7
- package/es/components/content/PrismCode/prismSetup.js +1 -1
- package/es/components/content/PrismDiffCode/PrismDiffCode.js +2 -2
- package/es/components/content/Result/Result.js +4 -4
- package/es/components/content/Skeleton/Skeleton.js +5 -5
- package/es/components/content/Tag/Tag.js +4 -4
- package/es/components/content/Text.js +3 -3
- package/es/components/content/TextItem/TextItem.js +5 -5
- package/es/components/content/TextItem/index.js +2 -2
- package/es/components/content/Title.js +4 -4
- package/es/components/content/highlightText.js +2 -2
- package/es/components/content/use-auto-tooltip.js +2 -2
- package/es/components/fields/Checkbox/Checkbox.js +12 -12
- package/es/components/fields/Checkbox/CheckboxGroup.js +7 -7
- package/es/components/fields/Checkbox/context.js +1 -1
- package/es/components/fields/Checkbox/index.js +3 -3
- package/es/components/fields/ComboBox/ComboBox.js +18 -18
- package/es/components/fields/ComboBox/index.js +2 -2
- package/es/components/fields/DatePicker/DateInput.js +10 -10
- package/es/components/fields/DatePicker/DateInputBase.js +6 -6
- package/es/components/fields/DatePicker/DatePicker.js +14 -14
- package/es/components/fields/DatePicker/DatePickerButton.js +4 -4
- package/es/components/fields/DatePicker/DatePickerElement.js +3 -3
- package/es/components/fields/DatePicker/DatePickerInput.js +5 -5
- package/es/components/fields/DatePicker/DatePickerSegment.js +2 -2
- package/es/components/fields/DatePicker/DateRangePicker.js +15 -15
- package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +15 -15
- package/es/components/fields/DatePicker/TimeInput.js +9 -9
- package/es/components/fields/DatePicker/index.js +8 -8
- 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 +6 -6
- package/es/components/fields/FilterListBox/FilterListBox.js +10 -10
- package/es/components/fields/FilterListBox/index.js +2 -2
- package/es/components/fields/FilterPicker/FilterPicker.js +14 -14
- package/es/components/fields/FilterPicker/index.js +2 -2
- package/es/components/fields/Input/Input.js +6 -6
- package/es/components/fields/Input/index.js +2 -2
- package/es/components/fields/ListBox/ListBox.js +14 -14
- package/es/components/fields/ListBox/index.js +2 -2
- package/es/components/fields/NumberInput/NumberInput.js +8 -8
- package/es/components/fields/NumberInput/StepButton.js +4 -4
- package/es/components/fields/PasswordInput/PasswordInput.js +8 -8
- package/es/components/fields/Picker/Picker.js +13 -13
- package/es/components/fields/Picker/index.js +2 -2
- package/es/components/fields/RadioGroup/Radio.js +10 -10
- package/es/components/fields/RadioGroup/RadioGroup.js +7 -7
- package/es/components/fields/RadioGroup/context.js +1 -1
- package/es/components/fields/RadioGroup/index.js +3 -3
- package/es/components/fields/SearchInput/SearchInput.js +8 -8
- package/es/components/fields/SearchInput/index.js +2 -2
- package/es/components/fields/Select/Select.js +20 -20
- package/es/components/fields/Select/index.js +2 -2
- package/es/components/fields/Slider/Gradation.js +2 -2
- package/es/components/fields/Slider/Header.js +1 -1
- package/es/components/fields/Slider/RangeSlider.js +5 -5
- package/es/components/fields/Slider/Slider.js +7 -7
- package/es/components/fields/Slider/SliderBase.js +6 -6
- package/es/components/fields/Slider/SliderInput.js +2 -2
- package/es/components/fields/Slider/SliderThumb.js +3 -3
- package/es/components/fields/Slider/SliderTrack.js +2 -2
- package/es/components/fields/Slider/elements.js +2 -2
- package/es/components/fields/Slider/index.js +4 -4
- package/es/components/fields/Slider/types.js +1 -1
- package/es/components/fields/Switch/Switch.js +11 -11
- package/es/components/fields/Switch/index.js +2 -2
- package/es/components/fields/TextArea/TextArea.js +7 -7
- package/es/components/fields/TextArea/index.js +2 -2
- package/es/components/fields/TextInput/TextInput.js +6 -6
- package/es/components/fields/TextInput/TextInputBase.js +9 -9
- package/es/components/fields/TextInput/index.js +3 -3
- package/es/components/fields/TextInputMapper/TextInputMapper.js +14 -14
- package/es/components/fields/TextInputMapper/index.js +2 -2
- package/es/components/fields/index.js +20 -20
- package/es/components/form/FieldWrapper/FieldWrapper.js +9 -9
- package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/es/components/form/FieldWrapper/index.js +4 -4
- package/es/components/form/FieldWrapper/types.js +1 -1
- package/es/components/form/Form/Field.js +6 -6
- package/es/components/form/Form/Form.js +6 -6
- package/es/components/form/Form/ResetButton/ResetButton.js +6 -6
- package/es/components/form/Form/ResetButton/index.js +2 -2
- package/es/components/form/Form/SubmitButton/SubmitButton.js +4 -4
- package/es/components/form/Form/SubmitButton/index.js +2 -2
- package/es/components/form/Form/SubmitError.js +3 -3
- package/es/components/form/Form/index.js +11 -11
- package/es/components/form/Form/types.js +1 -1
- package/es/components/form/Form/use-field/index.js +4 -4
- package/es/components/form/Form/use-field/types.js +1 -1
- package/es/components/form/Form/use-field/use-field-props.js +6 -6
- package/es/components/form/Form/use-field/use-field.js +4 -4
- package/es/components/form/Form/use-form.js +3 -3
- package/es/components/form/Form/validation.js +1 -1
- package/es/components/form/Label.js +3 -3
- package/es/components/form/index.js +5 -5
- package/es/components/form/wrapper.js +3 -3
- package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/es/components/helpers/DisplayTransition/index.js +2 -2
- package/es/components/helpers/IconSwitch/IconSwitch.js +3 -3
- package/es/components/helpers/index.js +3 -3
- package/es/components/layout/Flex.js +2 -2
- package/es/components/layout/Flow.js +2 -2
- package/es/components/layout/Grid.js +2 -2
- package/es/components/layout/Panel.js +2 -2
- package/es/components/layout/Prefix.js +3 -3
- package/es/components/layout/ResizablePanel.js +5 -5
- package/es/components/layout/Space.js +2 -2
- package/es/components/layout/Suffix.js +3 -3
- package/es/components/organisms/FileTabs/FileTabs.js +8 -8
- package/es/components/organisms/StatsCard/StatsCard.js +4 -4
- package/es/components/other/Calendar/Calendar.js +8 -8
- package/es/components/other/Calendar/CalendarCell.js +2 -2
- package/es/components/other/Calendar/CalendarGrid.js +3 -3
- package/es/components/other/Calendar/RangeCalendar.js +8 -8
- package/es/components/other/CloudLogo/CloudLogo.js +3 -3
- package/es/components/overlays/AlertDialog/AlertDialog.js +11 -11
- package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +2 -2
- package/es/components/overlays/AlertDialog/AlertDialogZone.js +4 -4
- package/es/components/overlays/AlertDialog/index.js +4 -4
- package/es/components/overlays/AlertDialog/types.js +1 -1
- package/es/components/overlays/Dialog/Dialog.js +7 -7
- package/es/components/overlays/Dialog/DialogContainer.js +3 -3
- package/es/components/overlays/Dialog/DialogForm.js +8 -8
- package/es/components/overlays/Dialog/DialogTrigger.js +4 -4
- package/es/components/overlays/Dialog/context.js +1 -1
- package/es/components/overlays/Dialog/index.js +6 -6
- package/es/components/overlays/Dialog/use-dialog-container.js +4 -4
- package/es/components/overlays/Modal/Modal.js +5 -5
- package/es/components/overlays/Modal/OpenTransition.js +1 -1
- package/es/components/overlays/Modal/Overlay.js +3 -3
- package/es/components/overlays/Modal/Popover.js +4 -4
- package/es/components/overlays/Modal/Tray.js +6 -6
- package/es/components/overlays/Modal/Underlay.js +2 -2
- package/es/components/overlays/Modal/index.js +7 -7
- package/es/components/overlays/Modal/types.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +5 -5
- package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +7 -7
- package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +36 -34
- package/es/components/overlays/NewNotifications/Bar/index.js +2 -2
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +8 -8
- package/es/components/overlays/NewNotifications/Dialog/index.js +2 -2
- package/es/components/overlays/NewNotifications/Notification.js +4 -4
- package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +5 -5
- package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +4 -4
- package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +4 -4
- package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +20 -4
- package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +3 -3
- package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +4 -4
- package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +12 -12
- package/es/components/overlays/NewNotifications/NotificationView/index.js +3 -3
- 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 +5 -5
- package/es/components/overlays/NewNotifications/NotificationsContext/index.js +3 -3
- package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +2 -2
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +4 -4
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +5 -5
- package/es/components/overlays/NewNotifications/NotificationsList/index.js +2 -2
- package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/index.js +6 -6
- 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 +2 -2
- package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +3 -3
- package/es/components/overlays/NewNotifications/index.js +7 -7
- package/es/components/overlays/NewNotifications/types.js +1 -1
- package/es/components/overlays/Notification/Notification.js +7 -7
- package/es/components/overlays/OverlayWrapper.js +2 -2
- package/es/components/overlays/Toasts/Toast.js +4 -4
- package/es/components/overlays/Toasts/index.js +3 -3
- package/es/components/overlays/Toasts/types.js +1 -1
- package/es/components/overlays/Toasts/use-toasts-api.js +2 -2
- package/es/components/overlays/Tooltip/Tooltip.js +4 -4
- package/es/components/overlays/Tooltip/TooltipProvider.js +3 -3
- package/es/components/overlays/Tooltip/TooltipTrigger.js +6 -6
- package/es/components/overlays/Tooltip/context.js +1 -1
- package/es/components/overlays/Tooltip/index.js +4 -4
- package/es/components/portal/Portal.js +2 -2
- package/es/components/portal/PortalProvider.js +1 -1
- package/es/components/portal/index.js +3 -3
- package/es/components/portal/types.js +1 -1
- package/es/components/portal/usePortal.js +2 -2
- package/es/components/shared/InvalidIcon.js +2 -2
- package/es/components/shared/ValidIcon.js +2 -2
- package/es/components/status/LoadingAnimation/LoadingAnimation.js +58 -114
- package/es/components/status/LoadingAnimation/index.js +2 -2
- package/es/components/status/Spin/Cube.js +95 -179
- package/es/components/status/Spin/InternalSpinner.js +5 -5
- package/es/components/status/Spin/Spin.js +4 -4
- package/es/components/status/Spin/SpinsContainer.js +28 -30
- package/es/components/status/Spin/index.js +2 -2
- package/es/components/status/Spin/types.js +1 -1
- package/es/components/status/index.js +3 -3
- package/es/data/item-themes.js +1 -1
- package/es/data/themes.js +1 -1
- package/es/icons/AdjustmentsHorizontalIcon.js +2 -2
- package/es/icons/AdjustmentsIcon.js +2 -2
- package/es/icons/AiIcon.js +2 -2
- package/es/icons/AreaChartIcon.js +2 -2
- package/es/icons/BackwardIcon.js +2 -2
- package/es/icons/BarChartIcon.js +2 -2
- package/es/icons/BellFilledIcon.js +2 -2
- package/es/icons/BellIcon.js +2 -2
- package/es/icons/BooleanIcon.js +2 -2
- package/es/icons/CalendarEditIcon.js +2 -2
- package/es/icons/CalendarIcon.js +2 -2
- package/es/icons/CaretDownIcon.js +2 -2
- package/es/icons/CaretUpIcon.js +2 -2
- package/es/icons/ChartAreaStackedIcon.js +2 -2
- package/es/icons/ChartAreaStackedPercentageIcon.js +2 -2
- package/es/icons/ChartBarGroupedHorizontalIcon.js +2 -2
- package/es/icons/ChartBarGroupedIcon.js +2 -2
- package/es/icons/ChartBarHorizontalIcon.js +2 -2
- package/es/icons/ChartBarLineIcon.js +2 -2
- package/es/icons/ChartBarStackedHorizontalIcon.js +2 -2
- package/es/icons/ChartBarStackedIcon.js +2 -2
- package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +2 -2
- package/es/icons/ChartBarStackedPercentageIcon.js +2 -2
- package/es/icons/ChartBoxPlot2Icon.js +2 -2
- package/es/icons/ChartBoxPlotIcon.js +2 -2
- package/es/icons/ChartBubbleIcon.js +2 -2
- package/es/icons/ChartDonut2Icon.js +2 -2
- package/es/icons/ChartFunnelIcon.js +2 -2
- package/es/icons/ChartHeatmapIcon.js +2 -2
- package/es/icons/ChartKPIIcon.js +2 -2
- package/es/icons/ChartPie2Icon.js +2 -2
- package/es/icons/ChartScatterIcon.js +2 -2
- package/es/icons/CheckCircleFilledIcon.js +2 -2
- package/es/icons/CheckCircleIcon.js +2 -2
- package/es/icons/CheckIcon.js +2 -2
- package/es/icons/CircleFilledIcon.js +2 -2
- package/es/icons/ClearIcon.js +2 -2
- package/es/icons/CloseCircleFilledIcon.js +2 -2
- package/es/icons/CloseCircleIcon.js +2 -2
- package/es/icons/CloseIcon.js +2 -2
- package/es/icons/CodeIcon.js +2 -2
- package/es/icons/ColumnTotalIcon.js +2 -2
- package/es/icons/CopyIcon.js +2 -2
- package/es/icons/CountIcon.js +2 -2
- package/es/icons/CubeIcon.js +2 -2
- package/es/icons/CubePauseIcon.js +2 -2
- package/es/icons/CubePlayIcon.js +2 -2
- package/es/icons/CurrencyDollarIcon.js +2 -2
- package/es/icons/DangerIcon.js +2 -2
- package/es/icons/DashboardIcon.js +2 -2
- package/es/icons/DatabaseIcon.js +2 -2
- package/es/icons/DecimalDecreaseIcon.js +2 -2
- package/es/icons/DecimalIncreaseIcon.js +2 -2
- package/es/icons/DirectionIcon.js +3 -3
- package/es/icons/DonutIcon.js +2 -2
- package/es/icons/DownIcon.js +2 -2
- package/es/icons/EditIcon.js +2 -2
- package/es/icons/ExclamationCircleFilledIcon.js +2 -2
- package/es/icons/ExclamationCircleIcon.js +2 -2
- package/es/icons/ExclamationIcon.js +2 -2
- package/es/icons/EyeIcon.js +2 -2
- package/es/icons/EyeInvisibleIcon.js +2 -2
- package/es/icons/FilterIcon.js +2 -2
- package/es/icons/FolderFilledIcon.js +2 -2
- package/es/icons/FolderIcon.js +2 -2
- package/es/icons/FolderOpenFilledIcon.js +2 -2
- package/es/icons/FolderOpenIcon.js +2 -2
- package/es/icons/ForwardIcon.js +2 -2
- package/es/icons/HierarchyIcon.js +2 -2
- package/es/icons/HierarchyOpenIcon.js +2 -2
- package/es/icons/Icon.js +2 -2
- package/es/icons/InfoCircleIcon.js +2 -2
- package/es/icons/InfoIcon.js +2 -2
- package/es/icons/KeyIcon.js +2 -2
- package/es/icons/LeftIcon.js +2 -2
- package/es/icons/LineChartIcon.js +2 -2
- package/es/icons/LoadingIcon.js +2 -2
- package/es/icons/LockFilledIcon.js +2 -2
- package/es/icons/LockIcon.js +2 -2
- package/es/icons/MoreIcon.js +2 -2
- package/es/icons/NotAllowedIcon.js +2 -2
- package/es/icons/Number123Icon.js +2 -2
- package/es/icons/NumberIcon.js +2 -2
- package/es/icons/PauseCircleFilledIcon.js +2 -2
- package/es/icons/PauseCircleIcon.js +2 -2
- package/es/icons/PauseIcon.js +2 -2
- package/es/icons/PercentageIcon.js +2 -2
- package/es/icons/PieChartIcon.js +2 -2
- package/es/icons/PlayCircleIcon.js +2 -2
- package/es/icons/PlayIcon.js +2 -2
- package/es/icons/PlusIcon.js +2 -2
- package/es/icons/ProgressBarIcon.js +2 -2
- package/es/icons/ReloadIcon.js +2 -2
- package/es/icons/ReportIcon.js +2 -2
- package/es/icons/ReturnIcon.js +2 -2
- package/es/icons/RightIcon.js +2 -2
- package/es/icons/RowTotalsIcon.js +2 -2
- package/es/icons/SchemeIcon.js +2 -2
- package/es/icons/SearchIcon.js +2 -2
- package/es/icons/SemanticQueryIcon.js +2 -2
- package/es/icons/SettingsIcon.js +2 -2
- package/es/icons/ShieldFilledIcon.js +2 -2
- package/es/icons/ShieldIcon.js +2 -2
- package/es/icons/SlashIcon.js +2 -2
- package/es/icons/SparklesIcon.js +2 -2
- package/es/icons/SqlIcon.js +2 -2
- package/es/icons/StatsIcon.js +2 -2
- package/es/icons/StopIcon.js +2 -2
- package/es/icons/StringIcon.js +2 -2
- package/es/icons/SubtotalsIcon.js +2 -2
- package/es/icons/SwitchIcon.js +2 -2
- package/es/icons/TableIcon.js +2 -2
- package/es/icons/ThumbsDownIcon.js +2 -2
- package/es/icons/ThumbsUpIcon.js +2 -2
- package/es/icons/ThunderboltCrossedIcon.js +2 -2
- package/es/icons/ThunderboltFilledIcon.js +2 -2
- package/es/icons/ThunderboltIcon.js +2 -2
- package/es/icons/TimeIcon.js +2 -2
- package/es/icons/TrashIcon.js +2 -2
- package/es/icons/UnlockIcon.js +2 -2
- package/es/icons/UpIcon.js +2 -2
- package/es/icons/UserGroupIcon.js +2 -2
- package/es/icons/UserIcon.js +2 -2
- package/es/icons/UserLockIcon.js +2 -2
- package/es/icons/ViewIcon.js +2 -2
- package/es/icons/WarningFilledIcon.js +2 -2
- package/es/icons/WarningIcon.js +2 -2
- package/es/icons/index.js +129 -129
- package/es/icons/wrap-icon.js +2 -2
- package/es/index.js +73 -74
- package/es/provider.js +4 -10
- 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 +2 -2
- package/es/shared/form.js +1 -1
- package/es/shared/index.js +2 -2
- package/es/stories/Form.legacy-stories.js +4 -4
- package/es/stories/FormFieldArgs.js +2 -2
- package/es/stories/SimpleLayout.stories.js +2 -2
- package/es/stories/Tasty.stories.js +2 -2
- package/es/stories/components/ConfirmDeletionDialogForm.js +2 -2
- package/es/stories/components/DialogFormApp.js +3 -3
- package/es/stories/components/StyledButton.js +19 -15
- package/es/stories/lists/baseProps.js +2 -2
- package/es/stories/playground/PlaygroundEditor.js +89 -0
- package/es/stories/playground/PlaygroundLayout.js +16 -0
- package/es/stories/playground/PlaygroundOutput.js +92 -0
- package/es/stories/playground/PlaygroundPreview.js +91 -0
- package/es/stories/playground/components/Button.js +45 -0
- package/es/stories/playground/components/Card.js +20 -0
- package/es/stories/playground/components/ScrollProgress.js +17 -0
- package/es/stories/playground/examples.js +158 -0
- package/es/tasty/chunks/cacheKey.js +98 -0
- package/es/tasty/chunks/definitions.js +281 -0
- package/es/tasty/chunks/index.js +12 -0
- package/es/tasty/chunks/renderChunk.js +97 -0
- package/es/tasty/config.js +280 -0
- package/es/tasty/debug.js +195 -9
- package/es/tasty/hooks/index.js +12 -0
- package/es/tasty/hooks/useGlobalStyles.js +67 -0
- package/es/tasty/hooks/useRawCSS.js +40 -0
- package/es/tasty/hooks/useStyles.js +206 -0
- package/es/tasty/index.js +31 -17
- package/es/tasty/injector/index.js +34 -90
- package/es/tasty/injector/injector.js +81 -299
- package/es/tasty/injector/sheet-manager.js +138 -3
- package/es/tasty/injector/types.js +1 -1
- package/es/tasty/keyframes/index.js +301 -0
- package/es/tasty/parser/classify.js +8 -6
- package/es/tasty/parser/const.js +1 -1
- package/es/tasty/parser/lru.js +1 -1
- package/es/tasty/parser/parser.js +18 -5
- package/es/tasty/parser/tokenizer.js +1 -1
- package/es/tasty/parser/types.js +2 -1
- package/es/tasty/pipeline/conditions.js +426 -0
- package/es/tasty/pipeline/exclusive.js +311 -0
- package/es/tasty/pipeline/index.js +543 -0
- package/es/tasty/pipeline/materialize.js +1260 -0
- package/es/tasty/pipeline/parseStateKey.js +592 -0
- package/es/tasty/pipeline/simplify.js +898 -0
- package/es/tasty/plugins/index.js +26 -0
- package/es/tasty/plugins/okhsl-plugin.js +400 -0
- package/es/tasty/plugins/types.js +10 -0
- package/es/tasty/states/index.js +523 -0
- package/es/tasty/static/index.js +47 -0
- package/es/tasty/static/tastyStatic.js +55 -0
- package/es/tasty/static/types.js +34 -0
- package/es/tasty/styles/align.js +1 -1
- package/es/tasty/styles/border.js +2 -2
- package/es/tasty/styles/boxShadow.combinator.js +1 -1
- package/es/tasty/styles/color.js +3 -3
- package/es/tasty/styles/createStyle.js +3 -3
- package/es/tasty/styles/dimension.js +2 -2
- package/es/tasty/styles/display.js +1 -1
- package/es/tasty/styles/fade.js +2 -2
- package/es/tasty/styles/fill.js +11 -21
- 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 +2 -2
- package/es/tasty/styles/groupRadius.js +2 -2
- package/es/tasty/styles/height.js +2 -2
- package/es/tasty/styles/index.js +3 -3
- package/es/tasty/styles/inset.js +2 -2
- package/es/tasty/styles/justify.js +1 -1
- package/es/tasty/styles/list.js +1 -1
- package/es/tasty/styles/margin.js +76 -56
- package/es/tasty/styles/outline.js +2 -2
- package/es/tasty/styles/padding.js +76 -56
- package/es/tasty/styles/place.js +1 -1
- package/es/tasty/styles/predefined.js +28 -27
- package/es/tasty/styles/preset.js +2 -2
- package/es/tasty/styles/radius.js +5 -12
- package/es/tasty/styles/reset.js +3 -7
- package/es/tasty/styles/scrollbar.js +2 -2
- package/es/tasty/styles/shadow.js +2 -2
- package/es/tasty/styles/styledScrollbar.js +1 -1
- package/es/tasty/styles/transition.js +10 -3
- package/es/tasty/styles/types.js +1 -1
- package/es/tasty/styles/width.js +2 -2
- package/es/tasty/tasty.js +81 -122
- 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 +2 -2
- package/es/tasty/utils/modAttrs.js +3 -3
- package/es/tasty/utils/processTokens.js +88 -2
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +255 -22
- package/es/tasty/utils/typography.js +67 -0
- package/es/tasty/utils/warnings.js +1 -1
- package/es/tasty/zero/babel.js +453 -0
- package/es/tasty/zero/css-writer.js +94 -0
- package/es/tasty/zero/extractor.js +222 -0
- package/es/tasty/zero/index.js +28 -0
- package/es/tasty/zero/next.js +102 -0
- package/es/tokens/base.js +64 -0
- package/es/tokens/colors.js +68 -0
- package/es/tokens/index.js +63 -0
- package/es/tokens/layout.js +26 -0
- package/es/tokens/shadows.js +27 -0
- package/es/tokens/sizes.js +42 -0
- package/es/tokens/spacing.js +22 -0
- package/es/tokens/typography.js +237 -0
- package/es/utils/ResizeSensor.js +1 -1
- package/es/utils/index.js +10 -10
- 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 +2 -2
- package/es/utils/react/chain.js +1 -1
- package/es/utils/react/forwardRefWithGenerics.js +1 -1
- package/es/utils/react/index.js +17 -17
- 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 +4 -4
- package/es/utils/react/nullableValue.js +1 -1
- package/es/utils/react/resolveIcon.js +1 -1
- package/es/utils/react/sharedStore.js +2 -2
- package/es/utils/react/useCombinedRefs.js +1 -1
- package/es/utils/react/useControlledFocusVisible.js +2 -2
- package/es/utils/react/useEventBus.js +1 -1
- package/es/utils/react/useId.js +2 -2
- package/es/utils/react/useIsDarwin.js +1 -1
- package/es/utils/react/useKeySymbols.js +2 -2
- package/es/utils/react/useLayoutEffect.js +1 -1
- package/es/utils/react/useLocalStorage.js +2 -2
- 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 +14 -4
- package/types/components/GlobalStyles.d.ts +2 -1
- package/types/components/HiddenInput.d.ts +828 -826
- package/types/components/Root.d.ts +1 -0
- package/types/components/actions/Button/Button.d.ts +1649 -1645
- package/types/components/actions/CommandMenu/styled.d.ts +4140 -4130
- package/types/components/actions/Menu/styled.d.ts +4893 -4883
- package/types/components/actions/use-action.d.ts +1 -1
- package/types/components/content/List/SectionHeading.d.ts +251 -251
- package/types/components/content/Text.d.ts +1487 -1487
- package/types/components/fields/DatePicker/DatePickerElement.d.ts +251 -251
- package/types/components/fields/Select/Select.d.ts +828 -826
- package/types/components/fields/Slider/elements.d.ts +4968 -4956
- package/types/components/status/Spin/Cube.d.ts +1 -1
- package/types/components/status/Spin/SpinsContainer.d.ts +6 -3
- package/types/index.d.ts +1 -4
- package/types/provider.d.ts +1 -2
- package/types/stories/components/StyledButton.d.ts +1 -1
- package/types/stories/playground/PlaygroundEditor.d.ts +6 -0
- package/types/stories/playground/PlaygroundLayout.d.ts +8 -0
- package/types/stories/playground/PlaygroundOutput.d.ts +5 -0
- package/types/stories/playground/PlaygroundPreview.d.ts +6 -0
- package/types/stories/playground/components/Button.d.ts +11 -0
- package/types/stories/playground/components/Card.d.ts +7 -0
- package/types/stories/playground/components/ScrollProgress.d.ts +5 -0
- package/types/stories/playground/examples.d.ts +7 -0
- package/types/tasty/chunks/cacheKey.d.ts +26 -0
- package/types/tasty/chunks/definitions.d.ts +75 -0
- package/types/tasty/chunks/index.d.ts +4 -0
- package/types/tasty/chunks/renderChunk.d.ts +25 -0
- package/types/tasty/config.d.ts +171 -0
- package/types/tasty/debug.d.ts +35 -0
- package/types/tasty/hooks/index.d.ts +4 -0
- package/types/tasty/hooks/useGlobalStyles.d.ts +22 -0
- package/types/tasty/hooks/useRawCSS.d.ts +50 -0
- package/types/tasty/hooks/useStyles.d.ts +35 -0
- package/types/tasty/index.d.ts +14 -4
- package/types/tasty/injector/index.d.ts +30 -19
- package/types/tasty/injector/injector.d.ts +19 -13
- package/types/tasty/injector/sheet-manager.d.ts +25 -1
- package/types/tasty/injector/types.d.ts +23 -2
- package/types/tasty/keyframes/index.d.ts +49 -0
- package/types/tasty/parser/parser.d.ts +4 -0
- package/types/tasty/parser/types.d.ts +1 -0
- package/types/tasty/pipeline/conditions.d.ts +243 -0
- package/types/tasty/pipeline/exclusive.d.ts +103 -0
- package/types/tasty/pipeline/index.d.ts +67 -0
- package/types/tasty/pipeline/materialize.d.ts +162 -0
- package/types/tasty/pipeline/parseStateKey.d.ts +20 -0
- package/types/tasty/pipeline/simplify.d.ts +28 -0
- package/types/tasty/plugins/index.d.ts +17 -0
- package/types/tasty/plugins/okhsl-plugin.d.ts +45 -0
- package/types/tasty/plugins/types.d.ts +34 -0
- package/types/tasty/states/index.d.ts +101 -0
- package/types/tasty/static/index.d.ts +39 -0
- package/types/tasty/static/tastyStatic.d.ts +41 -0
- package/types/tasty/static/types.d.ts +44 -0
- package/types/tasty/styles/fill.d.ts +11 -1
- package/types/tasty/styles/margin.d.ts +3 -1
- package/types/tasty/styles/padding.d.ts +3 -1
- package/types/tasty/styles/radius.d.ts +2 -10
- package/types/tasty/styles/types.d.ts +24 -3
- package/types/tasty/tasty.d.ts +892 -840
- package/types/tasty/utils/styles.d.ts +50 -6
- package/types/tasty/utils/typography.d.ts +32 -0
- package/types/tasty/zero/babel.d.ts +63 -0
- package/types/tasty/zero/css-writer.d.ts +41 -0
- package/types/tasty/zero/extractor.d.ts +40 -0
- package/types/tasty/zero/index.d.ts +18 -0
- package/types/tasty/zero/next.d.ts +57 -0
- package/types/tokens/base.d.ts +8 -0
- package/types/tokens/colors.d.ts +6 -0
- package/types/tokens/index.d.ts +41 -0
- package/types/tokens/layout.d.ts +7 -0
- package/types/tokens/shadows.d.ts +12 -0
- package/types/tokens/sizes.d.ts +25 -0
- package/types/tokens/spacing.d.ts +8 -0
- package/types/tokens/typography.d.ts +30 -0
- package/es/components/navigation/LegacyTabs/LegacyTabs.js +0 -275
- package/es/components/other/Base64Upload/Base64Upload.js +0 -103
- package/es/icons/add-new-icon.js +0 -129
- package/es/tasty/providers/BreakpointsProvider.js +0 -16
- package/es/tasty/utils/getModCombinations.js +0 -38
- package/es/tasty/utils/renderStyles.js +0 -1050
- package/es/tasty/utils/responsive.js +0 -60
- package/es/tokens.js +0 -309
- package/types/components/navigation/LegacyTabs/LegacyTabs.d.ts +0 -43
- package/types/components/other/Base64Upload/Base64Upload.d.ts +0 -5
- package/types/icons/add-new-icon.d.ts +0 -2
- package/types/tasty/providers/BreakpointsProvider.d.ts +0 -8
- package/types/tasty/utils/getModCombinations.d.ts +0 -9
- package/types/tasty/utils/renderStyles.d.ts +0 -41
- package/types/tasty/utils/responsive.d.ts +0 -8
- package/types/tokens.d.ts +0 -221
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.99.1
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { useInsertionEffect, useMemo, useRef } from 'react';
|
|
9
|
+
import { injectRawCSS } from '../injector/index.js';
|
|
10
|
+
// Implementation
|
|
11
|
+
export function useRawCSS(cssOrFactory, depsOrOptions, options) {
|
|
12
|
+
// Detect which overload is being used
|
|
13
|
+
const isFactory = typeof cssOrFactory === 'function';
|
|
14
|
+
// Parse arguments based on overload
|
|
15
|
+
const deps = isFactory && Array.isArray(depsOrOptions) ? depsOrOptions : undefined;
|
|
16
|
+
const opts = isFactory
|
|
17
|
+
? options
|
|
18
|
+
: depsOrOptions;
|
|
19
|
+
// Memoize CSS - for factory functions, use provided deps; for strings, use the string itself
|
|
20
|
+
const css = useMemo(() => isFactory ? cssOrFactory() : cssOrFactory, isFactory ? deps ?? [] : [cssOrFactory]);
|
|
21
|
+
const disposeRef = useRef(null);
|
|
22
|
+
useInsertionEffect(() => {
|
|
23
|
+
// Dispose previous injection if any
|
|
24
|
+
disposeRef.current?.();
|
|
25
|
+
if (!css.trim()) {
|
|
26
|
+
disposeRef.current = null;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
// Inject new CSS
|
|
30
|
+
const { dispose } = injectRawCSS(css, opts);
|
|
31
|
+
disposeRef.current = dispose;
|
|
32
|
+
// Cleanup on unmount or when css changes
|
|
33
|
+
return () => {
|
|
34
|
+
disposeRef.current?.();
|
|
35
|
+
disposeRef.current = null;
|
|
36
|
+
};
|
|
37
|
+
}, [css, opts?.root]);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.99.1
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { useInsertionEffect, useMemo, useRef } from 'react';
|
|
9
|
+
import { categorizeStyleKeys, CHUNK_NAMES, generateChunkCacheKey, renderStylesForChunk, } from '../chunks/index.js';
|
|
10
|
+
import { getGlobalKeyframes, hasGlobalKeyframes } from '../config.js';
|
|
11
|
+
import { allocateClassName, inject, keyframes } from '../injector/index.js';
|
|
12
|
+
import { extractAnimationNamesFromStyles, extractLocalKeyframes, filterUsedKeyframes, hasLocalKeyframes, mergeKeyframes, replaceAnimationNames, } from '../keyframes/index.js';
|
|
13
|
+
import { renderStyles } from '../pipeline/index.js';
|
|
14
|
+
import { stringifyStyles } from '../utils/styles.js';
|
|
15
|
+
/**
|
|
16
|
+
* Check if styles contain @starting-style rules.
|
|
17
|
+
*
|
|
18
|
+
* @starting-style CSS cannot be applied via multiple class names because
|
|
19
|
+
* of cascade - later rules override earlier ones. When @starting is detected,
|
|
20
|
+
* we disable chunking and use a single class name for all styles.
|
|
21
|
+
*/
|
|
22
|
+
function containsStartingStyle(styleKey) {
|
|
23
|
+
return styleKey.includes('@starting');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get keyframes that are actually used in styles.
|
|
27
|
+
* Returns null if no keyframes are used (fast path for zero overhead).
|
|
28
|
+
*
|
|
29
|
+
* Optimization order:
|
|
30
|
+
* 1. Check if any keyframes are defined (local or global) - if not, return null
|
|
31
|
+
* 2. Extract animation names from styles - if none, return null
|
|
32
|
+
* 3. Merge and filter keyframes to only used ones
|
|
33
|
+
*/
|
|
34
|
+
function getUsedKeyframes(styles) {
|
|
35
|
+
// Fast path: no keyframes defined anywhere
|
|
36
|
+
const hasLocal = hasLocalKeyframes(styles);
|
|
37
|
+
const hasGlobal = hasGlobalKeyframes();
|
|
38
|
+
if (!hasLocal && !hasGlobal)
|
|
39
|
+
return null;
|
|
40
|
+
// Extract animation names from styles (not from rendered CSS - faster)
|
|
41
|
+
const usedNames = extractAnimationNamesFromStyles(styles);
|
|
42
|
+
if (usedNames.size === 0)
|
|
43
|
+
return null;
|
|
44
|
+
// Merge local and global keyframes
|
|
45
|
+
const local = hasLocal ? extractLocalKeyframes(styles) : null;
|
|
46
|
+
const global = hasGlobal ? getGlobalKeyframes() : null;
|
|
47
|
+
const allKeyframes = mergeKeyframes(local, global);
|
|
48
|
+
// Filter to only used keyframes
|
|
49
|
+
return filterUsedKeyframes(allKeyframes, usedNames);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Hook to generate CSS classes from Tasty styles.
|
|
53
|
+
* Handles style rendering, className allocation, and CSS injection.
|
|
54
|
+
*
|
|
55
|
+
* Uses chunking to split styles into logical groups for better caching
|
|
56
|
+
* and CSS reuse across components.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```tsx
|
|
60
|
+
* function MyComponent() {
|
|
61
|
+
* const { className } = useStyles({
|
|
62
|
+
* padding: '2x',
|
|
63
|
+
* fill: '#purple',
|
|
64
|
+
* radius: '1r',
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* return <div className={className}>Styled content</div>;
|
|
68
|
+
* }
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export function useStyles(styles) {
|
|
72
|
+
// Array of dispose functions for each chunk
|
|
73
|
+
const disposeRef = useRef([]);
|
|
74
|
+
// Store styles by their stringified key to avoid recomputing when only reference changes
|
|
75
|
+
const stylesRef = useRef({
|
|
76
|
+
key: '',
|
|
77
|
+
styles: undefined,
|
|
78
|
+
});
|
|
79
|
+
// Compute style key - this is a primitive string that captures style content
|
|
80
|
+
const styleKey = useMemo(() => {
|
|
81
|
+
if (!styles || Object.keys(styles).length === 0) {
|
|
82
|
+
return '';
|
|
83
|
+
}
|
|
84
|
+
return stringifyStyles(styles);
|
|
85
|
+
}, [styles]);
|
|
86
|
+
// Update ref when styleKey changes (content actually changed)
|
|
87
|
+
if (stylesRef.current.key !== styleKey) {
|
|
88
|
+
stylesRef.current = { key: styleKey, styles };
|
|
89
|
+
}
|
|
90
|
+
// Process chunks: categorize, generate cache keys, render, and allocate classNames
|
|
91
|
+
// Only depends on styleKey (primitive), not styles object reference
|
|
92
|
+
const processedChunks = useMemo(() => {
|
|
93
|
+
const currentStyles = stylesRef.current.styles;
|
|
94
|
+
if (!styleKey || !currentStyles) {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
// Disable chunking for styles containing @starting-style rules.
|
|
98
|
+
// @starting-style CSS cannot work with multiple class names due to cascade -
|
|
99
|
+
// the rules would override each other instead of combining properly.
|
|
100
|
+
if (containsStartingStyle(styleKey)) {
|
|
101
|
+
const renderResult = renderStyles(currentStyles);
|
|
102
|
+
if (renderResult.rules.length === 0) {
|
|
103
|
+
return [];
|
|
104
|
+
}
|
|
105
|
+
const { className } = allocateClassName(styleKey);
|
|
106
|
+
return [
|
|
107
|
+
{
|
|
108
|
+
name: CHUNK_NAMES.COMBINED,
|
|
109
|
+
styleKeys: Object.keys(currentStyles),
|
|
110
|
+
cacheKey: styleKey,
|
|
111
|
+
renderResult,
|
|
112
|
+
className,
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
// Categorize style keys into chunks
|
|
117
|
+
const chunkMap = categorizeStyleKeys(currentStyles);
|
|
118
|
+
const chunks = [];
|
|
119
|
+
for (const [chunkName, chunkStyleKeys] of chunkMap) {
|
|
120
|
+
// Skip empty chunks
|
|
121
|
+
if (chunkStyleKeys.length === 0) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
// Generate cache key for this chunk
|
|
125
|
+
const cacheKey = generateChunkCacheKey(currentStyles, chunkName, chunkStyleKeys);
|
|
126
|
+
// Render styles for this chunk
|
|
127
|
+
const renderResult = renderStylesForChunk(currentStyles, chunkName, chunkStyleKeys);
|
|
128
|
+
// Skip chunks with no rules
|
|
129
|
+
if (renderResult.rules.length === 0) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
// Allocate className for this chunk (safe in render phase)
|
|
133
|
+
const { className } = allocateClassName(cacheKey);
|
|
134
|
+
chunks.push({
|
|
135
|
+
name: chunkName,
|
|
136
|
+
styleKeys: chunkStyleKeys,
|
|
137
|
+
cacheKey,
|
|
138
|
+
renderResult,
|
|
139
|
+
className,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return chunks;
|
|
143
|
+
}, [styleKey]);
|
|
144
|
+
// Inject styles in insertion effect (avoids render phase side effects)
|
|
145
|
+
useInsertionEffect(() => {
|
|
146
|
+
// Cleanup all previous disposals
|
|
147
|
+
disposeRef.current.forEach((dispose) => dispose?.());
|
|
148
|
+
disposeRef.current = [];
|
|
149
|
+
// Fast path: no chunks to inject
|
|
150
|
+
if (processedChunks.length === 0) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const currentStyles = stylesRef.current.styles;
|
|
154
|
+
// Get keyframes that are actually used (returns null if none - zero overhead)
|
|
155
|
+
const usedKeyframes = currentStyles
|
|
156
|
+
? getUsedKeyframes(currentStyles)
|
|
157
|
+
: null;
|
|
158
|
+
// Inject keyframes and build name map (only if we have keyframes)
|
|
159
|
+
let nameMap = null;
|
|
160
|
+
if (usedKeyframes) {
|
|
161
|
+
nameMap = new Map();
|
|
162
|
+
for (const [name, steps] of Object.entries(usedKeyframes)) {
|
|
163
|
+
const result = keyframes(steps, { name });
|
|
164
|
+
const injectedName = result.toString();
|
|
165
|
+
// Only add to map if name differs (optimization for replacement check)
|
|
166
|
+
if (injectedName !== name) {
|
|
167
|
+
nameMap.set(name, injectedName);
|
|
168
|
+
}
|
|
169
|
+
disposeRef.current.push(result.dispose);
|
|
170
|
+
}
|
|
171
|
+
// Clear map if no replacements needed
|
|
172
|
+
if (nameMap.size === 0) {
|
|
173
|
+
nameMap = null;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Inject each chunk
|
|
177
|
+
for (const chunk of processedChunks) {
|
|
178
|
+
if (chunk.renderResult.rules.length > 0) {
|
|
179
|
+
// Replace animation names only if needed
|
|
180
|
+
const rulesToInject = nameMap
|
|
181
|
+
? chunk.renderResult.rules.map((rule) => ({
|
|
182
|
+
...rule,
|
|
183
|
+
declarations: replaceAnimationNames(rule.declarations, nameMap),
|
|
184
|
+
}))
|
|
185
|
+
: chunk.renderResult.rules;
|
|
186
|
+
const { dispose } = inject(rulesToInject, {
|
|
187
|
+
cacheKey: chunk.cacheKey,
|
|
188
|
+
});
|
|
189
|
+
disposeRef.current.push(dispose);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return () => {
|
|
193
|
+
disposeRef.current.forEach((dispose) => dispose?.());
|
|
194
|
+
disposeRef.current = [];
|
|
195
|
+
};
|
|
196
|
+
}, [processedChunks]);
|
|
197
|
+
// Combine all chunk classNames
|
|
198
|
+
const className = useMemo(() => {
|
|
199
|
+
return processedChunks.map((chunk) => chunk.className).join(' ');
|
|
200
|
+
}, [processedChunks]);
|
|
201
|
+
return {
|
|
202
|
+
className,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
package/es/tasty/index.js
CHANGED
|
@@ -1,25 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license MIT
|
|
3
3
|
* author: Cube Dev Team
|
|
4
|
-
* @cube-dev/ui-kit v0.
|
|
4
|
+
* @cube-dev/ui-kit v0.99.1
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export
|
|
22
|
-
|
|
23
|
-
export
|
|
8
|
+
// Register built-in plugins at module load time
|
|
9
|
+
import { configure } from './config.js';
|
|
10
|
+
import { okhslPlugin } from './plugins/index.js';
|
|
11
|
+
export { tasty, Element } from './tasty.js';
|
|
12
|
+
export { useStyles, useGlobalStyles, useRawCSS } from './hooks/index.js';
|
|
13
|
+
// Configuration API
|
|
14
|
+
export { configure, getConfig, isConfigLocked, hasStylesGenerated, resetConfig, isTestEnvironment, hasGlobalKeyframes, getGlobalKeyframes, } from './config.js';
|
|
15
|
+
// Plugins
|
|
16
|
+
export { okhslPlugin, okhslFunc } from './plugins/index.js';
|
|
17
|
+
configure({
|
|
18
|
+
plugins: [okhslPlugin()],
|
|
19
|
+
});
|
|
20
|
+
// Chunk utilities for advanced use cases
|
|
21
|
+
export { CHUNK_NAMES, STYLE_TO_CHUNK, categorizeStyleKeys } from './chunks/index.js';
|
|
22
|
+
// Advanced state mapping utilities
|
|
23
|
+
export { getGlobalPredefinedStates, setGlobalPredefinedStates } from './states/index.js';
|
|
24
|
+
export * from './utils/filterBaseProps.js';
|
|
25
|
+
export * from './utils/colors.js';
|
|
26
|
+
export * from './utils/styles.js';
|
|
27
|
+
export * from './utils/modAttrs.js';
|
|
28
|
+
export { renderStyles, isSelector } from './pipeline/index.js';
|
|
29
|
+
export * from './utils/dotize.js';
|
|
30
|
+
export * from './styles/list.js';
|
|
31
|
+
export * from './utils/mergeStyles.js';
|
|
32
|
+
export * from './utils/warnings.js';
|
|
33
|
+
export * from './utils/getDisplayName.js';
|
|
34
|
+
export * from './utils/processTokens.js';
|
|
35
|
+
export * from './utils/typography.js';
|
|
36
|
+
export * from './injector/index.js';
|
|
37
|
+
export * from './debug.js';
|
|
24
38
|
|
|
25
39
|
|
|
@@ -1,85 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license MIT
|
|
3
3
|
* author: Cube Dev Team
|
|
4
|
-
* @cube-dev/ui-kit v0.
|
|
4
|
+
* @cube-dev/ui-kit v0.99.1
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
import { StyleInjector } from './injector';
|
|
10
|
-
// Use a more robust global singleton that survives React Strict Mode
|
|
11
|
-
const GLOBAL_INJECTOR_KEY = '__TASTY_GLOBAL_INJECTOR__';
|
|
12
|
-
/**
|
|
13
|
-
* Detect if we're running in a test environment
|
|
14
|
-
*/
|
|
15
|
-
function isTestEnvironment() {
|
|
16
|
-
// Check Node.js environment
|
|
17
|
-
if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
// Check for Jest globals (safely)
|
|
21
|
-
if (typeof global !== 'undefined') {
|
|
22
|
-
const g = global;
|
|
23
|
-
if (g.jest || g.expect || g.describe || g.it) {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
// Check for jsdom environment (common in tests)
|
|
28
|
-
if (typeof window !== 'undefined' &&
|
|
29
|
-
window.navigator?.userAgent?.includes('jsdom')) {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
// Check for other test runners
|
|
33
|
-
if (typeof globalThis !== 'undefined') {
|
|
34
|
-
const gt = globalThis;
|
|
35
|
-
if (gt.vitest || gt.mocha) {
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Create default configuration with optional test environment detection
|
|
43
|
-
*/
|
|
44
|
-
function createDefaultConfig(isTest) {
|
|
45
|
-
return {
|
|
46
|
-
maxRulesPerSheet: 8192, // safer default cap per sheet
|
|
47
|
-
unusedStylesThreshold: 500, // default threshold for bulk cleanup of unused styles
|
|
48
|
-
bulkCleanupDelay: 5000, // default delay before bulk cleanup (ignored if idleCleanup is true)
|
|
49
|
-
idleCleanup: true, // default to using requestIdleCallback instead of setTimeout
|
|
50
|
-
forceTextInjection: isTest ?? false, // auto-enable for test environments
|
|
51
|
-
devMode: isDevEnv(), // enable dev features: performance tracking and debug info
|
|
52
|
-
bulkCleanupBatchRatio: 0.5,
|
|
53
|
-
unusedStylesMinAgeMs: 10000,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Configure the global style injector
|
|
58
|
-
*/
|
|
59
|
-
export function configure(config = {}) {
|
|
60
|
-
const fullConfig = {
|
|
61
|
-
...createDefaultConfig(),
|
|
62
|
-
...config,
|
|
63
|
-
};
|
|
64
|
-
// Store on window to survive React Strict Mode resets
|
|
65
|
-
if (typeof window !== 'undefined') {
|
|
66
|
-
window[GLOBAL_INJECTOR_KEY] = new StyleInjector(fullConfig);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
// Fallback for SSR
|
|
70
|
-
globalThis[GLOBAL_INJECTOR_KEY] = new StyleInjector(fullConfig);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Get or create the global injector instance
|
|
75
|
-
*/
|
|
76
|
-
function getGlobalInjector() {
|
|
77
|
-
const storage = typeof window !== 'undefined' ? window : globalThis;
|
|
78
|
-
if (!storage[GLOBAL_INJECTOR_KEY]) {
|
|
79
|
-
configure();
|
|
80
|
-
}
|
|
81
|
-
return storage[GLOBAL_INJECTOR_KEY];
|
|
82
|
-
}
|
|
8
|
+
import { getConfig, getGlobalInjector, isTestEnvironment, markStylesGenerated, } from '../config.js';
|
|
9
|
+
import { StyleInjector } from './injector.js';
|
|
83
10
|
/**
|
|
84
11
|
* Allocate a className for a cacheKey without injecting styles yet
|
|
85
12
|
*/
|
|
@@ -90,6 +17,8 @@ export function allocateClassName(cacheKey, options) {
|
|
|
90
17
|
* Inject styles and return className with dispose function
|
|
91
18
|
*/
|
|
92
19
|
export function inject(rules, options) {
|
|
20
|
+
// Mark that styles have been generated (prevents configuration changes)
|
|
21
|
+
markStylesGenerated();
|
|
93
22
|
return getGlobalInjector().inject(rules, options);
|
|
94
23
|
}
|
|
95
24
|
/**
|
|
@@ -99,10 +28,30 @@ export function injectGlobal(rules, options) {
|
|
|
99
28
|
return getGlobalInjector().injectGlobal(rules, options);
|
|
100
29
|
}
|
|
101
30
|
/**
|
|
102
|
-
*
|
|
31
|
+
* Inject raw CSS text directly without parsing
|
|
32
|
+
* This is a low-overhead method for injecting raw CSS that doesn't need tasty processing.
|
|
33
|
+
* The CSS is inserted into a separate style element to avoid conflicts with tasty's chunking.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* // Inject raw CSS
|
|
38
|
+
* const { dispose } = injectRawCSS(`
|
|
39
|
+
* body { margin: 0; padding: 0; }
|
|
40
|
+
* .my-class { color: red; }
|
|
41
|
+
* `);
|
|
42
|
+
*
|
|
43
|
+
* // Later, remove the injected CSS
|
|
44
|
+
* dispose();
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export function injectRawCSS(css, options) {
|
|
48
|
+
return getGlobalInjector().injectRawCSS(css, options);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get raw CSS text for SSR
|
|
103
52
|
*/
|
|
104
|
-
function
|
|
105
|
-
return getGlobalInjector().
|
|
53
|
+
export function getRawCSSText(options) {
|
|
54
|
+
return getGlobalInjector().getRawCSSText(options);
|
|
106
55
|
}
|
|
107
56
|
/**
|
|
108
57
|
* Inject keyframes and return object with toString() and dispose()
|
|
@@ -173,21 +122,16 @@ export function destroy(root) {
|
|
|
173
122
|
* Create a new isolated injector instance
|
|
174
123
|
*/
|
|
175
124
|
export function createInjector(config = {}) {
|
|
176
|
-
const
|
|
125
|
+
const defaultConfig = getConfig();
|
|
177
126
|
const fullConfig = {
|
|
178
|
-
...
|
|
127
|
+
...defaultConfig,
|
|
128
|
+
// Auto-enable forceTextInjection in test environments
|
|
129
|
+
forceTextInjection: config.forceTextInjection ?? isTestEnvironment(),
|
|
179
130
|
...config,
|
|
180
131
|
};
|
|
181
132
|
return new StyleInjector(fullConfig);
|
|
182
133
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
* Returns a React component that injects global styles when mounted and cleans up when unmounted
|
|
186
|
-
*/
|
|
187
|
-
export function createGlobalStyle(strings, ...interpolations) {
|
|
188
|
-
return getGlobalInjector().createGlobalStyle(strings, ...interpolations);
|
|
189
|
-
}
|
|
190
|
-
export { StyleInjector } from './injector';
|
|
191
|
-
export { SheetManager } from './sheet-manager';
|
|
134
|
+
export { StyleInjector } from './injector.js';
|
|
135
|
+
export { SheetManager } from './sheet-manager.js';
|
|
192
136
|
|
|
193
137
|
|