@cube-dev/ui-kit 0.0.0-canary-00718fb → 0.0.0-canary-837dfc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/_internal/hooks/index.js +1 -1
- package/es/_internal/hooks/use-chained-callback.js +1 -1
- package/es/_internal/hooks/use-debounced-value.js +1 -1
- package/es/_internal/hooks/use-deprecation-warning.js +1 -1
- package/es/_internal/hooks/use-effect-once.js +1 -1
- package/es/_internal/hooks/use-event.js +1 -1
- package/es/_internal/hooks/use-is-first-render.js +1 -1
- package/es/_internal/hooks/use-sync-ref.js +1 -1
- package/es/_internal/hooks/use-timer/index.js +1 -1
- package/es/_internal/hooks/use-timer/timer.js +1 -1
- package/es/_internal/hooks/use-timer/use-timer.js +1 -1
- package/es/_internal/hooks/use-update-effect.js +1 -1
- package/es/_internal/hooks/use-warn.js +1 -1
- package/es/_internal/index.js +1 -1
- package/es/components/Block.js +1 -1
- package/es/components/CollectionItem.js +1 -1
- package/es/components/GlobalStyles.js +1 -1
- package/es/components/GridProvider.js +1 -1
- package/es/components/HiddenInput.js +1 -1
- package/es/components/OpenTrasition.js +1 -1
- package/es/components/Root.js +1 -1
- package/es/components/actions/Action/Action.js +1 -1
- package/es/components/actions/Button/Button.js +1 -1
- package/es/components/actions/Button/index.js +1 -1
- package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/es/components/actions/CommandMenu/index.js +1 -1
- package/es/components/actions/CommandMenu/styled.js +1 -1
- package/es/components/actions/ItemAction/ItemAction.js +1 -1
- package/es/components/actions/ItemAction/index.js +1 -1
- package/es/components/actions/ItemActionContext.js +1 -1
- package/es/components/actions/ItemButton/ItemButton.js +1 -1
- package/es/components/actions/ItemButton/index.js +1 -1
- package/es/components/actions/Link/Link.js +1 -1
- package/es/components/actions/Menu/Menu.js +1 -1
- package/es/components/actions/Menu/MenuItem.js +1 -1
- package/es/components/actions/Menu/MenuSection.js +1 -1
- package/es/components/actions/Menu/MenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/es/components/actions/Menu/context.js +1 -1
- package/es/components/actions/Menu/index.js +1 -1
- package/es/components/actions/Menu/styled.js +1 -1
- package/es/components/actions/index.js +1 -1
- package/es/components/actions/use-action.js +1 -1
- package/es/components/actions/use-anchored-menu.js +1 -1
- package/es/components/actions/use-context-menu.js +1 -1
- package/es/components/content/ActiveZone/ActiveZone.js +1 -1
- package/es/components/content/Alert/Alert.js +1 -1
- package/es/components/content/Alert/index.js +1 -1
- package/es/components/content/Alert/types.js +1 -1
- package/es/components/content/Alert/use-alert.js +1 -1
- package/es/components/content/Avatar/Avatar.js +1 -1
- package/es/components/content/Badge/Badge.js +1 -1
- package/es/components/content/Card/Card.js +1 -1
- package/es/components/content/Content.js +1 -1
- package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/es/components/content/CopyPasteBlock/index.js +1 -1
- package/es/components/content/CopySnippet/CopySnippet.js +1 -1
- package/es/components/content/CopySnippet/index.js +1 -1
- package/es/components/content/Disclosure/Disclosure.js +1 -1
- package/es/components/content/Disclosure/index.js +1 -1
- package/es/components/content/Divider.js +1 -1
- package/es/components/content/Footer.js +1 -1
- package/es/components/content/Header.js +1 -1
- package/es/components/content/HotKeys/HotKeys.js +1 -1
- package/es/components/content/HotKeys/index.js +1 -1
- package/es/components/content/Item/Item.js +11 -7
- package/es/components/content/Item/index.js +1 -1
- package/es/components/content/ItemBadge/ItemBadge.js +1 -1
- package/es/components/content/ItemBadge/index.js +1 -1
- package/es/components/content/Layout/GridLayout.js +1 -1
- package/es/components/content/Layout/Layout.js +1 -1
- package/es/components/content/Layout/LayoutBlock.js +1 -1
- package/es/components/content/Layout/LayoutCenter.js +1 -1
- package/es/components/content/Layout/LayoutContainer.js +1 -1
- package/es/components/content/Layout/LayoutContent.js +1 -1
- package/es/components/content/Layout/LayoutContext.js +1 -1
- package/es/components/content/Layout/LayoutFlex.js +1 -1
- package/es/components/content/Layout/LayoutFooter.js +1 -1
- package/es/components/content/Layout/LayoutGrid.js +1 -1
- package/es/components/content/Layout/LayoutHeader.js +1 -1
- package/es/components/content/Layout/LayoutPane.js +1 -1
- package/es/components/content/Layout/LayoutPanel.js +1 -1
- package/es/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/es/components/content/Layout/LayoutToolbar.js +1 -1
- package/es/components/content/Layout/hooks/useTinyScrollbar.js +13 -1
- package/es/components/content/Layout/index.js +1 -1
- package/es/components/content/Layout/utils.js +1 -1
- package/es/components/content/List/SectionHeading.js +1 -1
- package/es/components/content/List/index.js +1 -1
- package/es/components/content/Paragraph.js +1 -1
- package/es/components/content/Placeholder/Placeholder.js +1 -1
- package/es/components/content/PrismCode/PrismCode.js +1 -1
- package/es/components/content/PrismCode/prismSetup.js +1 -1
- package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/es/components/content/Result/Result.js +1 -1
- package/es/components/content/Skeleton/Skeleton.js +1 -1
- package/es/components/content/Tag/Tag.js +1 -1
- package/es/components/content/Text.js +1 -1
- package/es/components/content/TextItem/TextItem.js +1 -1
- package/es/components/content/TextItem/index.js +1 -1
- package/es/components/content/Title.js +1 -1
- package/es/components/content/highlightText.js +1 -1
- package/es/components/content/use-auto-tooltip.js +1 -1
- package/es/components/fields/Checkbox/Checkbox.js +1 -1
- package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/es/components/fields/Checkbox/context.js +1 -1
- package/es/components/fields/Checkbox/index.js +1 -1
- package/es/components/fields/ComboBox/ComboBox.js +1 -1
- package/es/components/fields/ComboBox/index.js +1 -1
- package/es/components/fields/DatePicker/DateInput.js +1 -1
- package/es/components/fields/DatePicker/DateInputBase.js +1 -1
- package/es/components/fields/DatePicker/DatePicker.js +1 -1
- package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/es/components/fields/DatePicker/TimeInput.js +1 -1
- package/es/components/fields/DatePicker/index.js +1 -1
- package/es/components/fields/DatePicker/intl.js +1 -1
- package/es/components/fields/DatePicker/parseDate.js +1 -1
- package/es/components/fields/DatePicker/props.js +1 -1
- package/es/components/fields/DatePicker/types.js +1 -1
- package/es/components/fields/DatePicker/utils.js +1 -1
- package/es/components/fields/FileInput/FileInput.js +1 -1
- package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/es/components/fields/FilterListBox/index.js +1 -1
- package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/es/components/fields/FilterPicker/index.js +1 -1
- package/es/components/fields/Input/Input.js +1 -1
- package/es/components/fields/Input/index.js +1 -1
- package/es/components/fields/ListBox/ListBox.js +1 -1
- package/es/components/fields/ListBox/index.js +1 -1
- package/es/components/fields/NumberInput/NumberInput.js +1 -1
- package/es/components/fields/NumberInput/StepButton.js +1 -1
- package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/es/components/fields/Picker/Picker.js +1 -1
- package/es/components/fields/Picker/index.js +1 -1
- package/es/components/fields/RadioGroup/Radio.js +1 -1
- package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/es/components/fields/RadioGroup/context.js +1 -1
- package/es/components/fields/RadioGroup/index.js +1 -1
- package/es/components/fields/SearchInput/SearchInput.js +1 -1
- package/es/components/fields/SearchInput/index.js +1 -1
- package/es/components/fields/Select/Select.js +1 -1
- package/es/components/fields/Select/index.js +1 -1
- package/es/components/fields/Slider/Gradation.js +1 -1
- package/es/components/fields/Slider/Header.js +1 -1
- package/es/components/fields/Slider/RangeSlider.js +1 -1
- package/es/components/fields/Slider/Slider.js +1 -1
- package/es/components/fields/Slider/SliderBase.js +1 -1
- package/es/components/fields/Slider/SliderInput.js +1 -1
- package/es/components/fields/Slider/SliderThumb.js +1 -1
- package/es/components/fields/Slider/SliderTrack.js +1 -1
- package/es/components/fields/Slider/elements.js +1 -1
- package/es/components/fields/Slider/index.js +1 -1
- package/es/components/fields/Slider/types.js +1 -1
- package/es/components/fields/Switch/Switch.js +1 -1
- package/es/components/fields/Switch/index.js +1 -1
- package/es/components/fields/TextArea/TextArea.js +1 -1
- package/es/components/fields/TextArea/index.js +1 -1
- package/es/components/fields/TextInput/TextInput.js +1 -1
- package/es/components/fields/TextInput/TextInputBase.js +1 -1
- package/es/components/fields/TextInput/index.js +1 -1
- package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/es/components/fields/TextInputMapper/index.js +1 -1
- package/es/components/fields/index.js +1 -1
- package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/es/components/form/FieldWrapper/index.js +1 -1
- package/es/components/form/FieldWrapper/types.js +1 -1
- package/es/components/form/Form/Field.js +1 -1
- package/es/components/form/Form/Form.js +1 -1
- package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/es/components/form/Form/ResetButton/index.js +1 -1
- package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/es/components/form/Form/SubmitButton/index.js +1 -1
- package/es/components/form/Form/SubmitError.js +1 -1
- package/es/components/form/Form/index.js +1 -1
- package/es/components/form/Form/types.js +1 -1
- package/es/components/form/Form/use-field/index.js +1 -1
- package/es/components/form/Form/use-field/types.js +1 -1
- package/es/components/form/Form/use-field/use-field-props.js +1 -1
- package/es/components/form/Form/use-field/use-field.js +1 -1
- package/es/components/form/Form/use-form.js +1 -1
- package/es/components/form/Form/validation.js +1 -1
- package/es/components/form/Label.js +1 -1
- package/es/components/form/index.js +1 -1
- package/es/components/form/wrapper.js +1 -1
- package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/es/components/helpers/DisplayTransition/index.js +1 -1
- package/es/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/es/components/helpers/index.js +1 -1
- package/es/components/layout/Flex.js +1 -1
- package/es/components/layout/Flow.js +1 -1
- package/es/components/layout/Grid.js +1 -1
- package/es/components/layout/Panel.js +1 -1
- package/es/components/layout/Prefix.js +1 -1
- package/es/components/layout/ResizablePanel.js +1 -1
- package/es/components/layout/Space.js +1 -1
- package/es/components/layout/Suffix.js +1 -1
- package/es/components/navigation/Tabs/Tabs.js +894 -0
- package/es/components/navigation/Tabs/index.js +10 -0
- package/es/components/navigation/index.js +10 -0
- package/es/components/organisms/FileTabs/FileTabs.js +1 -1
- package/es/components/organisms/StatsCard/StatsCard.js +1 -1
- package/es/components/other/Calendar/Calendar.js +1 -1
- package/es/components/other/Calendar/CalendarCell.js +1 -1
- package/es/components/other/Calendar/CalendarGrid.js +1 -1
- package/es/components/other/Calendar/RangeCalendar.js +1 -1
- package/es/components/other/CloudLogo/CloudLogo.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/es/components/overlays/AlertDialog/index.js +1 -1
- package/es/components/overlays/AlertDialog/types.js +1 -1
- package/es/components/overlays/Dialog/Dialog.js +1 -1
- package/es/components/overlays/Dialog/DialogContainer.js +1 -1
- package/es/components/overlays/Dialog/DialogForm.js +1 -1
- package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/es/components/overlays/Dialog/context.js +1 -1
- package/es/components/overlays/Dialog/index.js +1 -1
- package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/es/components/overlays/Modal/Modal.js +1 -1
- package/es/components/overlays/Modal/OpenTransition.js +1 -1
- package/es/components/overlays/Modal/Overlay.js +1 -1
- package/es/components/overlays/Modal/Popover.js +1 -1
- package/es/components/overlays/Modal/Tray.js +1 -1
- package/es/components/overlays/Modal/Underlay.js +1 -1
- package/es/components/overlays/Modal/index.js +1 -1
- package/es/components/overlays/Modal/types.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
- package/es/components/overlays/NewNotifications/Notification.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
- package/es/components/overlays/NewNotifications/index.js +1 -1
- package/es/components/overlays/NewNotifications/types.js +1 -1
- package/es/components/overlays/Notification/Notification.js +1 -1
- package/es/components/overlays/OverlayWrapper.js +1 -1
- package/es/components/overlays/Toasts/Toast.js +1 -1
- package/es/components/overlays/Toasts/index.js +1 -1
- package/es/components/overlays/Toasts/types.js +1 -1
- package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
- package/es/components/overlays/Tooltip/Tooltip.js +1 -1
- package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/es/components/overlays/Tooltip/context.js +1 -1
- package/es/components/overlays/Tooltip/index.js +1 -1
- package/es/components/portal/Portal.js +1 -1
- package/es/components/portal/PortalProvider.js +1 -1
- package/es/components/portal/index.js +1 -1
- package/es/components/portal/types.js +1 -1
- package/es/components/portal/usePortal.js +1 -1
- package/es/components/shared/InvalidIcon.js +1 -1
- package/es/components/shared/ValidIcon.js +1 -1
- package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/es/components/status/LoadingAnimation/index.js +1 -1
- package/es/components/status/Spin/Cube.js +1 -1
- package/es/components/status/Spin/InternalSpinner.js +1 -1
- package/es/components/status/Spin/Spin.js +1 -1
- package/es/components/status/Spin/SpinsContainer.js +1 -1
- package/es/components/status/Spin/index.js +1 -1
- package/es/components/status/Spin/types.js +1 -1
- package/es/components/status/index.js +1 -1
- package/es/data/item-themes.js +1 -1
- package/es/data/themes.js +1 -1
- package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/es/icons/AdjustmentsIcon.js +1 -1
- package/es/icons/AiIcon.js +1 -1
- package/es/icons/AreaChartIcon.js +1 -1
- package/es/icons/BackwardIcon.js +1 -1
- package/es/icons/BarChartIcon.js +1 -1
- package/es/icons/BellFilledIcon.js +1 -1
- package/es/icons/BellIcon.js +1 -1
- package/es/icons/BooleanIcon.js +1 -1
- package/es/icons/CalendarEditIcon.js +1 -1
- package/es/icons/CalendarIcon.js +1 -1
- package/es/icons/CaretDownIcon.js +1 -1
- package/es/icons/CaretUpIcon.js +1 -1
- package/es/icons/ChartAreaStackedIcon.js +1 -1
- package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarGroupedIcon.js +1 -1
- package/es/icons/ChartBarHorizontalIcon.js +1 -1
- package/es/icons/ChartBarLineIcon.js +1 -1
- package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBoxPlot2Icon.js +1 -1
- package/es/icons/ChartBoxPlotIcon.js +1 -1
- package/es/icons/ChartBubbleIcon.js +1 -1
- package/es/icons/ChartDonut2Icon.js +1 -1
- package/es/icons/ChartFunnelIcon.js +1 -1
- package/es/icons/ChartHeatmapIcon.js +1 -1
- package/es/icons/ChartKPIIcon.js +1 -1
- package/es/icons/ChartPie2Icon.js +1 -1
- package/es/icons/ChartScatterIcon.js +1 -1
- package/es/icons/CheckCircleFilledIcon.js +1 -1
- package/es/icons/CheckCircleIcon.js +1 -1
- package/es/icons/CheckIcon.js +1 -1
- package/es/icons/CircleFilledIcon.js +1 -1
- package/es/icons/ClearIcon.js +1 -1
- package/es/icons/CloseCircleFilledIcon.js +1 -1
- package/es/icons/CloseCircleIcon.js +1 -1
- package/es/icons/CloseIcon.js +1 -1
- package/es/icons/CodeIcon.js +1 -1
- package/es/icons/ColumnTotalIcon.js +1 -1
- package/es/icons/CopyIcon.js +1 -1
- package/es/icons/CountIcon.js +1 -1
- package/es/icons/CubeIcon.js +1 -1
- package/es/icons/CubePauseIcon.js +1 -1
- package/es/icons/CubePlayIcon.js +1 -1
- package/es/icons/CurrencyDollarIcon.js +1 -1
- package/es/icons/DangerIcon.js +1 -1
- package/es/icons/DashboardIcon.js +1 -1
- package/es/icons/DatabaseIcon.js +1 -1
- package/es/icons/DecimalDecreaseIcon.js +1 -1
- package/es/icons/DecimalIncreaseIcon.js +1 -1
- package/es/icons/DirectionIcon.js +1 -1
- package/es/icons/DonutIcon.js +1 -1
- package/es/icons/DownIcon.js +1 -1
- package/es/icons/EditIcon.js +1 -1
- package/es/icons/ExclamationCircleFilledIcon.js +1 -1
- package/es/icons/ExclamationCircleIcon.js +1 -1
- package/es/icons/ExclamationIcon.js +1 -1
- package/es/icons/EyeIcon.js +1 -1
- package/es/icons/EyeInvisibleIcon.js +1 -1
- package/es/icons/FilterIcon.js +1 -1
- package/es/icons/FolderFilledIcon.js +1 -1
- package/es/icons/FolderIcon.js +1 -1
- package/es/icons/FolderOpenFilledIcon.js +1 -1
- package/es/icons/FolderOpenIcon.js +1 -1
- package/es/icons/ForwardIcon.js +1 -1
- package/es/icons/HierarchyIcon.js +1 -1
- package/es/icons/HierarchyOpenIcon.js +1 -1
- package/es/icons/Icon.js +1 -1
- package/es/icons/InfoCircleIcon.js +1 -1
- package/es/icons/InfoIcon.js +1 -1
- package/es/icons/KeyIcon.js +1 -1
- package/es/icons/LeftIcon.js +1 -1
- package/es/icons/LineChartIcon.js +1 -1
- package/es/icons/LoadingIcon.js +1 -1
- package/es/icons/LockFilledIcon.js +1 -1
- package/es/icons/LockIcon.js +1 -1
- package/es/icons/MoreIcon.js +1 -1
- package/es/icons/NotAllowedIcon.js +1 -1
- package/es/icons/Number123Icon.js +1 -1
- package/es/icons/NumberIcon.js +1 -1
- package/es/icons/PauseCircleFilledIcon.js +1 -1
- package/es/icons/PauseCircleIcon.js +1 -1
- package/es/icons/PauseIcon.js +1 -1
- package/es/icons/PercentageIcon.js +1 -1
- package/es/icons/PieChartIcon.js +1 -1
- package/es/icons/PlayCircleIcon.js +1 -1
- package/es/icons/PlayIcon.js +1 -1
- package/es/icons/PlusIcon.js +1 -1
- package/es/icons/ProgressBarIcon.js +1 -1
- package/es/icons/ReloadIcon.js +1 -1
- package/es/icons/ReportIcon.js +1 -1
- package/es/icons/ReturnIcon.js +1 -1
- package/es/icons/RightIcon.js +1 -1
- package/es/icons/RowTotalsIcon.js +1 -1
- package/es/icons/SchemeIcon.js +1 -1
- package/es/icons/SearchIcon.js +1 -1
- package/es/icons/SemanticQueryIcon.js +1 -1
- package/es/icons/SettingsIcon.js +1 -1
- package/es/icons/ShieldFilledIcon.js +1 -1
- package/es/icons/ShieldIcon.js +1 -1
- package/es/icons/SlashIcon.js +1 -1
- package/es/icons/SparklesIcon.js +1 -1
- package/es/icons/SqlIcon.js +1 -1
- package/es/icons/StatsIcon.js +1 -1
- package/es/icons/StopIcon.js +1 -1
- package/es/icons/StringIcon.js +1 -1
- package/es/icons/SubtotalsIcon.js +1 -1
- package/es/icons/SwitchIcon.js +1 -1
- package/es/icons/TableIcon.js +1 -1
- package/es/icons/ThumbsDownIcon.js +1 -1
- package/es/icons/ThumbsUpIcon.js +1 -1
- package/es/icons/ThunderboltCrossedIcon.js +1 -1
- package/es/icons/ThunderboltFilledIcon.js +1 -1
- package/es/icons/ThunderboltIcon.js +1 -1
- package/es/icons/TimeIcon.js +1 -1
- package/es/icons/TrashIcon.js +1 -1
- package/es/icons/UnlockIcon.js +1 -1
- package/es/icons/UpIcon.js +1 -1
- package/es/icons/UserGroupIcon.js +1 -1
- package/es/icons/UserIcon.js +1 -1
- package/es/icons/UserLockIcon.js +1 -1
- package/es/icons/ViewIcon.js +1 -1
- package/es/icons/WarningFilledIcon.js +1 -1
- package/es/icons/WarningIcon.js +1 -1
- package/es/icons/index.js +1 -1
- package/es/icons/wrap-icon.js +1 -1
- package/es/index.js +3 -1
- package/es/provider.js +1 -1
- package/es/providers/TrackingProvider.js +1 -1
- package/es/providers/navigation.types.js +1 -1
- package/es/providers/navigationAdapter.default.js +1 -1
- package/es/services/notification.js +1 -1
- package/es/shared/form.js +1 -1
- package/es/shared/index.js +1 -1
- package/es/stories/Form.legacy-stories.js +1 -1
- package/es/stories/FormFieldArgs.js +1 -1
- package/es/stories/SimpleLayout.stories.js +1 -1
- package/es/stories/Tasty.stories.js +1 -1
- package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
- package/es/stories/components/DialogFormApp.js +1 -1
- package/es/stories/components/StyledButton.js +1 -1
- package/es/stories/lists/baseProps.js +1 -1
- package/es/stories/playground/PlaygroundEditor.js +1 -1
- package/es/stories/playground/PlaygroundLayout.js +1 -1
- package/es/stories/playground/PlaygroundOutput.js +1 -1
- package/es/stories/playground/PlaygroundPreview.js +1 -1
- package/es/stories/playground/components/Button.js +1 -1
- package/es/stories/playground/components/Card.js +1 -1
- package/es/stories/playground/components/ScrollProgress.js +1 -1
- package/es/stories/playground/examples.js +1 -1
- package/es/tasty/chunks/cacheKey.js +1 -1
- package/es/tasty/chunks/definitions.js +3 -3
- package/es/tasty/chunks/index.js +1 -1
- package/es/tasty/chunks/renderChunk.js +1 -1
- package/es/tasty/config.js +1 -1
- package/es/tasty/debug.js +1 -1
- package/es/tasty/hooks/index.js +3 -1
- package/es/tasty/hooks/useGlobalStyles.js +1 -1
- package/es/tasty/hooks/useKeyframes.js +82 -0
- package/es/tasty/hooks/useProperty.js +100 -0
- package/es/tasty/hooks/useRawCSS.js +1 -1
- package/es/tasty/hooks/useStyles.js +15 -2
- package/es/tasty/index.js +2 -2
- package/es/tasty/injector/index.js +39 -1
- package/es/tasty/injector/injector.js +67 -16
- package/es/tasty/injector/sheet-manager.js +2 -2
- package/es/tasty/injector/types.js +1 -1
- package/es/tasty/keyframes/index.js +1 -1
- package/es/tasty/parser/classify.js +15 -1
- package/es/tasty/parser/const.js +1 -1
- package/es/tasty/parser/lru.js +1 -1
- package/es/tasty/parser/parser.js +1 -1
- package/es/tasty/parser/tokenizer.js +1 -1
- package/es/tasty/parser/types.js +1 -1
- package/es/tasty/pipeline/conditions.js +1 -1
- package/es/tasty/pipeline/exclusive.js +1 -1
- package/es/tasty/pipeline/index.js +1 -1
- package/es/tasty/pipeline/materialize.js +1 -1
- package/es/tasty/pipeline/parseStateKey.js +1 -1
- package/es/tasty/pipeline/simplify.js +1 -1
- package/es/tasty/plugins/index.js +1 -1
- package/es/tasty/plugins/okhsl-plugin.js +1 -1
- package/es/tasty/plugins/types.js +1 -1
- package/es/tasty/properties/index.js +211 -0
- package/es/tasty/states/index.js +8 -2
- package/es/tasty/static/index.js +1 -1
- package/es/tasty/static/tastyStatic.js +1 -1
- package/es/tasty/static/types.js +1 -1
- package/es/tasty/styles/align.js +1 -1
- package/es/tasty/styles/border.js +114 -20
- package/es/tasty/styles/boxShadow.combinator.js +1 -1
- package/es/tasty/styles/color.js +1 -1
- package/es/tasty/styles/createStyle.js +1 -1
- package/es/tasty/styles/dimension.js +1 -1
- package/es/tasty/styles/display.js +1 -1
- package/es/tasty/styles/fade.js +46 -13
- package/es/tasty/styles/fill.js +1 -1
- package/es/tasty/styles/flow.js +1 -1
- package/es/tasty/styles/font.js +1 -1
- package/es/tasty/styles/fontStyle.js +1 -1
- package/es/tasty/styles/gap.js +1 -1
- package/es/tasty/styles/groupRadius.js +1 -1
- package/es/tasty/styles/height.js +1 -1
- package/es/tasty/styles/index.js +1 -1
- package/es/tasty/styles/inset.js +1 -1
- package/es/tasty/styles/justify.js +1 -1
- package/es/tasty/styles/list.js +1 -1
- package/es/tasty/styles/margin.js +1 -1
- package/es/tasty/styles/outline.js +1 -1
- package/es/tasty/styles/padding.js +1 -1
- package/es/tasty/styles/place.js +1 -1
- package/es/tasty/styles/predefined.js +1 -1
- package/es/tasty/styles/preset.js +1 -1
- package/es/tasty/styles/radius.js +1 -1
- package/es/tasty/styles/reset.js +1 -1
- package/es/tasty/styles/scrollbar.js +1 -1
- package/es/tasty/styles/shadow.js +1 -1
- package/es/tasty/styles/styledScrollbar.js +1 -1
- package/es/tasty/styles/transition.js +1 -1
- package/es/tasty/styles/types.js +1 -1
- package/es/tasty/styles/width.js +1 -1
- package/es/tasty/tasty.js +94 -113
- package/es/tasty/types.js +1 -1
- package/es/tasty/utils/cache-wrapper.js +1 -1
- package/es/tasty/utils/case-converter.js +1 -1
- package/es/tasty/utils/colors.js +1 -1
- package/es/tasty/utils/dotize.js +1 -1
- package/es/tasty/utils/filterBaseProps.js +1 -1
- package/es/tasty/utils/getDisplayName.js +1 -1
- package/es/tasty/utils/isDevEnv.js +1 -1
- package/es/tasty/utils/mergeStyles.js +1 -1
- package/es/tasty/utils/modAttrs.js +1 -1
- package/es/tasty/utils/processTokens.js +1 -1
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +1 -1
- package/es/tasty/utils/typography.js +1 -1
- package/es/tasty/utils/warnings.js +1 -1
- package/es/tasty/zero/babel.js +1 -1
- package/es/tasty/zero/css-writer.js +1 -1
- package/es/tasty/zero/extractor.js +1 -1
- package/es/tasty/zero/index.js +1 -1
- package/es/tasty/zero/next.js +1 -1
- package/es/tokens/base.js +5 -1
- package/es/tokens/colors.js +1 -1
- package/es/tokens/index.js +1 -1
- package/es/tokens/layout.js +1 -1
- package/es/tokens/shadows.js +1 -1
- package/es/tokens/sizes.js +1 -1
- package/es/tokens/spacing.js +1 -1
- package/es/tokens/typography.js +1 -1
- package/es/utils/ResizeSensor.js +1 -1
- package/es/utils/index.js +1 -1
- package/es/utils/modules.js +1 -1
- package/es/utils/promise.js +1 -1
- package/es/utils/raf.js +1 -1
- package/es/utils/random.js +1 -1
- package/es/utils/range.js +1 -1
- package/es/utils/react/RenderCache.js +1 -1
- package/es/utils/react/Slots.js +1 -1
- package/es/utils/react/chain.js +1 -1
- package/es/utils/react/forwardRefWithGenerics.js +1 -1
- package/es/utils/react/index.js +1 -1
- package/es/utils/react/interactions.js +1 -1
- package/es/utils/react/isTextOnly.js +1 -1
- package/es/utils/react/mapProps.js +1 -1
- package/es/utils/react/mergeProps.js +1 -1
- package/es/utils/react/nullableValue.js +1 -1
- package/es/utils/react/resolveIcon.js +1 -1
- package/es/utils/react/sharedStore.js +1 -1
- package/es/utils/react/useCombinedRefs.js +1 -1
- package/es/utils/react/useControlledFocusVisible.js +1 -1
- package/es/utils/react/useEventBus.js +1 -1
- package/es/utils/react/useId.js +1 -1
- package/es/utils/react/useIsDarwin.js +1 -1
- package/es/utils/react/useKeySymbols.js +1 -1
- package/es/utils/react/useLayoutEffect.js +1 -1
- package/es/utils/react/useLocalStorage.js +1 -1
- package/es/utils/react/useQaProps.js +1 -1
- package/es/utils/react/useViewportSize.js +1 -1
- package/es/utils/react/wrapNodeIfPlain.js +1 -1
- package/es/utils/tree.js +1 -1
- package/es/utils/warnings.js +1 -1
- package/es/version.js +2 -2
- package/package.json +1 -1
- package/types/components/HiddenInput.d.ts +2 -1
- package/types/components/actions/Button/Button.d.ts +4 -2
- package/types/components/actions/CommandMenu/styled.d.ts +10 -5
- package/types/components/actions/Menu/styled.d.ts +514 -509
- package/types/components/content/Item/Item.d.ts +7 -0
- package/types/components/content/Layout/hooks/useTinyScrollbar.d.ts +6 -0
- package/types/components/content/List/SectionHeading.d.ts +168 -168
- package/types/components/content/Text.d.ts +1176 -1176
- package/types/components/fields/DatePicker/DatePickerElement.d.ts +168 -168
- package/types/components/fields/Select/Select.d.ts +2 -1
- package/types/components/fields/Slider/elements.d.ts +12 -6
- package/types/components/navigation/Tabs/Tabs.d.ts +236 -0
- package/types/components/navigation/Tabs/index.d.ts +2 -0
- package/types/components/navigation/index.d.ts +2 -0
- package/types/index.d.ts +1 -0
- package/types/tasty/hooks/index.d.ts +3 -0
- package/types/tasty/hooks/useKeyframes.d.ts +52 -0
- package/types/tasty/hooks/useProperty.d.ts +75 -0
- package/types/tasty/index.d.ts +2 -2
- package/types/tasty/injector/index.d.ts +57 -1
- package/types/tasty/injector/injector.d.ts +19 -7
- package/types/tasty/injector/types.d.ts +14 -2
- package/types/tasty/properties/index.d.ts +90 -0
- package/types/tasty/styles/border.d.ts +11 -3
- package/types/tasty/styles/fade.d.ts +1 -1
- package/types/tasty/styles/types.d.ts +42 -6
- package/types/tasty/tasty.d.ts +2 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-837dfc4
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { useInsertionEffect, useMemo, useRef } from 'react';
|
|
9
|
+
import { keyframes } from '../injector/index.js';
|
|
10
|
+
// Implementation
|
|
11
|
+
export function useKeyframes(stepsOrFactory, depsOrOptions, options) {
|
|
12
|
+
// Detect which overload is being used
|
|
13
|
+
const isFactory = typeof stepsOrFactory === '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 the keyframes steps to get a stable reference
|
|
20
|
+
const stepsData = useMemo(() => {
|
|
21
|
+
const steps = isFactory
|
|
22
|
+
? stepsOrFactory()
|
|
23
|
+
: stepsOrFactory;
|
|
24
|
+
if (!steps || Object.keys(steps).length === 0) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return steps;
|
|
28
|
+
}, isFactory ? deps ?? [] : [stepsOrFactory]);
|
|
29
|
+
// Store keyframes results for cleanup - we need to track both the render-time
|
|
30
|
+
// injection (for the name) and the effect-time injection (for Strict Mode safety)
|
|
31
|
+
const renderResultRef = useRef(null);
|
|
32
|
+
const effectResultRef = useRef(null);
|
|
33
|
+
// Inject keyframes during render to ensure the animation name is available
|
|
34
|
+
// immediately. The keyframes() function uses reference counting internally,
|
|
35
|
+
// so multiple calls with the same content are deduplicated.
|
|
36
|
+
const name = useMemo(() => {
|
|
37
|
+
// Dispose previous render-time result if deps changed
|
|
38
|
+
renderResultRef.current?.dispose();
|
|
39
|
+
renderResultRef.current = null;
|
|
40
|
+
if (!stepsData) {
|
|
41
|
+
return '';
|
|
42
|
+
}
|
|
43
|
+
// Inject keyframes synchronously
|
|
44
|
+
const result = keyframes(stepsData, {
|
|
45
|
+
name: opts?.name,
|
|
46
|
+
root: opts?.root,
|
|
47
|
+
});
|
|
48
|
+
renderResultRef.current = result;
|
|
49
|
+
return result.toString();
|
|
50
|
+
}, [stepsData, opts?.name, opts?.root]);
|
|
51
|
+
// Handle injection and cleanup in useInsertionEffect to properly support
|
|
52
|
+
// React 18+ Strict Mode double-invocation (mount → unmount → mount).
|
|
53
|
+
// The effect setup re-injects the keyframes if cleanup was called, ensuring
|
|
54
|
+
// the CSS exists after Strict Mode remounts.
|
|
55
|
+
useInsertionEffect(() => {
|
|
56
|
+
// Dispose previous effect-time result
|
|
57
|
+
effectResultRef.current?.dispose();
|
|
58
|
+
effectResultRef.current = null;
|
|
59
|
+
// Re-inject keyframes. This ensures the CSS exists after Strict Mode cleanup.
|
|
60
|
+
// The keyframes() function uses reference counting, so this is idempotent
|
|
61
|
+
// if the CSS wasn't disposed.
|
|
62
|
+
if (stepsData) {
|
|
63
|
+
const result = keyframes(stepsData, {
|
|
64
|
+
name: opts?.name,
|
|
65
|
+
root: opts?.root,
|
|
66
|
+
});
|
|
67
|
+
effectResultRef.current = result;
|
|
68
|
+
}
|
|
69
|
+
// Cleanup on unmount or when dependencies change.
|
|
70
|
+
// Dispose both the effect-time and render-time results to properly
|
|
71
|
+
// decrement the reference count.
|
|
72
|
+
return () => {
|
|
73
|
+
effectResultRef.current?.dispose();
|
|
74
|
+
effectResultRef.current = null;
|
|
75
|
+
renderResultRef.current?.dispose();
|
|
76
|
+
renderResultRef.current = null;
|
|
77
|
+
};
|
|
78
|
+
}, [stepsData, opts?.name, opts?.root]);
|
|
79
|
+
return name;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-837dfc4
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { useInsertionEffect, useMemo } from 'react';
|
|
9
|
+
import { getGlobalInjector } from '../config.js';
|
|
10
|
+
/**
|
|
11
|
+
* Hook to register a CSS @property custom property.
|
|
12
|
+
* This enables advanced features like animating custom properties.
|
|
13
|
+
*
|
|
14
|
+
* Note: @property rules are global and persistent once defined.
|
|
15
|
+
* The hook ensures the property is only registered once per root.
|
|
16
|
+
*
|
|
17
|
+
* Accepts tasty token syntax for the property name:
|
|
18
|
+
* - `$name` → defines `--name`
|
|
19
|
+
* - `#name` → defines `--name-color` (auto-sets syntax: '<color>', defaults initialValue: 'transparent')
|
|
20
|
+
* - `--name` → defines `--name` (legacy format)
|
|
21
|
+
*
|
|
22
|
+
* @param name - The property token ($name, #name) or CSS property name (--name)
|
|
23
|
+
* @param options - Property configuration
|
|
24
|
+
*
|
|
25
|
+
* @example Basic property with token syntax
|
|
26
|
+
* ```tsx
|
|
27
|
+
* function Spinner() {
|
|
28
|
+
* useProperty('$rotation', {
|
|
29
|
+
* syntax: '<angle>',
|
|
30
|
+
* inherits: false,
|
|
31
|
+
* initialValue: '0deg',
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* return <div className="spinner" />;
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @example Color property with token syntax (auto-sets syntax)
|
|
39
|
+
* ```tsx
|
|
40
|
+
* function MyComponent() {
|
|
41
|
+
* useProperty('#theme', {
|
|
42
|
+
* initialValue: 'red', // syntax: '<color>' is auto-set
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* // Now --theme-color can be animated with CSS transitions
|
|
46
|
+
* return <div style={{ '--theme-color': 'blue' } as React.CSSProperties}>Colored</div>;
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @example Legacy format (still supported)
|
|
51
|
+
* ```tsx
|
|
52
|
+
* function ResizableBox() {
|
|
53
|
+
* useProperty('--box-size', {
|
|
54
|
+
* syntax: '<length>',
|
|
55
|
+
* initialValue: '100px',
|
|
56
|
+
* });
|
|
57
|
+
*
|
|
58
|
+
* return <div style={{ width: 'var(--box-size)' }} />;
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export function useProperty(name, options) {
|
|
63
|
+
// Memoize the options to create a stable dependency
|
|
64
|
+
const optionsKey = useMemo(() => {
|
|
65
|
+
if (!options)
|
|
66
|
+
return '';
|
|
67
|
+
return JSON.stringify({
|
|
68
|
+
syntax: options.syntax,
|
|
69
|
+
inherits: options.inherits,
|
|
70
|
+
initialValue: options.initialValue,
|
|
71
|
+
});
|
|
72
|
+
}, [options?.syntax, options?.inherits, options?.initialValue]);
|
|
73
|
+
useInsertionEffect(() => {
|
|
74
|
+
if (!name) {
|
|
75
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
76
|
+
console.warn(`[Tasty] useProperty: property name is required`);
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const injector = getGlobalInjector();
|
|
81
|
+
// Check if already defined (properties are persistent)
|
|
82
|
+
// The injector handles token parsing internally
|
|
83
|
+
if (injector.isPropertyDefined(name, { root: options?.root })) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// Register the property
|
|
87
|
+
// The injector handles $name, #name, --name parsing and auto-sets
|
|
88
|
+
// syntax for color tokens
|
|
89
|
+
injector.property(name, {
|
|
90
|
+
syntax: options?.syntax,
|
|
91
|
+
inherits: options?.inherits,
|
|
92
|
+
initialValue: options?.initialValue,
|
|
93
|
+
root: options?.root,
|
|
94
|
+
});
|
|
95
|
+
// No cleanup - @property rules are global and persistent
|
|
96
|
+
// Re-registering is a no-op anyway due to the isPropertyDefined check
|
|
97
|
+
}, [name, optionsKey, options?.root]);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|
|
@@ -1,16 +1,17 @@
|
|
|
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-837dfc4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { useInsertionEffect, useMemo, useRef } from 'react';
|
|
9
9
|
import { categorizeStyleKeys, CHUNK_NAMES, generateChunkCacheKey, renderStylesForChunk, } from '../chunks/index.js';
|
|
10
10
|
import { getGlobalKeyframes, hasGlobalKeyframes } from '../config.js';
|
|
11
|
-
import { allocateClassName, inject, keyframes } from '../injector/index.js';
|
|
11
|
+
import { allocateClassName, inject, keyframes, property } from '../injector/index.js';
|
|
12
12
|
import { extractAnimationNamesFromStyles, extractLocalKeyframes, filterUsedKeyframes, hasLocalKeyframes, mergeKeyframes, replaceAnimationNames, } from '../keyframes/index.js';
|
|
13
13
|
import { renderStyles } from '../pipeline/index.js';
|
|
14
|
+
import { extractLocalProperties, hasLocalProperties } from '../properties/index.js';
|
|
14
15
|
import { stringifyStyles } from '../utils/styles.js';
|
|
15
16
|
/**
|
|
16
17
|
* Check if styles contain @starting-style rules.
|
|
@@ -173,6 +174,18 @@ export function useStyles(styles) {
|
|
|
173
174
|
nameMap = null;
|
|
174
175
|
}
|
|
175
176
|
}
|
|
177
|
+
// Register @properties if defined (no dispose needed - properties are permanent)
|
|
178
|
+
// Token formats: $name → --name, #name → --name-color (with auto syntax: '<color>')
|
|
179
|
+
// The injector.property() handles token parsing and auto-settings internally
|
|
180
|
+
if (currentStyles && hasLocalProperties(currentStyles)) {
|
|
181
|
+
const properties = extractLocalProperties(currentStyles);
|
|
182
|
+
if (properties) {
|
|
183
|
+
for (const [token, definition] of Object.entries(properties)) {
|
|
184
|
+
// Pass the token directly - injector handles parsing
|
|
185
|
+
property(token, definition);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
176
189
|
// Inject each chunk
|
|
177
190
|
for (const chunk of processedChunks) {
|
|
178
191
|
if (chunk.renderResult.rules.length > 0) {
|
package/es/tasty/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
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-837dfc4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { configure } from './config.js';
|
|
9
9
|
import { okhslPlugin } from './plugins/index.js';
|
|
10
10
|
export { tasty, Element } from './tasty.js';
|
|
11
|
-
export { useStyles, useGlobalStyles, useRawCSS } from './hooks/index.js';
|
|
11
|
+
export { useStyles, useGlobalStyles, useRawCSS, useProperty, useKeyframes, } from './hooks/index.js';
|
|
12
12
|
// Configuration API
|
|
13
13
|
export { configure, getConfig, isConfigLocked, hasStylesGenerated, resetConfig, isTestEnvironment, hasGlobalKeyframes, getGlobalKeyframes, } from './config.js';
|
|
14
14
|
// Plugins
|
|
@@ -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-837dfc4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -59,6 +59,44 @@ export function getRawCSSText(options) {
|
|
|
59
59
|
export function keyframes(steps, nameOrOptions) {
|
|
60
60
|
return getGlobalInjector().keyframes(steps, nameOrOptions);
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Define a CSS @property custom property.
|
|
64
|
+
* This enables advanced features like animating custom properties.
|
|
65
|
+
*
|
|
66
|
+
* Note: @property rules are global and persistent once defined.
|
|
67
|
+
* Re-registering the same property name is a no-op.
|
|
68
|
+
*
|
|
69
|
+
* @param name - The custom property name (must start with --)
|
|
70
|
+
* @param options - Property configuration
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* // Define a color property that can be animated
|
|
75
|
+
* property('--my-color', {
|
|
76
|
+
* syntax: '<color>',
|
|
77
|
+
* initialValue: 'red',
|
|
78
|
+
* });
|
|
79
|
+
*
|
|
80
|
+
* // Define an angle property
|
|
81
|
+
* property('--rotation', {
|
|
82
|
+
* syntax: '<angle>',
|
|
83
|
+
* inherits: false,
|
|
84
|
+
* initialValue: '0deg',
|
|
85
|
+
* });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export function property(name, options) {
|
|
89
|
+
return getGlobalInjector().property(name, options);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Check if a CSS @property has already been defined
|
|
93
|
+
*
|
|
94
|
+
* @param name - The custom property name to check
|
|
95
|
+
* @param options - Options including root
|
|
96
|
+
*/
|
|
97
|
+
export function isPropertyDefined(name, options) {
|
|
98
|
+
return getGlobalInjector().isPropertyDefined(name, options);
|
|
99
|
+
}
|
|
62
100
|
/**
|
|
63
101
|
* Get CSS text from all sheets (for SSR)
|
|
64
102
|
*/
|
|
@@ -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-837dfc4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* Style injector that works with structured style objects
|
|
10
10
|
* Eliminates CSS string parsing for better performance
|
|
11
11
|
*/
|
|
12
|
+
import { getEffectiveDefinition, normalizePropertyDefinition, } from '../properties/index.js';
|
|
13
|
+
import { isDevEnv } from '../utils/isDevEnv.js';
|
|
12
14
|
import { parseStyle } from '../utils/styles.js';
|
|
13
15
|
import { SheetManager } from './sheet-manager.js';
|
|
14
16
|
/**
|
|
@@ -315,56 +317,105 @@ export class StyleInjector {
|
|
|
315
317
|
this.sheetManager.resetMetrics(registry);
|
|
316
318
|
}
|
|
317
319
|
/**
|
|
318
|
-
* Define a CSS @property custom property
|
|
320
|
+
* Define a CSS @property custom property.
|
|
321
|
+
*
|
|
322
|
+
* Accepts tasty token syntax for the property name:
|
|
323
|
+
* - `$name` → defines `--name`
|
|
324
|
+
* - `#name` → defines `--name-color` (auto-sets syntax: '<color>', defaults initialValue: 'transparent')
|
|
325
|
+
* - `--name` → defines `--name` (legacy format)
|
|
326
|
+
*
|
|
319
327
|
* Example:
|
|
320
328
|
* @property --rotation { syntax: "<angle>"; inherits: false; initial-value: 45deg; }
|
|
329
|
+
*
|
|
321
330
|
* Note: No caching or dispose — this defines a global property.
|
|
331
|
+
*
|
|
332
|
+
* If the same property is registered with different options, a warning is emitted
|
|
333
|
+
* but the original definition is preserved (CSS @property cannot be redefined).
|
|
322
334
|
*/
|
|
323
335
|
property(name, options) {
|
|
324
336
|
const root = options?.root || document;
|
|
325
337
|
const registry = this.sheetManager.getRegistry(root);
|
|
326
|
-
//
|
|
327
|
-
|
|
338
|
+
// Parse the token and get effective definition
|
|
339
|
+
// This handles $name, #name, --name formats and auto-sets syntax for colors
|
|
340
|
+
const userDefinition = {
|
|
341
|
+
syntax: options?.syntax,
|
|
342
|
+
inherits: options?.inherits,
|
|
343
|
+
initialValue: options?.initialValue,
|
|
344
|
+
};
|
|
345
|
+
const effectiveResult = getEffectiveDefinition(name, userDefinition);
|
|
346
|
+
if (!effectiveResult.isValid) {
|
|
347
|
+
if (isDevEnv()) {
|
|
348
|
+
console.warn(`[Tasty] property(): ${effectiveResult.error}. Got: "${name}"`);
|
|
349
|
+
}
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
const cssName = effectiveResult.cssName;
|
|
353
|
+
const definition = effectiveResult.definition;
|
|
354
|
+
// Normalize the definition for comparison
|
|
355
|
+
const normalizedDef = normalizePropertyDefinition(definition);
|
|
356
|
+
// Check if already defined
|
|
357
|
+
const existingDef = registry.injectedProperties.get(cssName);
|
|
358
|
+
if (existingDef !== undefined) {
|
|
359
|
+
// Property already exists - check if definitions match
|
|
360
|
+
if (existingDef !== normalizedDef) {
|
|
361
|
+
// Different definition - warn but don't replace (CSS @property can't be redefined)
|
|
362
|
+
if (isDevEnv()) {
|
|
363
|
+
console.warn(`[Tasty] @property ${cssName} was already defined with a different declaration. ` +
|
|
364
|
+
`The new declaration will be ignored. ` +
|
|
365
|
+
`Original: ${existingDef}, New: ${normalizedDef}`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// Either exact match or warned - skip injection
|
|
328
369
|
return;
|
|
329
370
|
}
|
|
330
371
|
const parts = [];
|
|
331
|
-
if (
|
|
332
|
-
let syntax = String(
|
|
372
|
+
if (definition.syntax != null) {
|
|
373
|
+
let syntax = String(definition.syntax).trim();
|
|
333
374
|
if (!/^['"]/u.test(syntax))
|
|
334
375
|
syntax = `"${syntax}"`;
|
|
335
376
|
parts.push(`syntax: ${syntax};`);
|
|
336
377
|
}
|
|
337
378
|
// inherits is required by the CSS @property spec - default to true
|
|
338
|
-
const inherits =
|
|
379
|
+
const inherits = definition.inherits ?? true;
|
|
339
380
|
parts.push(`inherits: ${inherits ? 'true' : 'false'};`);
|
|
340
|
-
if (
|
|
381
|
+
if (definition.initialValue != null) {
|
|
341
382
|
let initialValueStr;
|
|
342
|
-
if (typeof
|
|
343
|
-
initialValueStr = String(
|
|
383
|
+
if (typeof definition.initialValue === 'number') {
|
|
384
|
+
initialValueStr = String(definition.initialValue);
|
|
344
385
|
}
|
|
345
386
|
else {
|
|
346
387
|
// Process via tasty parser to resolve custom units/functions
|
|
347
|
-
initialValueStr = parseStyle(
|
|
388
|
+
initialValueStr = parseStyle(definition.initialValue).output;
|
|
348
389
|
}
|
|
349
390
|
parts.push(`initial-value: ${initialValueStr};`);
|
|
350
391
|
}
|
|
351
392
|
const declarations = parts.join(' ').trim();
|
|
352
393
|
const rule = {
|
|
353
|
-
selector: `@property ${
|
|
394
|
+
selector: `@property ${cssName}`,
|
|
354
395
|
declarations,
|
|
355
396
|
};
|
|
356
397
|
// Insert as a global rule; ignore returned info (no tracking/dispose)
|
|
357
398
|
this.sheetManager.insertGlobalRule(registry, [rule], `property:${name}`, root);
|
|
358
|
-
// Track that this property was injected
|
|
359
|
-
registry.injectedProperties.
|
|
399
|
+
// Track that this property was injected with its normalized definition
|
|
400
|
+
registry.injectedProperties.set(cssName, normalizedDef);
|
|
360
401
|
}
|
|
361
402
|
/**
|
|
362
|
-
* Check whether a given @property name was already injected by this injector
|
|
403
|
+
* Check whether a given @property name was already injected by this injector.
|
|
404
|
+
*
|
|
405
|
+
* Accepts tasty token syntax:
|
|
406
|
+
* - `$name` → checks `--name`
|
|
407
|
+
* - `#name` → checks `--name-color`
|
|
408
|
+
* - `--name` → checks `--name` (legacy format)
|
|
363
409
|
*/
|
|
364
410
|
isPropertyDefined(name, options) {
|
|
365
411
|
const root = options?.root || document;
|
|
366
412
|
const registry = this.sheetManager.getRegistry(root);
|
|
367
|
-
|
|
413
|
+
// Parse the token to get the CSS property name
|
|
414
|
+
const effectiveResult = getEffectiveDefinition(name, {});
|
|
415
|
+
if (!effectiveResult.isValid) {
|
|
416
|
+
return false;
|
|
417
|
+
}
|
|
418
|
+
return registry.injectedProperties.has(effectiveResult.cssName);
|
|
368
419
|
}
|
|
369
420
|
/**
|
|
370
421
|
* Inject keyframes and return object with toString() and dispose()
|
|
@@ -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-837dfc4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -49,7 +49,7 @@ export class SheetManager {
|
|
|
49
49
|
keyframesCache: new Map(),
|
|
50
50
|
keyframesNameToContent: new Map(),
|
|
51
51
|
keyframesCounter: 0,
|
|
52
|
-
injectedProperties: new
|
|
52
|
+
injectedProperties: new Map(),
|
|
53
53
|
globalRules: new Map(),
|
|
54
54
|
};
|
|
55
55
|
this.rootRegistries.set(root, registry);
|
|
@@ -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-837dfc4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -72,6 +72,20 @@ export function classify(raw, opts, recurse) {
|
|
|
72
72
|
(token.startsWith("'") && token.endsWith("'"))) {
|
|
73
73
|
return { bucket: Bucket.Value, processed: token };
|
|
74
74
|
}
|
|
75
|
+
// 0. Double prefix for literal CSS property names ($$name -> --name, ##name -> --name-color)
|
|
76
|
+
// Used in transitions and animations to reference the property name itself, not its value
|
|
77
|
+
if (token.startsWith('$$')) {
|
|
78
|
+
const name = token.slice(2);
|
|
79
|
+
if (/^[a-z_][a-z0-9-_]*$/i.test(name)) {
|
|
80
|
+
return { bucket: Bucket.Value, processed: `--${name}` };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (token.startsWith('##')) {
|
|
84
|
+
const name = token.slice(2);
|
|
85
|
+
if (/^[a-z_][a-z0-9-_]*$/i.test(name)) {
|
|
86
|
+
return { bucket: Bucket.Value, processed: `--${name}-color` };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
75
89
|
// 0a. Check for predefined tokens (configured via configure({ tokens: {...} }))
|
|
76
90
|
// Must happen before default $ and # handling to allow overriding
|
|
77
91
|
if (token[0] === '$' || token[0] === '#') {
|
package/es/tasty/parser/const.js
CHANGED
package/es/tasty/parser/lru.js
CHANGED
package/es/tasty/parser/types.js
CHANGED