@cube-dev/ui-kit 0.142.2 → 0.142.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +16 -0
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +3 -3
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +28 -6
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/intl.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.d.ts +1 -1
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +7 -7
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/palette.js +13 -1
- package/dist/tokens/palette.js.map +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +3 -3
- package/docs/tasty/pipeline.md +40 -14
- package/package.json +2 -2
package/dist/tokens/base.js
CHANGED
package/dist/tokens/colors.js
CHANGED
package/dist/tokens/index.js
CHANGED
package/dist/tokens/layout.js
CHANGED
package/dist/tokens/palette.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.142.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
|
|
2
2
|
import { glaze } from "@tenphi/glaze";
|
|
3
3
|
|
|
4
4
|
//#region src/tokens/palette.ts
|
|
@@ -169,6 +169,12 @@ defaultTheme.colors({
|
|
|
169
169
|
contrast: [6, 10],
|
|
170
170
|
mode: "fixed"
|
|
171
171
|
},
|
|
172
|
+
"accent-surface-border": {
|
|
173
|
+
base: "accent-surface",
|
|
174
|
+
lightness: "+1",
|
|
175
|
+
contrast: [1.4, 1.8],
|
|
176
|
+
mode: "fixed"
|
|
177
|
+
},
|
|
172
178
|
"accent-text": {
|
|
173
179
|
base: "surface",
|
|
174
180
|
lightness: "-1",
|
|
@@ -398,6 +404,12 @@ specialTheme.colors({
|
|
|
398
404
|
contrast: [5.5, 9],
|
|
399
405
|
mode: "fixed"
|
|
400
406
|
},
|
|
407
|
+
"accent-surface-border": {
|
|
408
|
+
base: "accent-surface",
|
|
409
|
+
lightness: "+1",
|
|
410
|
+
contrast: [1.4, 1.8],
|
|
411
|
+
mode: "fixed"
|
|
412
|
+
},
|
|
401
413
|
"accent-surface-hover": {
|
|
402
414
|
base: "accent-surface-text",
|
|
403
415
|
lightness: "-1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.js","names":[],"sources":["../../src/tokens/palette.ts"],"sourcesContent":["import { glaze } from '@tenphi/glaze';\n\nimport type { ColorMap } from '@tenphi/glaze';\nimport type { Styles } from '@tenphi/tasty';\n\n/**\n * Glaze-generated color palette for the Cube UI Kit.\n *\n * Produces light, dark, and high-contrast color variants from a single\n * source of truth. Every color token is emitted as a tasty state map:\n *\n * '#surface': { '': 'okhsl(...)', '@dark': 'okhsl(...)', '@hc': 'okhsl(...)' }\n *\n * The `@dark` and `@hc` state aliases are wired up globally in\n * `src/components/Root.tsx` (see `setGlobalPredefinedStates`).\n */\n\n// ============================================================================\n// Hue / saturation seeds\n// ============================================================================\n\nconst PURPLE_HUE = 280.3;\nconst SUCCESS_HUE = 156.9;\nconst DANGER_HUE = 23.1;\nconst WARNING_HUE = 84.3;\nconst NOTE_HUE = 302.3;\n\n/** Seed saturation; per-color saturation factors below are 0–1 of this seed. */\nconst SEED_SATURATION = 80;\n\n// ============================================================================\n// Global Glaze configuration\n// ============================================================================\n\nglaze.configure({\n states: {\n dark: '@dark',\n highContrast: '@hc',\n },\n modes: {\n dark: true,\n highContrast: true,\n },\n});\n\n// ============================================================================\n// Default theme (neutral, primary in palette → exported unprefixed)\n// ============================================================================\n\nconst defaultTheme = glaze(PURPLE_HUE, SEED_SATURATION);\n\ndefaultTheme.colors({\n // ---- Surfaces (neutral, very low saturation) ----\n surface: { lightness: 100, saturation: 0.11 },\n 'surface-2': {\n base: 'surface',\n lightness: '-2',\n saturation: 0.15,\n inherit: false,\n },\n 'surface-3': {\n base: 'surface',\n lightness: '-4',\n saturation: 0.19,\n inherit: false,\n },\n 'surface-4': {\n base: 'surface',\n lightness: '-6',\n saturation: 0.2,\n inherit: false,\n },\n\n // ---- Text on surfaces ----\n // The darkest text token uses an *absolute* lightness anchored at the very\n // bottom of Glaze's lightness window (default `[10, 100]` for light /\n // `[15, 95]` for dark). A contrast-driven `surface-text` would top out near\n // L≈21 in light mode (because the solver only needs to *meet* the contrast\n // floor, then stops), leaving it noticeably softer than the legacy `#dark`\n // (OKHSL L=12). Setting `lightness: 2` (mode: 'auto', default) pins the\n // light-mode resolved value to L≈11.8 — pixel-equivalent to the legacy\n // `#dark` — and inverts in dark mode to L≈94 (cr≈13.7 vs the dark surface).\n // High-contrast pushes it all the way to the absolute extremes (L=2 light /\n // L=99 dark, cr≈20.8 / 20.5), unbounded by the normal lightness window.\n //\n // The softer variants below keep `lightness: '-1'` as a directional hint and\n // a numeric `contrast` ratio. Values are tuned so light-mode lightness lands\n // close to the legacy palette (`#dark-02` L=31, `#dark-03` L=49), so the\n // visual look in light mode is preserved while dark mode gets the proper\n // inverted ramp via the contrast solver.\n 'surface-text': {\n base: 'surface',\n lightness: 2,\n saturation: 0.475,\n },\n 'surface-text-soft': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.375,\n contrast: [9, 11],\n inherit: false,\n },\n 'surface-text-soft-2': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.24,\n contrast: [4.5, 5.5],\n inherit: false,\n },\n 'surface-2-text': {\n base: 'surface-2',\n lightness: 2,\n saturation: 0.475,\n inherit: false,\n },\n 'surface-2-text-soft': {\n base: 'surface-2',\n lightness: '-1',\n saturation: 0.375,\n contrast: [9, 11],\n inherit: false,\n },\n 'surface-3-text': {\n base: 'surface-3',\n lightness: 2,\n saturation: 0.475,\n inherit: false,\n },\n 'surface-3-text-soft': {\n base: 'surface-3',\n lightness: '-1',\n saturation: 0.375,\n contrast: [9, 11],\n inherit: false,\n },\n\n // ---- Other neutral UI primitives (default-only) ----\n border: {\n base: 'surface',\n lightness: ['-10', '-20'],\n saturation: 0.175,\n },\n placeholder: {\n base: 'surface',\n lightness: 67,\n saturation: 0.175,\n inherit: false,\n },\n focus: {\n base: 'surface',\n lightness: 71,\n saturation: 0.8625,\n inherit: false,\n },\n disabled: {\n lightness: 80.8,\n saturation: 0.4,\n inherit: false,\n },\n // Disabled fill chip + text — both adaptive (mode 'auto') and\n // *contrast-driven* against `surface` so the disabled state has the same\n // perceived intensity in light and dark schemes.\n //\n // The previous design relied on `#dark.04` (alpha tint) for the chip and\n // `#dark-04` (= `#placeholder`) for text. Because `#dark` is `#surface-text`\n // (anchored to absolute L=2 → flips to L=94 in dark), the resulting\n // composite was much more contrasting in dark mode (chip cr=1.04 → 1.51,\n // text cr=2.21 → 2.75 vs the chip), and combined with `color: '#white'` on\n // PRIMARY-type buttons text-on-chip jumped from cr=1.6 (washed) to cr=6.5\n // (fully readable) — the dark disabled state stopped looking disabled.\n //\n // With these contrast-driven tokens both schemes resolve to the same\n // ratios (chip ~1.4, text ~2.0 vs surface, text-on-chip ~1.4) so the\n // disabled appearance is identical in light, dark, and high-contrast.\n //\n // These two tokens are NEUTRAL — the chip has very low saturation and is\n // used by non-PRIMARY-style disabled states (secondary / outline / neutral\n // / clear / link / item). PRIMARY-style buttons (solid brand fill, white\n // label) use `accent-disabled-surface` + `accent-disabled-surface-text`\n // instead so the disabled chip stays brand-tinted per theme. Both tokens\n // therefore stay default-only (`inherit: false`) — the colored themes get\n // their own brand-tinted disabled chip via the inherited accent variants.\n 'disabled-surface': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.2,\n contrast: [1.1, 1.2],\n inherit: false,\n },\n 'disabled-surface-text': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.3,\n contrast: [2, 2.5],\n inherit: false,\n },\n\n // Fixed-mode \"always dark\" surface for elements that intentionally stay\n // inverted regardless of scheme (tooltips, code blocks, popovers with their\n // own dark theme, etc.). `mode: 'fixed'` bypasses the dark-scheme inversion\n // so the color reads as a dark surface in light, dark, and high-contrast.\n // Pair with `#white` (built-in) for foreground text.\n 'surface-inverse': {\n lightness: 12,\n saturation: 0.475,\n mode: 'fixed',\n inherit: false,\n },\n\n // ---- Accent system (theme-aware, inherited by colored themes) ----\n // Everything here is anchored to a fixed white \"accent-surface-text\" via\n // `mode: 'fixed'` + small *relative* lightness offsets, so accent colors\n // stay visually consistent across light/dark/high-contrast schemes (the\n // brand color does not flip). Contrast targets are explicit numeric ratios\n // — using 'AA'/'AAA' here would let the solver push the color far away\n // from its anchor in dark schemes, breaking the visual relationship\n // between `accent-surface` and `accent-text` (e.g. solid button bg vs.\n // its hover bg). All accent variants therefore share the same shape.\n 'accent-surface-text': { lightness: 100, mode: 'fixed' },\n 'accent-surface': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [4.5, 7],\n mode: 'fixed',\n },\n 'accent-surface-2': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [5, 8],\n mode: 'fixed',\n },\n 'accent-surface-3': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [5.5, 9],\n mode: 'fixed',\n },\n // Hover variant of `accent-surface` — a *fixed*-mode darker shade used as\n // the hover fill for solid PRIMARY-type buttons. Anchored to the same\n // accent-surface-text so it stays in the same hue family. Numeric contrast\n // is tuned so the hover shade lands near today's light-mode \"darker\n // purple\" (≈L=44 light / ≈L=40 dark), giving a visible darkening in BOTH\n // schemes (~7–9 OKHSL lightness points below `accent-surface`). Using a\n // dedicated fixed token avoids the trap of reusing `accent-text` (which\n // is `mode: 'auto'` and inverts direction in dark mode).\n 'accent-surface-hover': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [6, 10],\n mode: 'fixed',\n },\n // Saturated foreground variants. Anchored to `surface` (NOT `accent-surface`)\n // with `mode: 'auto'` so they adapt with the scheme: in dark mode the solver\n // pushes them lighter to stay readable on the dark surface. Anchoring to the\n // brand fill instead would only enforce contrast against that fill — leaving\n // the dark-mode color washed out against the actual surface they sit on\n // (e.g. SECONDARY button labels). The numeric `contrast` value is the\n // achieved-light-mode ratio under the previous chain, so the visual\n // appearance in light mode is preserved while dark mode is brought up to\n // the same perceived contrast.\n 'accent-text': {\n base: 'surface',\n lightness: '-1',\n saturation: 1,\n contrast: [6.4, 10],\n },\n // Softer adaptive companion to `accent-text` for \"secondary\" foregrounds\n // (LINK base color, subdued labels, etc.). Same anchor + saturation as\n // `accent-text` but a relaxed AA-only contrast floor (4.5/7) so it sits\n // visibly less prominent than the main brand text. Critically, it stays\n // `mode: 'auto'` (default) — unlike the fixed `accent-surface` brand color,\n // which would collapse to cr≈3 against the dark surface and break AA. The\n // adaptive lightness keeps cr≥4.5 in BOTH light and dark schemes.\n 'accent-text-soft': {\n base: 'surface',\n lightness: '-1',\n saturation: 1,\n contrast: [4.5, 7],\n },\n 'accent-icon': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.9375,\n contrast: [3.2, 5],\n },\n\n // Brand-tinted disabled chip + label for PRIMARY-style buttons (solid brand\n // fill, white text). Mirrors the shape of the neutral `disabled-surface` /\n // `disabled-surface-text` pair (`mode: 'auto'`, contrast-driven against\n // `surface`) so the disabled state is scheme-symmetric — chip cr ≈ 1.4 vs\n // surface, label cr ≈ 2.8–3.2 vs surface (≈ 2.1 text-on-chip) in BOTH\n // light and dark. Saturation is bumped up so the chip reads as a *muted\n // brand* color rather than a fully neutral grey, preserving the brand\n // identity even in the disabled state. Inherited per theme, so each colored\n // theme automatically emits `<theme>-accent-disabled-surface` and\n // `<theme>-accent-disabled-surface-text` (e.g. `#danger-accent-disabled-surface`).\n 'accent-disabled-surface': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.5,\n contrast: [1.4, 1.5],\n },\n 'accent-disabled-surface-text': {\n base: 'accent-disabled-surface',\n lightness: '+1',\n saturation: 0.4,\n contrast: 1.51,\n mode: 'fixed',\n },\n\n // ---- Code syntax highlighting (PrismCode) ----\n // A small palette of *adaptive* colored tokens for syntax highlighting.\n // Each token: `mode: 'auto'` (default) + `base: 'surface'` + a numeric\n // `contrast` floor of 4.5 (= WCAG AA) so every token reads against `#surface`\n // in light, dark, and high-contrast schemes alike. Hues mirror the\n // long-standing PrismCode reference (pink keywords / pink functions /\n // orange strings / green numbers / gray comments). `code-attribute` keeps\n // a cyan hue for HTML attribute names / CSS properties / selectors — not\n // exercised in the SQL reference but useful in other languages. Diff\n // insertion / deletion re-use the existing `success-*` / `danger-*` ramps.\n 'code-comment': {\n base: 'surface',\n hue: 280,\n saturation: 0.1,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n 'code-punctuation': {\n base: 'surface',\n hue: 348,\n saturation: 0.4,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n 'code-keyword': {\n base: 'surface',\n hue: 348,\n saturation: 1,\n lightness: '-1',\n contrast: [5, 7.5],\n inherit: false,\n },\n 'code-string': {\n base: 'surface',\n hue: PURPLE_HUE,\n saturation: 1,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n 'code-number': {\n base: 'surface',\n hue: 156,\n saturation: 0.9,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n 'code-function': {\n base: 'surface',\n hue: 348,\n saturation: 1,\n lightness: '-1',\n contrast: [5, 7.5],\n inherit: false,\n },\n 'code-attribute': {\n base: 'surface',\n hue: 200,\n saturation: 1,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n\n // ---- Loading-animation cube faces ----\n 'loading-face-1': {\n base: 'surface',\n lightness: 98,\n saturation: 0.3,\n contrast: [1.04, 1.5],\n inherit: false,\n },\n 'loading-face-2': {\n base: 'surface',\n lightness: 91,\n saturation: 0.62,\n contrast: [1.24, 2.5],\n inherit: false,\n },\n 'loading-face-3': {\n base: 'surface',\n lightness: 79,\n saturation: 0.66,\n contrast: [1.75, 4],\n inherit: false,\n },\n\n // ---- Shadows (default-only) ----\n 'shadow-sm': {\n type: 'shadow',\n bg: 'surface',\n fg: 'surface-text',\n intensity: 5,\n inherit: false,\n },\n 'shadow-md': {\n type: 'shadow',\n bg: 'surface',\n fg: 'surface-text',\n intensity: 10,\n inherit: false,\n },\n 'shadow-lg': {\n type: 'shadow',\n bg: 'surface',\n fg: 'surface-text',\n intensity: 15,\n inherit: false,\n },\n\n // Backdrop overlay (translucent)\n overlay: { lightness: 10, opacity: 0.5, inherit: false },\n});\n\n// ============================================================================\n// Colored themes\n// ============================================================================\n\n/**\n * Per-colored-theme overrides on top of `defaultTheme`:\n * - `surface` — bumped saturation so the banner bg is visibly tinted.\n * - `border` — bumped saturation so OUTLINE-variant borders pick up the\n * theme hue (used by `#<theme>-border` in `item-themes.ts`). Mirrors the\n * default-theme `border` shape (`base: 'surface'`, lightness window) but\n * with higher saturation. Glaze's `extend({ colors })` redefines each\n * listed color from scratch, so we restate the full definition here.\n */\nconst TINTED_SURFACE_OVERRIDE: ColorMap = {\n surface: { lightness: 96, saturation: 0.8 },\n border: {\n base: 'surface',\n lightness: ['-10', '-20'],\n saturation: 0.5,\n },\n};\n\nconst primaryTheme = defaultTheme.extend({\n colors: TINTED_SURFACE_OVERRIDE,\n});\nconst successTheme = defaultTheme.extend({\n hue: SUCCESS_HUE,\n colors: TINTED_SURFACE_OVERRIDE,\n});\nconst dangerTheme = defaultTheme.extend({\n hue: DANGER_HUE,\n colors: TINTED_SURFACE_OVERRIDE,\n});\nconst warningTheme = defaultTheme.extend({\n hue: WARNING_HUE,\n colors: TINTED_SURFACE_OVERRIDE,\n});\nconst noteTheme = defaultTheme.extend({\n hue: NOTE_HUE,\n colors: TINTED_SURFACE_OVERRIDE,\n});\n\n// ============================================================================\n// Special theme (fixed-mode, NOT inherited from defaultTheme)\n// ============================================================================\n\n/**\n * Standalone theme for `special`-variant components (hero CTAs, banners, etc.)\n * that intentionally sit on a dark surface regardless of the active scheme.\n *\n * Every token here is `mode: 'fixed'` so the resolved value is identical in\n * light, dark, and high-contrast. The shape is purpose-built (not a full\n * mirror of `defaultTheme`) — only what `SPECIAL_*_STYLES` in\n * `src/data/item-themes.ts` consumes is emitted.\n *\n * Token rundown:\n * - `surface` — dark L≈12 backdrop (same value as `#surface-inverse`).\n * - `accent-surface` / `accent-surface-2` / `accent-surface-3` —\n * brand-purple PRIMARY fill ramp (default → hover → pressed). Mirrors\n * the `#primary-accent-surface` / `-2` / `-3` ramp on the colored\n * themes so `SPECIAL_PRIMARY_STYLES.fill` can use the same shape.\n * - `accent-surface-hover` — legacy alias kept around for the\n * `#special-hover` color shortcut in `src/tokens/colors.ts`. Item\n * themes themselves no longer reference it.\n * - `accent-surface-text` — fixed white (= built-in `#white`), exposed\n * for explicit references.\n * - `accent-text` — dark-purple foreground readable on white. Used as\n * CLEAR-variant text on the always-white pill, and as the\n * pressed/focused border on the brand-purple primary fill. Matches the\n * legacy `#fixed-primary-text` alias (= `#primary-accent-surface-hover`).\n * - `accent-disabled-surface` / `accent-disabled-surface-text` —\n * brand-tinted disabled chip + label, contrast-driven against the fixed\n * dark `surface` so the disabled state is scheme-symmetric.\n */\nconst specialTheme = glaze(PURPLE_HUE, SEED_SATURATION);\n\nspecialTheme.colors({\n surface: { lightness: 12, saturation: 0.475, mode: 'fixed' },\n\n 'accent-surface-text': { lightness: 100, mode: 'fixed' },\n 'accent-surface': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [4.5, 7],\n mode: 'fixed',\n },\n 'accent-surface-2': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [5, 8],\n mode: 'fixed',\n },\n 'accent-surface-3': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [5.5, 9],\n mode: 'fixed',\n },\n 'accent-surface-hover': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [6, 8.5],\n mode: 'fixed',\n },\n 'accent-text': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [6, 8.5],\n mode: 'fixed',\n },\n\n 'accent-disabled-surface': {\n base: 'surface',\n lightness: '+1',\n saturation: 0.5,\n contrast: [1.4, 1.5],\n mode: 'fixed',\n },\n 'accent-disabled-surface-text': {\n base: 'accent-disabled-surface',\n lightness: '+1',\n saturation: 0.4,\n contrast: 1.51,\n mode: 'fixed',\n },\n});\n\n// ============================================================================\n// Palette composition\n// ============================================================================\n\n/**\n * Theme map for the palette.\n *\n * `purple` is the legacy alias for `primary` and resolves to identical tokens\n * (same theme instance, different prefix → no token-value collision).\n *\n * `default` is emitted with an empty prefix (custom map below), so its tokens\n * appear unprefixed (`#surface`, `#border`, …). All other themes are prefixed\n * with `<themeName>-`.\n */\nconst palette = glaze.palette({\n default: defaultTheme,\n primary: primaryTheme,\n purple: primaryTheme,\n success: successTheme,\n danger: dangerTheme,\n warning: warningTheme,\n note: noteTheme,\n special: specialTheme,\n});\n\n// ============================================================================\n// Tasty-formatted token export\n// ============================================================================\n\n/**\n * All Glaze-generated color tokens as a tasty `Styles` map.\n *\n * Keys use `#name` syntax; values are state maps:\n * '#surface': { '': 'okhsl(...)', '@dark': 'okhsl(...)', '@hc': 'okhsl(...)' }\n *\n * Spread into `useGlobalStyles('body', tokens)` (already wired through\n * `src/components/GlobalStyles.tsx`).\n */\nexport const PALETTE_TOKENS: Styles = palette.tasty({\n prefix: {\n default: '',\n primary: 'primary-',\n purple: 'purple-',\n success: 'success-',\n danger: 'danger-',\n warning: 'warning-',\n note: 'note-',\n special: 'special-',\n },\n}) as Styles;\n\n/** Re-exported for advanced consumers / tests. */\nexport {\n defaultTheme,\n primaryTheme,\n successTheme,\n dangerTheme,\n warningTheme,\n noteTheme,\n specialTheme,\n palette,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"palette.js","names":[],"sources":["../../src/tokens/palette.ts"],"sourcesContent":["import { glaze } from '@tenphi/glaze';\n\nimport type { ColorMap } from '@tenphi/glaze';\nimport type { Styles } from '@tenphi/tasty';\n\n/**\n * Glaze-generated color palette for the Cube UI Kit.\n *\n * Produces light, dark, and high-contrast color variants from a single\n * source of truth. Every color token is emitted as a tasty state map:\n *\n * '#surface': { '': 'okhsl(...)', '@dark': 'okhsl(...)', '@hc': 'okhsl(...)' }\n *\n * The `@dark` and `@hc` state aliases are wired up globally in\n * `src/components/Root.tsx` (see `setGlobalPredefinedStates`).\n */\n\n// ============================================================================\n// Hue / saturation seeds\n// ============================================================================\n\nconst PURPLE_HUE = 280.3;\nconst SUCCESS_HUE = 156.9;\nconst DANGER_HUE = 23.1;\nconst WARNING_HUE = 84.3;\nconst NOTE_HUE = 302.3;\n\n/** Seed saturation; per-color saturation factors below are 0–1 of this seed. */\nconst SEED_SATURATION = 80;\n\n// ============================================================================\n// Global Glaze configuration\n// ============================================================================\n\nglaze.configure({\n states: {\n dark: '@dark',\n highContrast: '@hc',\n },\n modes: {\n dark: true,\n highContrast: true,\n },\n});\n\n// ============================================================================\n// Default theme (neutral, primary in palette → exported unprefixed)\n// ============================================================================\n\nconst defaultTheme = glaze(PURPLE_HUE, SEED_SATURATION);\n\ndefaultTheme.colors({\n // ---- Surfaces (neutral, very low saturation) ----\n surface: { lightness: 100, saturation: 0.11 },\n 'surface-2': {\n base: 'surface',\n lightness: '-2',\n saturation: 0.15,\n inherit: false,\n },\n 'surface-3': {\n base: 'surface',\n lightness: '-4',\n saturation: 0.19,\n inherit: false,\n },\n 'surface-4': {\n base: 'surface',\n lightness: '-6',\n saturation: 0.2,\n inherit: false,\n },\n\n // ---- Text on surfaces ----\n // The darkest text token uses an *absolute* lightness anchored at the very\n // bottom of Glaze's lightness window (default `[10, 100]` for light /\n // `[15, 95]` for dark). A contrast-driven `surface-text` would top out near\n // L≈21 in light mode (because the solver only needs to *meet* the contrast\n // floor, then stops), leaving it noticeably softer than the legacy `#dark`\n // (OKHSL L=12). Setting `lightness: 2` (mode: 'auto', default) pins the\n // light-mode resolved value to L≈11.8 — pixel-equivalent to the legacy\n // `#dark` — and inverts in dark mode to L≈94 (cr≈13.7 vs the dark surface).\n // High-contrast pushes it all the way to the absolute extremes (L=2 light /\n // L=99 dark, cr≈20.8 / 20.5), unbounded by the normal lightness window.\n //\n // The softer variants below keep `lightness: '-1'` as a directional hint and\n // a numeric `contrast` ratio. Values are tuned so light-mode lightness lands\n // close to the legacy palette (`#dark-02` L=31, `#dark-03` L=49), so the\n // visual look in light mode is preserved while dark mode gets the proper\n // inverted ramp via the contrast solver.\n 'surface-text': {\n base: 'surface',\n lightness: 2,\n saturation: 0.475,\n },\n 'surface-text-soft': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.375,\n contrast: [9, 11],\n inherit: false,\n },\n 'surface-text-soft-2': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.24,\n contrast: [4.5, 5.5],\n inherit: false,\n },\n 'surface-2-text': {\n base: 'surface-2',\n lightness: 2,\n saturation: 0.475,\n inherit: false,\n },\n 'surface-2-text-soft': {\n base: 'surface-2',\n lightness: '-1',\n saturation: 0.375,\n contrast: [9, 11],\n inherit: false,\n },\n 'surface-3-text': {\n base: 'surface-3',\n lightness: 2,\n saturation: 0.475,\n inherit: false,\n },\n 'surface-3-text-soft': {\n base: 'surface-3',\n lightness: '-1',\n saturation: 0.375,\n contrast: [9, 11],\n inherit: false,\n },\n\n // ---- Other neutral UI primitives (default-only) ----\n border: {\n base: 'surface',\n lightness: ['-10', '-20'],\n saturation: 0.175,\n },\n placeholder: {\n base: 'surface',\n lightness: 67,\n saturation: 0.175,\n inherit: false,\n },\n focus: {\n base: 'surface',\n lightness: 71,\n saturation: 0.8625,\n inherit: false,\n },\n disabled: {\n lightness: 80.8,\n saturation: 0.4,\n inherit: false,\n },\n // Disabled fill chip + text — both adaptive (mode 'auto') and\n // *contrast-driven* against `surface` so the disabled state has the same\n // perceived intensity in light and dark schemes.\n //\n // The previous design relied on `#dark.04` (alpha tint) for the chip and\n // `#dark-04` (= `#placeholder`) for text. Because `#dark` is `#surface-text`\n // (anchored to absolute L=2 → flips to L=94 in dark), the resulting\n // composite was much more contrasting in dark mode (chip cr=1.04 → 1.51,\n // text cr=2.21 → 2.75 vs the chip), and combined with `color: '#white'` on\n // PRIMARY-type buttons text-on-chip jumped from cr=1.6 (washed) to cr=6.5\n // (fully readable) — the dark disabled state stopped looking disabled.\n //\n // With these contrast-driven tokens both schemes resolve to the same\n // ratios (chip ~1.4, text ~2.0 vs surface, text-on-chip ~1.4) so the\n // disabled appearance is identical in light, dark, and high-contrast.\n //\n // These two tokens are NEUTRAL — the chip has very low saturation and is\n // used by non-PRIMARY-style disabled states (secondary / outline / neutral\n // / clear / link / item). PRIMARY-style buttons (solid brand fill, white\n // label) use `accent-disabled-surface` + `accent-disabled-surface-text`\n // instead so the disabled chip stays brand-tinted per theme. Both tokens\n // therefore stay default-only (`inherit: false`) — the colored themes get\n // their own brand-tinted disabled chip via the inherited accent variants.\n 'disabled-surface': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.2,\n contrast: [1.1, 1.2],\n inherit: false,\n },\n 'disabled-surface-text': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.3,\n contrast: [2, 2.5],\n inherit: false,\n },\n\n // Fixed-mode \"always dark\" surface for elements that intentionally stay\n // inverted regardless of scheme (tooltips, code blocks, popovers with their\n // own dark theme, etc.). `mode: 'fixed'` bypasses the dark-scheme inversion\n // so the color reads as a dark surface in light, dark, and high-contrast.\n // Pair with `#white` (built-in) for foreground text.\n 'surface-inverse': {\n lightness: 12,\n saturation: 0.475,\n mode: 'fixed',\n inherit: false,\n },\n\n // ---- Accent system (theme-aware, inherited by colored themes) ----\n // Everything here is anchored to a fixed white \"accent-surface-text\" via\n // `mode: 'fixed'` + small *relative* lightness offsets, so accent colors\n // stay visually consistent across light/dark/high-contrast schemes (the\n // brand color does not flip). Contrast targets are explicit numeric ratios\n // — using 'AA'/'AAA' here would let the solver push the color far away\n // from its anchor in dark schemes, breaking the visual relationship\n // between `accent-surface` and `accent-text` (e.g. solid button bg vs.\n // its hover bg). All accent variants therefore share the same shape.\n 'accent-surface-text': { lightness: 100, mode: 'fixed' },\n 'accent-surface': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [4.5, 7],\n mode: 'fixed',\n },\n 'accent-surface-2': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [5, 8],\n mode: 'fixed',\n },\n 'accent-surface-3': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [5.5, 9],\n mode: 'fixed',\n },\n // Hover variant of `accent-surface` — a *fixed*-mode darker shade used as\n // the hover fill for solid PRIMARY-type buttons. Anchored to the same\n // accent-surface-text so it stays in the same hue family. Numeric contrast\n // is tuned so the hover shade lands near today's light-mode \"darker\n // purple\" (≈L=44 light / ≈L=40 dark), giving a visible darkening in BOTH\n // schemes (~7–9 OKHSL lightness points below `accent-surface`). Using a\n // dedicated fixed token avoids the trap of reusing `accent-text` (which\n // is `mode: 'auto'` and inverts direction in dark mode).\n 'accent-surface-hover': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [6, 10],\n mode: 'fixed',\n },\n // Border for accent surfaces — mirrors the default-theme `border` shape\n // (a relative lightness step down from its surface base) but anchored to the\n // fixed accent surface so it stays in the brand hue family and does not flip\n // in dark mode. Used for outlines/dividers on top of `accent-surface`.\n 'accent-surface-border': {\n base: 'accent-surface',\n lightness: '+1',\n contrast: [1.4, 1.8],\n mode: 'fixed',\n },\n // Saturated foreground variants. Anchored to `surface` (NOT `accent-surface`)\n // with `mode: 'auto'` so they adapt with the scheme: in dark mode the solver\n // pushes them lighter to stay readable on the dark surface. Anchoring to the\n // brand fill instead would only enforce contrast against that fill — leaving\n // the dark-mode color washed out against the actual surface they sit on\n // (e.g. SECONDARY button labels). The numeric `contrast` value is the\n // achieved-light-mode ratio under the previous chain, so the visual\n // appearance in light mode is preserved while dark mode is brought up to\n // the same perceived contrast.\n 'accent-text': {\n base: 'surface',\n lightness: '-1',\n saturation: 1,\n contrast: [6.4, 10],\n },\n // Softer adaptive companion to `accent-text` for \"secondary\" foregrounds\n // (LINK base color, subdued labels, etc.). Same anchor + saturation as\n // `accent-text` but a relaxed AA-only contrast floor (4.5/7) so it sits\n // visibly less prominent than the main brand text. Critically, it stays\n // `mode: 'auto'` (default) — unlike the fixed `accent-surface` brand color,\n // which would collapse to cr≈3 against the dark surface and break AA. The\n // adaptive lightness keeps cr≥4.5 in BOTH light and dark schemes.\n 'accent-text-soft': {\n base: 'surface',\n lightness: '-1',\n saturation: 1,\n contrast: [4.5, 7],\n },\n 'accent-icon': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.9375,\n contrast: [3.2, 5],\n },\n\n // Brand-tinted disabled chip + label for PRIMARY-style buttons (solid brand\n // fill, white text). Mirrors the shape of the neutral `disabled-surface` /\n // `disabled-surface-text` pair (`mode: 'auto'`, contrast-driven against\n // `surface`) so the disabled state is scheme-symmetric — chip cr ≈ 1.4 vs\n // surface, label cr ≈ 2.8–3.2 vs surface (≈ 2.1 text-on-chip) in BOTH\n // light and dark. Saturation is bumped up so the chip reads as a *muted\n // brand* color rather than a fully neutral grey, preserving the brand\n // identity even in the disabled state. Inherited per theme, so each colored\n // theme automatically emits `<theme>-accent-disabled-surface` and\n // `<theme>-accent-disabled-surface-text` (e.g. `#danger-accent-disabled-surface`).\n 'accent-disabled-surface': {\n base: 'surface',\n lightness: '-1',\n saturation: 0.5,\n contrast: [1.4, 1.5],\n },\n 'accent-disabled-surface-text': {\n base: 'accent-disabled-surface',\n lightness: '+1',\n saturation: 0.4,\n contrast: 1.51,\n mode: 'fixed',\n },\n\n // ---- Code syntax highlighting (PrismCode) ----\n // A small palette of *adaptive* colored tokens for syntax highlighting.\n // Each token: `mode: 'auto'` (default) + `base: 'surface'` + a numeric\n // `contrast` floor of 4.5 (= WCAG AA) so every token reads against `#surface`\n // in light, dark, and high-contrast schemes alike. Hues mirror the\n // long-standing PrismCode reference (pink keywords / pink functions /\n // orange strings / green numbers / gray comments). `code-attribute` keeps\n // a cyan hue for HTML attribute names / CSS properties / selectors — not\n // exercised in the SQL reference but useful in other languages. Diff\n // insertion / deletion re-use the existing `success-*` / `danger-*` ramps.\n 'code-comment': {\n base: 'surface',\n hue: 280,\n saturation: 0.1,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n 'code-punctuation': {\n base: 'surface',\n hue: 348,\n saturation: 0.4,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n 'code-keyword': {\n base: 'surface',\n hue: 348,\n saturation: 1,\n lightness: '-1',\n contrast: [5, 7.5],\n inherit: false,\n },\n 'code-string': {\n base: 'surface',\n hue: PURPLE_HUE,\n saturation: 1,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n 'code-number': {\n base: 'surface',\n hue: 156,\n saturation: 0.9,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n 'code-function': {\n base: 'surface',\n hue: 348,\n saturation: 1,\n lightness: '-1',\n contrast: [5, 7.5],\n inherit: false,\n },\n 'code-attribute': {\n base: 'surface',\n hue: 200,\n saturation: 1,\n lightness: '-1',\n contrast: [4.5, 7],\n inherit: false,\n },\n\n // ---- Loading-animation cube faces ----\n 'loading-face-1': {\n base: 'surface',\n lightness: 98,\n saturation: 0.3,\n contrast: [1.04, 1.5],\n inherit: false,\n },\n 'loading-face-2': {\n base: 'surface',\n lightness: 91,\n saturation: 0.62,\n contrast: [1.24, 2.5],\n inherit: false,\n },\n 'loading-face-3': {\n base: 'surface',\n lightness: 79,\n saturation: 0.66,\n contrast: [1.75, 4],\n inherit: false,\n },\n\n // ---- Shadows (default-only) ----\n 'shadow-sm': {\n type: 'shadow',\n bg: 'surface',\n fg: 'surface-text',\n intensity: 5,\n inherit: false,\n },\n 'shadow-md': {\n type: 'shadow',\n bg: 'surface',\n fg: 'surface-text',\n intensity: 10,\n inherit: false,\n },\n 'shadow-lg': {\n type: 'shadow',\n bg: 'surface',\n fg: 'surface-text',\n intensity: 15,\n inherit: false,\n },\n\n // Backdrop overlay (translucent)\n overlay: { lightness: 10, opacity: 0.5, inherit: false },\n});\n\n// ============================================================================\n// Colored themes\n// ============================================================================\n\n/**\n * Per-colored-theme overrides on top of `defaultTheme`:\n * - `surface` — bumped saturation so the banner bg is visibly tinted.\n * - `border` — bumped saturation so OUTLINE-variant borders pick up the\n * theme hue (used by `#<theme>-border` in `item-themes.ts`). Mirrors the\n * default-theme `border` shape (`base: 'surface'`, lightness window) but\n * with higher saturation. Glaze's `extend({ colors })` redefines each\n * listed color from scratch, so we restate the full definition here.\n */\nconst TINTED_SURFACE_OVERRIDE: ColorMap = {\n surface: { lightness: 96, saturation: 0.8 },\n border: {\n base: 'surface',\n lightness: ['-10', '-20'],\n saturation: 0.5,\n },\n};\n\nconst primaryTheme = defaultTheme.extend({\n colors: TINTED_SURFACE_OVERRIDE,\n});\nconst successTheme = defaultTheme.extend({\n hue: SUCCESS_HUE,\n colors: TINTED_SURFACE_OVERRIDE,\n});\nconst dangerTheme = defaultTheme.extend({\n hue: DANGER_HUE,\n colors: TINTED_SURFACE_OVERRIDE,\n});\nconst warningTheme = defaultTheme.extend({\n hue: WARNING_HUE,\n colors: TINTED_SURFACE_OVERRIDE,\n});\nconst noteTheme = defaultTheme.extend({\n hue: NOTE_HUE,\n colors: TINTED_SURFACE_OVERRIDE,\n});\n\n// ============================================================================\n// Special theme (fixed-mode, NOT inherited from defaultTheme)\n// ============================================================================\n\n/**\n * Standalone theme for `special`-variant components (hero CTAs, banners, etc.)\n * that intentionally sit on a dark surface regardless of the active scheme.\n *\n * Every token here is `mode: 'fixed'` so the resolved value is identical in\n * light, dark, and high-contrast. The shape is purpose-built (not a full\n * mirror of `defaultTheme`) — only what `SPECIAL_*_STYLES` in\n * `src/data/item-themes.ts` consumes is emitted.\n *\n * Token rundown:\n * - `surface` — dark L≈12 backdrop (same value as `#surface-inverse`).\n * - `accent-surface` / `accent-surface-2` / `accent-surface-3` —\n * brand-purple PRIMARY fill ramp (default → hover → pressed). Mirrors\n * the `#primary-accent-surface` / `-2` / `-3` ramp on the colored\n * themes so `SPECIAL_PRIMARY_STYLES.fill` can use the same shape.\n * - `accent-surface-hover` — legacy alias kept around for the\n * `#special-hover` color shortcut in `src/tokens/colors.ts`. Item\n * themes themselves no longer reference it.\n * - `accent-surface-text` — fixed white (= built-in `#white`), exposed\n * for explicit references.\n * - `accent-text` — dark-purple foreground readable on white. Used as\n * CLEAR-variant text on the always-white pill, and as the\n * pressed/focused border on the brand-purple primary fill. Matches the\n * legacy `#fixed-primary-text` alias (= `#primary-accent-surface-hover`).\n * - `accent-disabled-surface` / `accent-disabled-surface-text` —\n * brand-tinted disabled chip + label, contrast-driven against the fixed\n * dark `surface` so the disabled state is scheme-symmetric.\n */\nconst specialTheme = glaze(PURPLE_HUE, SEED_SATURATION);\n\nspecialTheme.colors({\n surface: { lightness: 12, saturation: 0.475, mode: 'fixed' },\n\n 'accent-surface-text': { lightness: 100, mode: 'fixed' },\n 'accent-surface': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [4.5, 7],\n mode: 'fixed',\n },\n 'accent-surface-2': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [5, 8],\n mode: 'fixed',\n },\n 'accent-surface-3': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [5.5, 9],\n mode: 'fixed',\n },\n 'accent-surface-border': {\n base: 'accent-surface',\n lightness: '+1',\n contrast: [1.4, 1.8],\n mode: 'fixed',\n },\n 'accent-surface-hover': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [6, 8.5],\n mode: 'fixed',\n },\n 'accent-text': {\n base: 'accent-surface-text',\n lightness: '-1',\n contrast: [6, 8.5],\n mode: 'fixed',\n },\n\n 'accent-disabled-surface': {\n base: 'surface',\n lightness: '+1',\n saturation: 0.5,\n contrast: [1.4, 1.5],\n mode: 'fixed',\n },\n 'accent-disabled-surface-text': {\n base: 'accent-disabled-surface',\n lightness: '+1',\n saturation: 0.4,\n contrast: 1.51,\n mode: 'fixed',\n },\n});\n\n// ============================================================================\n// Palette composition\n// ============================================================================\n\n/**\n * Theme map for the palette.\n *\n * `purple` is the legacy alias for `primary` and resolves to identical tokens\n * (same theme instance, different prefix → no token-value collision).\n *\n * `default` is emitted with an empty prefix (custom map below), so its tokens\n * appear unprefixed (`#surface`, `#border`, …). All other themes are prefixed\n * with `<themeName>-`.\n */\nconst palette = glaze.palette({\n default: defaultTheme,\n primary: primaryTheme,\n purple: primaryTheme,\n success: successTheme,\n danger: dangerTheme,\n warning: warningTheme,\n note: noteTheme,\n special: specialTheme,\n});\n\n// ============================================================================\n// Tasty-formatted token export\n// ============================================================================\n\n/**\n * All Glaze-generated color tokens as a tasty `Styles` map.\n *\n * Keys use `#name` syntax; values are state maps:\n * '#surface': { '': 'okhsl(...)', '@dark': 'okhsl(...)', '@hc': 'okhsl(...)' }\n *\n * Spread into `useGlobalStyles('body', tokens)` (already wired through\n * `src/components/GlobalStyles.tsx`).\n */\nexport const PALETTE_TOKENS: Styles = palette.tasty({\n prefix: {\n default: '',\n primary: 'primary-',\n purple: 'purple-',\n success: 'success-',\n danger: 'danger-',\n warning: 'warning-',\n note: 'note-',\n special: 'special-',\n },\n}) as Styles;\n\n/** Re-exported for advanced consumers / tests. */\nexport {\n defaultTheme,\n primaryTheme,\n successTheme,\n dangerTheme,\n warningTheme,\n noteTheme,\n specialTheme,\n palette,\n};\n"],"mappings":"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"}
|
package/dist/tokens/shadows.js
CHANGED
package/dist/tokens/sizes.js
CHANGED
package/dist/tokens/spacing.js
CHANGED
package/dist/utils/is-dev-env.js
CHANGED
package/dist/utils/modules.js
CHANGED
package/dist/utils/promise.js
CHANGED
package/dist/utils/raf.js
CHANGED
package/dist/utils/random.js
CHANGED
package/dist/utils/range.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.142.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "./mergeProps.js";
|
|
3
3
|
import { Children, cloneElement, createContext, useContext, useMemo } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.142.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
|
|
2
2
|
import { chain } from "./chain.js";
|
|
3
3
|
import { forwardRefWithGenerics } from "./forwardRefWithGenerics.js";
|
|
4
4
|
import { isTextOnly } from "./isTextOnly.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.142.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
|
|
2
2
|
//#region src/utils/react/nullableValue.ts
|
|
3
3
|
function castNullableStringValue(props) {
|
|
4
4
|
return castNullableField(props, ["value", "defaultValue"], "string", (v) => String(v));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.142.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
|
|
2
2
|
import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/utils/react/useEventBus.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.142.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "./useLayoutEffect.js";
|
|
3
3
|
import { useEffect, useRef, useState } from "react";
|
|
4
4
|
import { useSSRSafeId } from "@react-aria/ssr";
|
package/dist/utils/selection.js
CHANGED
package/dist/utils/styles.js
CHANGED
package/dist/utils/tree.js
CHANGED
package/dist/utils/warnings.js
CHANGED
package/dist/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.142.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.142.4 | Cube Dev Team */
|
|
2
2
|
//#region src/version.ts
|
|
3
|
-
const VERSION = "0.142.
|
|
4
|
-
const TASTY_VERSION = "2.6.
|
|
3
|
+
const VERSION = "0.142.4";
|
|
4
|
+
const TASTY_VERSION = "2.6.4";
|
|
5
5
|
if (typeof window !== "undefined") {
|
|
6
6
|
const version = VERSION;
|
|
7
7
|
const tastyVersion = TASTY_VERSION;
|
package/docs/tasty/pipeline.md
CHANGED
|
@@ -179,38 +179,64 @@ The condition tree representation enables:
|
|
|
179
179
|
|
|
180
180
|
### What It Does
|
|
181
181
|
|
|
182
|
-
Collapses parsed entries that share the same value. Only **non-default** entries are merged — an entry with the default state (`''` → `TrueCondition`) is never merged with a non-default entry.
|
|
182
|
+
Collapses parsed entries that share the same value when doing so provably preserves the authored cascade. Only **non-default** entries are merged — an entry with the default state (`''` → `TrueCondition`) is never merged with a non-default entry.
|
|
183
183
|
|
|
184
184
|
### How It Works
|
|
185
185
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
186
|
+
Entries arrive sorted highest-priority-first. For each entry the pass walks already-emitted entries from most-recent backward, looking for the nearest same-value entry where merging is safe. If found, the two entries collapse into one (priority becomes the maximum of the pair, condition becomes the simplified `OR`). Default entries are emitted as singletons and never participate in a merge.
|
|
187
|
+
|
|
188
|
+
### The Safety Condition
|
|
189
|
+
|
|
190
|
+
Merging two same-value entries with conditions `C_h` (higher priority) and `C_l` (lower priority) lifts the lower one up to `p_h` and changes the higher-priority "blocker" for every intermediate-priority entry from `!C_h` to `!(C_h | C_l) = !C_h & !C_l`. The added `!C_l` constraint can incorrectly block an intermediate entry that should have won.
|
|
191
|
+
|
|
192
|
+
The merge is safe iff for every entry `e_m` strictly between them in priority with a different value,
|
|
193
|
+
|
|
194
|
+
simplify(C_m & C_l & !C_h) = FALSE
|
|
195
|
+
|
|
196
|
+
i.e. there is no scenario where the intermediate state could have matched, the lower same-value entry would also have matched, and the higher one would not. This is the only way the merge could leak through and shadow the intermediate state.
|
|
191
197
|
|
|
192
198
|
### Why
|
|
193
199
|
|
|
194
|
-
Without this
|
|
200
|
+
Without this pass a value map like `{ '@dark': 'red', '@dark & @hc': 'red' }` would create two separate entries that later produce two CSS rules with identical output. Merging before exclusive building keeps the exclusive condition algebra small and avoids duplicate CSS. The safety check ensures we never break the cascade in service of this optimization.
|
|
195
201
|
|
|
196
|
-
**Why defaults are kept separate:** merging `TRUE | X` collapses to `TRUE`, destroying X's participation in the exclusive cascade. Intermediate-priority states would then lose their `:not(X)` negation, producing overlapping CSS rules.
|
|
202
|
+
**Why defaults are kept separate:** merging `TRUE | X` collapses to `TRUE`, destroying X's participation in the exclusive cascade. Intermediate-priority states would then lose their `:not(X)` negation, producing overlapping CSS rules.
|
|
197
203
|
|
|
198
|
-
### Example
|
|
204
|
+
### Example — Safe merge (still collapses)
|
|
199
205
|
|
|
200
206
|
```typescript
|
|
201
|
-
//
|
|
207
|
+
// { '@dark & @hc': 'red', '@dark': 'red' }
|
|
208
|
+
// Input entries (highest priority first), no intermediate different-value entry
|
|
202
209
|
[
|
|
203
|
-
{ stateKey: '@dark & @hc', value: 'red', condition: dark & hc },
|
|
204
|
-
{ stateKey: '@dark', value: 'red', condition: dark
|
|
210
|
+
{ stateKey: '@dark & @hc', value: 'red', condition: dark & hc, priority: 1 },
|
|
211
|
+
{ stateKey: '@dark', value: 'red', condition: dark, priority: 0 },
|
|
205
212
|
]
|
|
206
213
|
|
|
207
|
-
// Output: one merged entry
|
|
214
|
+
// Safe: no intermediates. Output: one merged entry
|
|
208
215
|
[
|
|
209
216
|
{ stateKey: '@dark & @hc | @dark', value: 'red',
|
|
210
|
-
condition: simplify((dark & hc) | dark) = dark }
|
|
217
|
+
condition: simplify((dark & hc) | dark) = dark, priority: 1 }
|
|
211
218
|
]
|
|
212
219
|
```
|
|
213
220
|
|
|
221
|
+
The compound dark/HC dedup pattern `{ '': light, '@dark': dark, '@hc': hc, '@dark & @hc': dark }` also collapses cleanly because `@hc & @dark & !(@dark & @hc)` simplifies to FALSE — the intermediate `@hc` is structurally blocked by the contradiction.
|
|
222
|
+
|
|
223
|
+
### Example — Unsafe merge (must NOT collapse)
|
|
224
|
+
|
|
225
|
+
```typescript
|
|
226
|
+
// { hovered: 'red', pressed: 'blue', disabled: 'red' }
|
|
227
|
+
// Authored cascade: disabled > pressed > hovered.
|
|
228
|
+
// Merging hovered (priority 0) with disabled (priority 2) would lift
|
|
229
|
+
// hovered to priority 2 and rewrite `pressed`'s exclusive from
|
|
230
|
+
// `pressed & !disabled` to `pressed & !disabled & !hovered`, making
|
|
231
|
+
// `pressed + hovered` resolve to red instead of blue.
|
|
232
|
+
|
|
233
|
+
// `simplify(pressed & hovered & !disabled)` is not FALSE — three
|
|
234
|
+
// independent modifiers can all be active — so the entries are kept
|
|
235
|
+
// separate. Stage 6 `mergeByValue` will later combine the two red
|
|
236
|
+
// CSS rules into one selector group, but only after the cascade is
|
|
237
|
+
// correctly resolved.
|
|
238
|
+
```
|
|
239
|
+
|
|
214
240
|
---
|
|
215
241
|
|
|
216
242
|
## Stage 2a: Expand User OR Branches
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cube-dev/ui-kit",
|
|
3
|
-
"version": "0.142.
|
|
3
|
+
"version": "0.142.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "UIKit for Cube Projects",
|
|
6
6
|
"repository": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@tabler/icons-react": "^3.31.0",
|
|
50
50
|
"@tanstack/react-virtual": "^3.13.12",
|
|
51
51
|
"@tenphi/glaze": "0.11.1",
|
|
52
|
-
"@tenphi/tasty": "2.6.
|
|
52
|
+
"@tenphi/tasty": "2.6.4",
|
|
53
53
|
"clipboard-copy": "^4.0.1",
|
|
54
54
|
"clsx": "^1.1.1",
|
|
55
55
|
"diff": "^8.0.3",
|