@cube-dev/ui-kit 0.0.0-canary-da1f163 → 0.0.0-canary-7f29fb4
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/GlobalStyles.js +1 -1
- package/es/components/GridProvider.js +1 -1
- package/es/components/HiddenInput.js +1 -1
- package/es/components/Item.js +1 -1
- package/es/components/OpenTrasition.js +1 -1
- package/es/components/Root.js +2 -2
- package/es/components/actions/Action/Action.js +14 -18
- package/es/components/actions/Button/Button.js +2 -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/ItemButton/ItemButton.js +1 -1
- package/es/components/actions/ItemButton/index.js +1 -1
- package/es/components/actions/Menu/Menu.js +1 -1
- package/es/components/actions/Menu/MenuItem.js +3 -8
- 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/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/ItemBase/ItemBase.js +6 -5
- package/es/components/content/ItemBase/index.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 +3 -3
- package/es/components/content/Title.js +3 -3
- 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/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 +3 -2
- 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/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/navigation/Link/Link.js +1 -1
- package/es/components/organisms/FileTabs/FileTabs.js +1 -1
- package/es/components/organisms/Modal/Modal.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/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/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/CopyIcon.js +1 -1
- package/es/icons/CountIcon.js +1 -1
- package/es/icons/CubeIcon.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/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/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/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/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/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/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/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/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/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/Layout.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 -2
- package/es/tasty/debug.js +572 -0
- package/es/tasty/index.js +3 -1
- package/es/tasty/injector/flatten.js +350 -0
- package/es/tasty/injector/index.js +165 -0
- package/es/tasty/injector/injector.js +336 -0
- package/es/tasty/injector/sheet-manager.js +737 -0
- package/es/tasty/injector/types.js +10 -0
- package/es/tasty/parser/classify.js +1 -1
- package/es/tasty/parser/const.js +1 -1
- package/es/tasty/parser/lru.js +38 -2
- 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/providers/BreakpointsProvider.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 +8 -12
- package/es/tasty/styles/createStyle.js +3 -3
- 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 +6 -8
- 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/marginBlock.js +1 -1
- package/es/tasty/styles/marginInline.js +1 -1
- package/es/tasty/styles/outline.js +1 -1
- package/es/tasty/styles/padding.js +1 -1
- package/es/tasty/styles/paddingBlock.js +1 -1
- package/es/tasty/styles/paddingInline.js +1 -1
- package/es/tasty/styles/place.js +1 -1
- package/es/tasty/styles/predefined.js +1 -3
- package/es/tasty/styles/preset.js +1 -1
- package/es/tasty/styles/radius.js +1 -1
- package/es/tasty/styles/reset.js +40 -44
- 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 +92 -19
- 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/getModCombinations.js +1 -1
- package/es/tasty/utils/mergeStyles.js +1 -1
- package/es/tasty/utils/modAttrs.js +1 -1
- package/es/tasty/utils/renderStyles.js +789 -57
- package/es/tasty/utils/responsive.js +1 -1
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +3 -62
- package/es/tasty/utils/warnings.js +1 -1
- package/es/tokens.js +1 -1
- package/es/type-checks.js +1 -1
- package/es/utils/ResizeSensor.js +1 -1
- package/es/utils/modules.js +1 -1
- package/es/utils/promise.js +1 -1
- package/es/utils/random.js +1 -1
- package/es/utils/range.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/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/useQaProps.js +1 -1
- package/es/utils/react/useViewportSize.js +1 -1
- package/es/utils/react/wrapNodeIfPlain.js +1 -1
- package/es/utils/transitions.js +1 -1
- package/es/utils/tree.js +1 -1
- package/es/utils/warnings.js +1 -1
- package/es/version.js +2 -2
- package/package.json +1 -1
- package/types/components/actions/Button/Button.d.ts +1 -0
- package/types/components/actions/Menu/styled.d.ts +699 -702
- package/types/components/actions/use-action.d.ts +1 -1
- package/types/components/content/List/SectionHeading.d.ts +233 -234
- package/types/components/fields/DatePicker/DatePickerElement.d.ts +233 -234
- package/types/tasty/debug.d.ts +133 -0
- package/types/tasty/index.d.ts +2 -0
- package/types/tasty/injector/flatten.d.ts +16 -0
- package/types/tasty/injector/index.d.ts +64 -0
- package/types/tasty/injector/injector.d.ts +82 -0
- package/types/tasty/injector/sheet-manager.d.ts +105 -0
- package/types/tasty/injector/types.d.ts +105 -0
- package/types/tasty/parser/lru.d.ts +5 -1
- package/types/tasty/styles/color.d.ts +3 -1
- package/types/tasty/styles/reset.d.ts +1 -2
- package/types/tasty/types.d.ts +0 -2
- package/types/tasty/utils/renderStyles.d.ts +25 -7
- package/types/tasty/utils/styles.d.ts +1 -9
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-7f29fb4
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Debug utilities for inspecting tasty-generated CSS at runtime
|
|
10
|
+
*/
|
|
11
|
+
import { getCssTextForNode, injector } from './injector';
|
|
12
|
+
/**
|
|
13
|
+
* Pretty-print CSS with proper indentation and formatting
|
|
14
|
+
*/
|
|
15
|
+
function prettifyCSS(css) {
|
|
16
|
+
if (!css || css.trim() === '') {
|
|
17
|
+
return '';
|
|
18
|
+
}
|
|
19
|
+
// First, normalize whitespace but preserve structure
|
|
20
|
+
let formatted = css.replace(/\s+/g, ' ').trim();
|
|
21
|
+
// Add newlines after opening braces
|
|
22
|
+
formatted = formatted.replace(/\s*\{\s*/g, ' {\n');
|
|
23
|
+
// Add newlines after semicolons (but not inside strings or functions)
|
|
24
|
+
formatted = formatted.replace(/;(?![^"']*["'][^"']*$)(?![^()]*\))/g, ';\n');
|
|
25
|
+
// Add newlines before closing braces
|
|
26
|
+
formatted = formatted.replace(/\s*\}\s*/g, '\n}\n');
|
|
27
|
+
// Handle comma-separated selectors (only outside of property values)
|
|
28
|
+
// This regex looks for commas that are:
|
|
29
|
+
// 1. Not inside quotes
|
|
30
|
+
// 2. Not inside parentheses (CSS functions)
|
|
31
|
+
// 3. Not followed by a colon (not in a property value)
|
|
32
|
+
formatted = formatted.replace(/,(?![^"']*["'][^"']*$)(?![^()]*\))(?=.*:.*\{|.*\{)/g, ',\n');
|
|
33
|
+
// Process line by line for proper indentation
|
|
34
|
+
const lines = formatted.split('\n');
|
|
35
|
+
let indentLevel = 0;
|
|
36
|
+
const indentSize = 2;
|
|
37
|
+
const formattedLines = lines.map((line) => {
|
|
38
|
+
const trimmed = line.trim();
|
|
39
|
+
if (!trimmed)
|
|
40
|
+
return '';
|
|
41
|
+
// Handle closing braces - decrease indent first
|
|
42
|
+
if (trimmed === '}') {
|
|
43
|
+
indentLevel = Math.max(0, indentLevel - 1);
|
|
44
|
+
return ' '.repeat(indentLevel * indentSize) + trimmed;
|
|
45
|
+
}
|
|
46
|
+
// Current line with proper indentation
|
|
47
|
+
const indent = ' '.repeat(indentLevel * indentSize);
|
|
48
|
+
let result = indent + trimmed;
|
|
49
|
+
// Handle opening braces - increase indent for next line
|
|
50
|
+
if (trimmed.endsWith('{')) {
|
|
51
|
+
indentLevel++;
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
});
|
|
55
|
+
// Clean up the result and ensure proper spacing
|
|
56
|
+
let result = formattedLines
|
|
57
|
+
.filter((line) => line.trim()) // Remove empty lines
|
|
58
|
+
.join('\n')
|
|
59
|
+
.replace(/\n{3,}/g, '\n\n') // Max 2 consecutive newlines
|
|
60
|
+
.trim();
|
|
61
|
+
// Final cleanup: ensure single spaces in function calls
|
|
62
|
+
result = result.replace(/,\s+/g, ', ');
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Debug utilities for inspecting tasty styles in runtime applications
|
|
67
|
+
*/
|
|
68
|
+
export const tastyDebug = {
|
|
69
|
+
/** Resolve the document where tasty styles live (handles Storybook iframe). */
|
|
70
|
+
_resolveRoot() {
|
|
71
|
+
if (typeof document !== 'undefined') {
|
|
72
|
+
if (document.querySelector('style[data-tasty]'))
|
|
73
|
+
return document;
|
|
74
|
+
const iframe = document.getElementById('storybook-preview-iframe') ||
|
|
75
|
+
document.querySelector('iframe#storybook-preview-iframe') ||
|
|
76
|
+
document.querySelector('iframe');
|
|
77
|
+
if (iframe?.contentDocument?.querySelector?.('style[data-tasty]')) {
|
|
78
|
+
return iframe.contentDocument;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return document;
|
|
82
|
+
},
|
|
83
|
+
/**
|
|
84
|
+
* Get CSS for a specific tasty class (e.g., 't24')
|
|
85
|
+
*/
|
|
86
|
+
getCSSForClass(className) {
|
|
87
|
+
if (!className.match(/^t\d+$/)) {
|
|
88
|
+
console.warn(`"${className}" doesn't look like a tasty class. Expected format: t{number}`);
|
|
89
|
+
}
|
|
90
|
+
const root = this._resolveRoot();
|
|
91
|
+
const css = injector.instance.getCssTextForClasses([className], { root });
|
|
92
|
+
return prettifyCSS(css);
|
|
93
|
+
},
|
|
94
|
+
/**
|
|
95
|
+
* Get CSS for multiple tasty classes
|
|
96
|
+
*/
|
|
97
|
+
getCSSForClasses(classNames) {
|
|
98
|
+
const root = this._resolveRoot();
|
|
99
|
+
const css = injector.instance.getCssTextForClasses(classNames, { root });
|
|
100
|
+
return prettifyCSS(css);
|
|
101
|
+
},
|
|
102
|
+
/**
|
|
103
|
+
* Get detailed batched selector groups that affect a specific tasty class.
|
|
104
|
+
* Includes selector, declarations, at-rules and the full class list in the group.
|
|
105
|
+
*/
|
|
106
|
+
getBatchedGroupsForClass(className) {
|
|
107
|
+
const root = this._resolveRoot();
|
|
108
|
+
const registry = injector.instance['sheetManager'].getRegistry(root);
|
|
109
|
+
if (!registry?.classToBatchedKeys)
|
|
110
|
+
return [];
|
|
111
|
+
const result = [];
|
|
112
|
+
const keys = registry.classToBatchedKeys.get(className);
|
|
113
|
+
if (!keys)
|
|
114
|
+
return [];
|
|
115
|
+
for (const key of keys) {
|
|
116
|
+
const entry = registry.batchedRules.get(key);
|
|
117
|
+
const meta = registry.batchedRuleMeta?.get(key);
|
|
118
|
+
if (!entry && !meta)
|
|
119
|
+
continue;
|
|
120
|
+
// Read CSS text from CSSOM when possible, otherwise from cached text
|
|
121
|
+
let css = '';
|
|
122
|
+
let selector = '';
|
|
123
|
+
let declarations = '';
|
|
124
|
+
let atRules = undefined;
|
|
125
|
+
let classes = [];
|
|
126
|
+
if (entry) {
|
|
127
|
+
const sheet = registry.sheets[entry.sheetIndex];
|
|
128
|
+
const styleSheet = sheet?.sheet?.sheet;
|
|
129
|
+
if (styleSheet) {
|
|
130
|
+
const idx = Math.max(0, Math.min(entry.ruleIndex, styleSheet.cssRules.length - 1));
|
|
131
|
+
const rule = styleSheet.cssRules[idx];
|
|
132
|
+
css = rule?.cssText || entry.currentCssText || '';
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
css = entry.currentCssText || '';
|
|
136
|
+
}
|
|
137
|
+
declarations = entry.declarations || '';
|
|
138
|
+
atRules =
|
|
139
|
+
entry.atRules && entry.atRules.length
|
|
140
|
+
? [...entry.atRules]
|
|
141
|
+
: undefined;
|
|
142
|
+
const classArr = Array.from(entry.classNames || new Set());
|
|
143
|
+
classes = classArr.sort((a, b) => parseInt(a.slice(1)) - parseInt(b.slice(1)));
|
|
144
|
+
}
|
|
145
|
+
else if (meta) {
|
|
146
|
+
// If only meta exists, we still can present declarations/atRules
|
|
147
|
+
css = '';
|
|
148
|
+
declarations = meta.declarations || '';
|
|
149
|
+
atRules =
|
|
150
|
+
meta.atRules && meta.atRules.length
|
|
151
|
+
? [...meta.atRules]
|
|
152
|
+
: undefined;
|
|
153
|
+
classes = [];
|
|
154
|
+
}
|
|
155
|
+
// Try to extract selector from css text if available
|
|
156
|
+
if (!selector && css.includes('{')) {
|
|
157
|
+
selector = css.split('{', 1)[0].trim();
|
|
158
|
+
}
|
|
159
|
+
result.push({ selector, declarations, atRules, classes, css });
|
|
160
|
+
}
|
|
161
|
+
return result;
|
|
162
|
+
},
|
|
163
|
+
/**
|
|
164
|
+
* List classes that participate in at least one batched group
|
|
165
|
+
*/
|
|
166
|
+
findClassesWithBatches() {
|
|
167
|
+
const root = this._resolveRoot();
|
|
168
|
+
const registry = injector.instance['sheetManager'].getRegistry(root);
|
|
169
|
+
if (!registry?.classToBatchedKeys)
|
|
170
|
+
return [];
|
|
171
|
+
const entries = Array.from(registry.classToBatchedKeys.entries());
|
|
172
|
+
return entries
|
|
173
|
+
.filter(([, keys]) => keys && keys.size > 0)
|
|
174
|
+
.map(([cls]) => cls)
|
|
175
|
+
.sort((a, b) => parseInt(a.slice(1)) - parseInt(b.slice(1)));
|
|
176
|
+
},
|
|
177
|
+
/**
|
|
178
|
+
* List a brief summary of existing batched groups
|
|
179
|
+
*/
|
|
180
|
+
listBatchedGroups(limit = 50) {
|
|
181
|
+
const root = this._resolveRoot();
|
|
182
|
+
const registry = injector.instance['sheetManager'].getRegistry(root);
|
|
183
|
+
if (!registry?.batchedRules)
|
|
184
|
+
return [];
|
|
185
|
+
const out = [];
|
|
186
|
+
for (const [key, entry] of registry.batchedRules.entries()) {
|
|
187
|
+
out.push({
|
|
188
|
+
key,
|
|
189
|
+
size: entry.classNames ? entry.classNames.size : 0,
|
|
190
|
+
sampleSelector: (() => {
|
|
191
|
+
const sheet = registry.sheets[entry.sheetIndex];
|
|
192
|
+
const cssText = sheet?.sheet?.sheet?.cssRules?.[entry.ruleIndex]?.cssText ||
|
|
193
|
+
entry.currentCssText ||
|
|
194
|
+
'';
|
|
195
|
+
return cssText.split('{', 1)[0].trim();
|
|
196
|
+
})(),
|
|
197
|
+
});
|
|
198
|
+
if (out.length >= limit)
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
return out.sort((a, b) => b.size - a.size);
|
|
202
|
+
},
|
|
203
|
+
/**
|
|
204
|
+
* Log CSS for a specific tasty class (e.g., 't24') to console
|
|
205
|
+
*/
|
|
206
|
+
logCSSForClass(className) {
|
|
207
|
+
if (!className.match(/^t\d+$/)) {
|
|
208
|
+
console.warn(`"${className}" doesn't look like a tasty class. Expected format: t{number}`);
|
|
209
|
+
}
|
|
210
|
+
const css = this.getCSSForClass(className);
|
|
211
|
+
this.logCSS(css, `CSS for class "${className}"`);
|
|
212
|
+
const groups = this.getBatchedGroupsForClass(className);
|
|
213
|
+
if (groups.length) {
|
|
214
|
+
console.group('🔗 Batched selector groups');
|
|
215
|
+
for (const g of groups) {
|
|
216
|
+
console.log(`${g.selector} { ${g.declarations} } // classes: ${g.classes.join(', ')}`);
|
|
217
|
+
}
|
|
218
|
+
console.groupEnd();
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
/**
|
|
222
|
+
* Log CSS for multiple tasty classes to console
|
|
223
|
+
*/
|
|
224
|
+
logCSSForClasses(classNames) {
|
|
225
|
+
const css = this.getCSSForClasses(classNames);
|
|
226
|
+
const title = `CSS for classes [${classNames.join(', ')}]`;
|
|
227
|
+
this.logCSS(css, title);
|
|
228
|
+
},
|
|
229
|
+
/**
|
|
230
|
+
* Inspect an element by CSS selector and get its tasty CSS
|
|
231
|
+
*/
|
|
232
|
+
inspectElement(selector) {
|
|
233
|
+
const root = this._resolveRoot();
|
|
234
|
+
const element = root.querySelector
|
|
235
|
+
? root.querySelector(selector)
|
|
236
|
+
: document.querySelector(selector);
|
|
237
|
+
if (!element) {
|
|
238
|
+
return `Element not found: ${selector}`;
|
|
239
|
+
}
|
|
240
|
+
console.group(`🎨 Tasty CSS for "${selector}"`);
|
|
241
|
+
console.log('Element:', element);
|
|
242
|
+
const css = getCssTextForNode(element, { root });
|
|
243
|
+
if (css) {
|
|
244
|
+
const prettified = prettifyCSS(css);
|
|
245
|
+
console.log('Generated CSS:\n' + prettified);
|
|
246
|
+
console.groupEnd();
|
|
247
|
+
return prettified;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
console.log('No tasty CSS found for this element');
|
|
251
|
+
console.groupEnd();
|
|
252
|
+
return 'No tasty CSS found';
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
/**
|
|
256
|
+
* Inspect a DOM element directly and get its tasty CSS
|
|
257
|
+
*/
|
|
258
|
+
inspectDOMElement(element) {
|
|
259
|
+
if (!element) {
|
|
260
|
+
return 'Element is null or undefined';
|
|
261
|
+
}
|
|
262
|
+
console.group('🎨 Tasty CSS for element');
|
|
263
|
+
console.log('Element:', element);
|
|
264
|
+
const root = this._resolveRoot();
|
|
265
|
+
const css = getCssTextForNode(element, { root });
|
|
266
|
+
if (css) {
|
|
267
|
+
const prettified = prettifyCSS(css);
|
|
268
|
+
console.log('Generated CSS:\n' + prettified);
|
|
269
|
+
console.groupEnd();
|
|
270
|
+
return prettified;
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
console.log('No tasty CSS found for this element');
|
|
274
|
+
console.groupEnd();
|
|
275
|
+
return 'No tasty CSS found';
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
/**
|
|
279
|
+
* Get all tasty CSS currently injected into the page
|
|
280
|
+
*/
|
|
281
|
+
getAllCSS() {
|
|
282
|
+
const root = this._resolveRoot();
|
|
283
|
+
return injector.instance.getCssText({ root });
|
|
284
|
+
},
|
|
285
|
+
/**
|
|
286
|
+
* Find all tasty classes used in the page (in DOM)
|
|
287
|
+
*/
|
|
288
|
+
findAllTastyClasses() {
|
|
289
|
+
const classes = new Set();
|
|
290
|
+
// Find all elements with class attributes
|
|
291
|
+
const root = this._resolveRoot();
|
|
292
|
+
const elements = root.querySelectorAll
|
|
293
|
+
? root.querySelectorAll('[class]')
|
|
294
|
+
: document.querySelectorAll('[class]');
|
|
295
|
+
elements.forEach((element) => {
|
|
296
|
+
const classList = element.getAttribute('class');
|
|
297
|
+
if (classList) {
|
|
298
|
+
// Extract tasty classes (t + digits)
|
|
299
|
+
const tastyClasses = classList
|
|
300
|
+
.split(/\s+/)
|
|
301
|
+
.filter((cls) => /^t\d+$/.test(cls));
|
|
302
|
+
tastyClasses.forEach((cls) => classes.add(cls));
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
return Array.from(classes).sort((a, b) => {
|
|
306
|
+
// Sort numerically by the number part
|
|
307
|
+
const aNum = parseInt(a.slice(1));
|
|
308
|
+
const bNum = parseInt(b.slice(1));
|
|
309
|
+
return aNum - bNum;
|
|
310
|
+
});
|
|
311
|
+
},
|
|
312
|
+
/**
|
|
313
|
+
* Find all tasty classes that have styles in the stylesheet (used + unused)
|
|
314
|
+
*/
|
|
315
|
+
findAllStyledClasses() {
|
|
316
|
+
const root = this._resolveRoot();
|
|
317
|
+
const registry = injector.instance['sheetManager'].getRegistry(root);
|
|
318
|
+
const classes = new Set();
|
|
319
|
+
// Add all classes from rules map (active + unused)
|
|
320
|
+
if (registry?.rules) {
|
|
321
|
+
for (const className of registry.rules.keys()) {
|
|
322
|
+
if (/^t\d+$/.test(className)) {
|
|
323
|
+
classes.add(className);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return Array.from(classes).sort((a, b) => {
|
|
328
|
+
// Sort numerically by the number part
|
|
329
|
+
const aNum = parseInt(a.slice(1));
|
|
330
|
+
const bNum = parseInt(b.slice(1));
|
|
331
|
+
return aNum - bNum;
|
|
332
|
+
});
|
|
333
|
+
},
|
|
334
|
+
/**
|
|
335
|
+
* Get active vs cached class breakdown
|
|
336
|
+
*/
|
|
337
|
+
getClassUsage() {
|
|
338
|
+
const domClasses = this.findAllTastyClasses();
|
|
339
|
+
const styledClasses = this.findAllStyledClasses();
|
|
340
|
+
const root = this._resolveRoot();
|
|
341
|
+
const registry = injector.instance['sheetManager'].getRegistry(root);
|
|
342
|
+
const activeClasses = domClasses;
|
|
343
|
+
const cachedClasses = styledClasses.filter((cls) => !domClasses.includes(cls));
|
|
344
|
+
// Also check unusedRules registry for classes that are marked as cached (unused but kept for performance)
|
|
345
|
+
if (registry?.unusedRules) {
|
|
346
|
+
for (const className of registry.unusedRules.keys()) {
|
|
347
|
+
if (/^t\d+$/.test(className) && !cachedClasses.includes(className)) {
|
|
348
|
+
cachedClasses.push(className);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return {
|
|
353
|
+
activeClasses: activeClasses.sort((a, b) => {
|
|
354
|
+
const aNum = parseInt(a.slice(1));
|
|
355
|
+
const bNum = parseInt(b.slice(1));
|
|
356
|
+
return aNum - bNum;
|
|
357
|
+
}),
|
|
358
|
+
cachedClasses: cachedClasses.sort((a, b) => {
|
|
359
|
+
const aNum = parseInt(a.slice(1));
|
|
360
|
+
const bNum = parseInt(b.slice(1));
|
|
361
|
+
return aNum - bNum;
|
|
362
|
+
}),
|
|
363
|
+
totalStyledClasses: styledClasses,
|
|
364
|
+
};
|
|
365
|
+
},
|
|
366
|
+
/**
|
|
367
|
+
* Get a comprehensive summary of all tasty styles
|
|
368
|
+
*/
|
|
369
|
+
getSummary() {
|
|
370
|
+
const usage = this.getClassUsage();
|
|
371
|
+
const allCSS = this.getAllCSS();
|
|
372
|
+
const activeCSS = this.getCSSForClasses(usage.activeClasses);
|
|
373
|
+
const cachedCSS = this.getCSSForClasses(usage.cachedClasses);
|
|
374
|
+
const metrics = injector.instance.getMetrics();
|
|
375
|
+
const root = this._resolveRoot();
|
|
376
|
+
const registry = injector.instance['sheetManager'].getRegistry(root);
|
|
377
|
+
const batchedGroupCount = registry?.batchedRules
|
|
378
|
+
? registry.batchedRules.size
|
|
379
|
+
: 0;
|
|
380
|
+
const summary = {
|
|
381
|
+
activeClasses: usage.activeClasses,
|
|
382
|
+
cachedClasses: usage.cachedClasses,
|
|
383
|
+
totalStyledClasses: usage.totalStyledClasses,
|
|
384
|
+
activeCSSSize: activeCSS.length,
|
|
385
|
+
cachedCSSSize: cachedCSS.length,
|
|
386
|
+
totalCSSSize: allCSS.length,
|
|
387
|
+
activeCSS,
|
|
388
|
+
cachedCSS,
|
|
389
|
+
allCSS,
|
|
390
|
+
metrics,
|
|
391
|
+
};
|
|
392
|
+
console.group('🎨 Comprehensive Tasty Debug Summary');
|
|
393
|
+
console.log(`📊 Style Cache Status:`);
|
|
394
|
+
console.log(` • Active classes (in DOM): ${summary.activeClasses.length}`);
|
|
395
|
+
console.log(` • Cached classes (performance cache): ${summary.cachedClasses.length}`);
|
|
396
|
+
console.log(` • Total styled classes: ${summary.totalStyledClasses.length}`);
|
|
397
|
+
console.log(`💾 CSS Size:`);
|
|
398
|
+
console.log(` • Active CSS: ${summary.activeCSSSize} characters`);
|
|
399
|
+
console.log(` • Cached CSS: ${summary.cachedCSSSize} characters`);
|
|
400
|
+
console.log(` • Total CSS: ${summary.totalCSSSize} characters`);
|
|
401
|
+
console.log(`⚡ Performance Metrics:`);
|
|
402
|
+
if (metrics) {
|
|
403
|
+
console.log(` • Cache hits: ${metrics.hits}`);
|
|
404
|
+
console.log(` • Cache misses: ${metrics.misses}`);
|
|
405
|
+
console.log(` • Cached style reuses: ${metrics.unusedHits}`);
|
|
406
|
+
console.log(` • Total insertions: ${metrics.totalInsertions}`);
|
|
407
|
+
console.log(` • Styles cleaned up: ${metrics.stylesCleanedUp}`);
|
|
408
|
+
const hitRate = metrics.hits + metrics.misses > 0
|
|
409
|
+
? (((metrics.hits + metrics.unusedHits) /
|
|
410
|
+
(metrics.hits + metrics.misses)) *
|
|
411
|
+
100).toFixed(1)
|
|
412
|
+
: 0;
|
|
413
|
+
console.log(` • Overall cache hit rate: ${hitRate}%`);
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
console.log(` • Metrics not available (enable with collectMetrics: true)`);
|
|
417
|
+
}
|
|
418
|
+
console.log('🔍 Details:');
|
|
419
|
+
console.log(' • Active classes:', summary.activeClasses);
|
|
420
|
+
console.log(' • Cached classes:', summary.cachedClasses);
|
|
421
|
+
console.log(` • Batched groups: ${batchedGroupCount}`);
|
|
422
|
+
console.log('ℹ️ Note: Cached styles are kept for performance - avoiding expensive DOM operations');
|
|
423
|
+
console.groupEnd();
|
|
424
|
+
return summary;
|
|
425
|
+
},
|
|
426
|
+
/**
|
|
427
|
+
* Helper to log CSS in a readable format
|
|
428
|
+
*/
|
|
429
|
+
logCSS(css, title = 'CSS') {
|
|
430
|
+
if (!css || css.trim() === '') {
|
|
431
|
+
console.log(`${title}: (empty)`);
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
console.group(`🎨 ${title}`);
|
|
435
|
+
const prettified = prettifyCSS(css);
|
|
436
|
+
console.log(prettified);
|
|
437
|
+
console.groupEnd();
|
|
438
|
+
},
|
|
439
|
+
/**
|
|
440
|
+
* Advanced inspection with detailed breakdown and statistics
|
|
441
|
+
*/
|
|
442
|
+
inspect(target) {
|
|
443
|
+
const element = typeof target === 'string' ? document.querySelector(target) : target;
|
|
444
|
+
if (!element) {
|
|
445
|
+
console.error(`Element not found: ${target}`);
|
|
446
|
+
return {
|
|
447
|
+
element: null,
|
|
448
|
+
tastyClasses: [],
|
|
449
|
+
css: '',
|
|
450
|
+
cssSize: 0,
|
|
451
|
+
ruleCount: 0,
|
|
452
|
+
breakdown: {},
|
|
453
|
+
stats: {
|
|
454
|
+
totalClasses: 0,
|
|
455
|
+
totalRules: 0,
|
|
456
|
+
totalCSSSize: 0,
|
|
457
|
+
averageRulesPerClass: 0,
|
|
458
|
+
averageCSSPerClass: 0,
|
|
459
|
+
},
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
// Find tasty classes on this element
|
|
463
|
+
const classList = element.getAttribute('class') || '';
|
|
464
|
+
const tastyClasses = classList
|
|
465
|
+
.split(/\s+/)
|
|
466
|
+
.filter((cls) => /^t\d+$/.test(cls));
|
|
467
|
+
// Get CSS for the entire subtree
|
|
468
|
+
const fullCSS = getCssTextForNode(element, { root: this._resolveRoot() });
|
|
469
|
+
const prettifiedCSS = prettifyCSS(fullCSS);
|
|
470
|
+
// Count CSS rules in the full CSS
|
|
471
|
+
const ruleCount = (fullCSS.match(/\{[^}]*\}/g) || []).length;
|
|
472
|
+
// Get CSS breakdown per class with detailed stats
|
|
473
|
+
const breakdown = {};
|
|
474
|
+
let totalClassRules = 0;
|
|
475
|
+
let totalClassCSSSize = 0;
|
|
476
|
+
tastyClasses.forEach((className) => {
|
|
477
|
+
const classCSS = this.getCSSForClass(className);
|
|
478
|
+
const classRuleCount = (classCSS.match(/\{[^}]*\}/g) || []).length;
|
|
479
|
+
breakdown[className] = {
|
|
480
|
+
css: classCSS,
|
|
481
|
+
cssSize: classCSS.length,
|
|
482
|
+
ruleCount: classRuleCount,
|
|
483
|
+
};
|
|
484
|
+
totalClassRules += classRuleCount;
|
|
485
|
+
totalClassCSSSize += classCSS.length;
|
|
486
|
+
});
|
|
487
|
+
// Calculate statistics
|
|
488
|
+
const stats = {
|
|
489
|
+
totalClasses: tastyClasses.length,
|
|
490
|
+
totalRules: totalClassRules,
|
|
491
|
+
totalCSSSize: totalClassCSSSize,
|
|
492
|
+
averageRulesPerClass: tastyClasses.length > 0 ? totalClassRules / tastyClasses.length : 0,
|
|
493
|
+
averageCSSPerClass: tastyClasses.length > 0 ? totalClassCSSSize / tastyClasses.length : 0,
|
|
494
|
+
};
|
|
495
|
+
const result = {
|
|
496
|
+
element,
|
|
497
|
+
tastyClasses,
|
|
498
|
+
css: prettifiedCSS,
|
|
499
|
+
cssSize: fullCSS.length,
|
|
500
|
+
ruleCount,
|
|
501
|
+
breakdown,
|
|
502
|
+
stats,
|
|
503
|
+
};
|
|
504
|
+
console.group(`🔍 Detailed Tasty Inspection`);
|
|
505
|
+
console.log('Element:', element);
|
|
506
|
+
console.log('📊 Overview:');
|
|
507
|
+
console.log(` • Tasty classes: ${stats.totalClasses}`);
|
|
508
|
+
console.log(` • Total rules applied: ${ruleCount}`);
|
|
509
|
+
console.log(` • Total CSS size: ${fullCSS.length} characters`);
|
|
510
|
+
console.log('🏷️ Classes:', tastyClasses);
|
|
511
|
+
console.log('📈 Statistics:');
|
|
512
|
+
console.log(` • Rules per class (avg): ${stats.averageRulesPerClass.toFixed(1)}`);
|
|
513
|
+
console.log(` • CSS per class (avg): ${stats.averageCSSPerClass.toFixed(0)} chars`);
|
|
514
|
+
console.log('🎨 Element CSS:\n' + prettifiedCSS);
|
|
515
|
+
console.log('🔨 CSS breakdown by class:');
|
|
516
|
+
Object.entries(breakdown).forEach(([className, data]) => {
|
|
517
|
+
console.log(` ${className}: ${data.ruleCount} rules, ${data.cssSize} chars`);
|
|
518
|
+
});
|
|
519
|
+
console.groupEnd();
|
|
520
|
+
return result;
|
|
521
|
+
},
|
|
522
|
+
/**
|
|
523
|
+
* Get CSS for active classes only
|
|
524
|
+
*/
|
|
525
|
+
getActiveCSS() {
|
|
526
|
+
const usage = this.getClassUsage();
|
|
527
|
+
return this.getCSSForClasses(usage.activeClasses);
|
|
528
|
+
},
|
|
529
|
+
/**
|
|
530
|
+
* Get CSS for cached classes only
|
|
531
|
+
*/
|
|
532
|
+
getCachedCSS() {
|
|
533
|
+
const usage = this.getClassUsage();
|
|
534
|
+
return this.getCSSForClasses(usage.cachedClasses);
|
|
535
|
+
},
|
|
536
|
+
};
|
|
537
|
+
/**
|
|
538
|
+
* Check if we're in a development environment at runtime
|
|
539
|
+
* Uses bracket notation to avoid bundler compilation
|
|
540
|
+
*/
|
|
541
|
+
function isDevelopmentEnvironment() {
|
|
542
|
+
if (typeof process === 'undefined')
|
|
543
|
+
return false;
|
|
544
|
+
// Use bracket notation to avoid bundler replacement
|
|
545
|
+
const nodeEnv = process.env?.['NODE_ENV'];
|
|
546
|
+
return nodeEnv === 'development' || nodeEnv !== 'production';
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Install tastyDebug on window object for easy access in browser console
|
|
550
|
+
* Only in non-production environments unless forced
|
|
551
|
+
*/
|
|
552
|
+
export function installGlobalDebug(force = false) {
|
|
553
|
+
if (typeof window !== 'undefined' &&
|
|
554
|
+
(force || isDevelopmentEnvironment()) &&
|
|
555
|
+
window.tastyDebug !== tastyDebug) {
|
|
556
|
+
window.tastyDebug = tastyDebug;
|
|
557
|
+
console.log('🎨 tastyDebug installed on window.\n' +
|
|
558
|
+
'💡 Quick start:\n' +
|
|
559
|
+
' • tastyDebug.getSummary() - comprehensive overview\n' +
|
|
560
|
+
' • tastyDebug.inspect(".my-element") - detailed element inspection\n' +
|
|
561
|
+
' • tastyDebug.findClassGaps() - find missing class numbers\n' +
|
|
562
|
+
' • tastyDebug.getActiveCSS() / getCachedCSS() - get specific CSS');
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Auto-install in development
|
|
567
|
+
*/
|
|
568
|
+
if (typeof window !== 'undefined' && isDevelopmentEnvironment()) {
|
|
569
|
+
installGlobalDebug();
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
|
package/es/tasty/index.js
CHANGED
|
@@ -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-7f29fb4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -18,5 +18,7 @@ export * from './providers/BreakpointsProvider';
|
|
|
18
18
|
export * from './utils/mergeStyles';
|
|
19
19
|
export * from './utils/warnings';
|
|
20
20
|
export * from './utils/getDisplayName';
|
|
21
|
+
export * from './injector';
|
|
22
|
+
export * from './debug';
|
|
21
23
|
|
|
22
24
|
|