@cube-dev/ui-kit 0.0.0-canary-a2deb22 → 0.0.0-canary-e397738
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/_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 +9 -30
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +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/MenuTrigger.js.map +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-action.js.map +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 +4 -4
- package/dist/components/content/CopySnippet/CopySnippet.js.map +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 +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.d.ts +0 -1
- package/dist/components/content/PrismCode/PrismCode.js +2 -7
- package/dist/components/content/PrismCode/PrismCode.js.map +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.d.ts +7 -7
- 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/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +2 -2
- package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.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/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/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.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/SearchComboBox/SearchComboBox.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +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/Board/Board.js +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/WidgetHost.js +1 -1
- package/dist/components/layout/Board/board-context.js +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/use-board-layout.js +1 -1
- package/dist/components/layout/Board/use-board-registry.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 +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.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.d.ts +3 -4
- package/dist/index.js +4 -5
- package/dist/index.js.map +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.d.ts +7 -2
- package/dist/tokens/colors.js +8 -16
- package/dist/tokens/colors.js.map +1 -1
- package/dist/tokens/index.d.ts +17 -5
- package/dist/tokens/index.js +13 -23
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/palette.js +124 -161
- 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.d.ts +0 -1
- package/dist/tokens/typography.js +1 -29
- package/dist/tokens/typography.js.map +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/Typography.md +1 -1
- package/docs/Usage.md +0 -10
- package/docs/components/content/CopySnippet.md +1 -6
- package/docs/components/content/PrismCode.md +2 -3
- package/docs/glaze/api.md +414 -951
- package/docs/glaze/methodology.md +212 -512
- package/docs/glaze/migration.md +49 -127
- package/package.json +4 -4
- package/dist/tokens/lazy-styles.js +0 -33
- package/dist/tokens/lazy-styles.js.map +0 -1
- package/dist/tokens/palette.d.ts +0 -15
- package/docs/Colors.md +0 -77
- package/docs/glaze/okhst.md +0 -170
package/docs/glaze/migration.md
CHANGED
|
@@ -1,44 +1,25 @@
|
|
|
1
1
|
# Migration & Integration
|
|
2
2
|
|
|
3
|
-
How to
|
|
4
|
-
Glaze, then export the resulting palette in the shape your app and design tools
|
|
5
|
-
consume.
|
|
3
|
+
How to plug a Glaze palette into an existing app — exporting tokens in the right shape, mapping prefixes to the names your components already consume, and migrating off a legacy color system without breaking layout, dark-mode wiring, or muscle-memory tokens.
|
|
6
4
|
|
|
7
|
-
If you're starting from scratch, see [methodology.md](methodology.md) first — that's about
|
|
8
|
-
|
|
9
|
-
## Contents
|
|
10
|
-
|
|
11
|
-
- [Choosing an export](#choosing-an-export)
|
|
12
|
-
- [Wiring exports into the app](#wiring-exports-into-the-app)
|
|
13
|
-
- [Prefix map strategies](#prefix-map-strategies)
|
|
14
|
-
- [Migrating an existing color system](#migrating-from-an-existing-color-system)
|
|
15
|
-
- [Common pitfalls](#common-pitfalls)
|
|
5
|
+
If you're starting from scratch, see [methodology.md](methodology.md) first — that's about *designing* the palette. This doc is about *consuming* it.
|
|
16
6
|
|
|
17
7
|
## Choosing an export
|
|
18
8
|
|
|
19
|
-
Glaze
|
|
20
|
-
|
|
21
|
-
1. **Authoring snapshots** — `theme.export(override?)` / `token.export(override?)` / `palette.export(override?)`, restored with `glaze.themeFrom` / `colorFrom` / `paletteFrom`. These carry definitions, relations, and a config freeze taken at export time (`kind` + `version`). Live instances keep only a sparse local override; omitted global fields track `configure()` until export.
|
|
22
|
-
2. **Resolved output** — the seven shapes below. These are color strings / design-token documents for apps and tools, **not** restorable as authoring config.
|
|
23
|
-
|
|
24
|
-
Glaze emits the same resolved colors in seven shapes. Pick one based on your
|
|
25
|
-
renderer or tooling.
|
|
9
|
+
Glaze emits the same resolved colors in four shapes. Pick one based on your renderer.
|
|
26
10
|
|
|
27
|
-
| Method
|
|
28
|
-
|
|
29
|
-
| `palette.tasty(options?)`
|
|
30
|
-
| `palette.tokens(options?)`
|
|
31
|
-
| `palette.css(options?)`
|
|
32
|
-
| `palette.json(options?)`
|
|
33
|
-
| `palette.dtcg(options?)` | `{ light: { name: { $type, $value } }, dark: { ... }, ... }` | W3C [DTCG 2025.10](https://www.designtokens.org/) `.tokens.json` — Figma, Tokens Studio, Style Dictionary, Terrazzo, Penpot. One document per scheme. |
|
|
34
|
-
| `palette.dtcgResolver(options?)` | `{ version, sets, modifiers, resolutionOrder }` | W3C DTCG **Resolver-Module** — a single document describing every scheme variant as `sets` + a `scheme` modifier with a context per variant. For resolver tools such as Dispersa. |
|
|
35
|
-
| `palette.tailwind(options?)` | `'@theme { --color-*: ... } .dark { ... } ...'` | Tailwind CSS v4. A single ready-to-paste `@theme` block plus dark / high-contrast overrides. |
|
|
11
|
+
| Method | Output shape | Use it for |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `palette.tasty(options?)` | `{ '#name': { '': value, '@dark': value, '@hc': value } }` | The [Tasty](https://tasty.style/docs) style system. Single object, state aliases keyed inside each token. |
|
|
14
|
+
| `palette.tokens(options?)` | `{ light: { name: value }, dark: { name: value }, ... }` | Most CSS-in-JS systems. Per-variant flat maps, easy to feed into a `:root { ... }` selector via your framework's globals. |
|
|
15
|
+
| `palette.css(options?)` | `{ light: '--name-color: rgb(...);', dark: '...', ... }` | Framework-free CSS / static stylesheets. Variant-grouped CSS custom property strings ready to wrap in `:root` and `prefers-color-scheme` queries. |
|
|
16
|
+
| `palette.json(options?)` | `{ themeName: { name: { light, dark, ... } } }` | Tooling, JSON pipelines, design-token exporters (Style Dictionary, etc.). |
|
|
36
17
|
|
|
37
|
-
`
|
|
18
|
+
All four accept `format` (`'okhsl' \| 'rgb' \| 'hsl' \| 'oklch'`). `tokens()`, `tasty()`, and `json()` also accept `modes` (`{ dark, highContrast }`). `css()` always returns all four strings (`light`, `dark`, `lightContrast`, `darkContrast`). See [api.md → Palette](api.md#palette) for full options.
|
|
38
19
|
|
|
39
20
|
## Wiring exports into the app
|
|
40
21
|
|
|
41
|
-
###
|
|
22
|
+
### Tasty
|
|
42
23
|
|
|
43
24
|
Spread the result of `palette.tasty()` into a global style call:
|
|
44
25
|
|
|
@@ -47,9 +28,7 @@ import type { Styles } from '@tenphi/tasty';
|
|
|
47
28
|
import { useGlobalStyles } from '@tenphi/tasty';
|
|
48
29
|
import { tastyStatic } from '@tenphi/tasty/static';
|
|
49
30
|
|
|
50
|
-
export const PALETTE_TOKENS = palette.tasty({
|
|
51
|
-
/* prefix map */
|
|
52
|
-
}) as Styles;
|
|
31
|
+
export const PALETTE_TOKENS = palette.tasty({ /* prefix map */ }) as Styles;
|
|
53
32
|
|
|
54
33
|
// In your root component:
|
|
55
34
|
useGlobalStyles('body', PALETTE_TOKENS);
|
|
@@ -58,14 +37,11 @@ useGlobalStyles('body', PALETTE_TOKENS);
|
|
|
58
37
|
tastyStatic('body', PALETTE_TOKENS);
|
|
59
38
|
```
|
|
60
39
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
If you'd rather drive the schemes from custom aliases (e.g. a manual toggle that also falls back to the OS preference), set your own [`glaze.configure({ states })`](api.md#configuration) and register what those states _mean_:
|
|
40
|
+
For the `@dark` / `@hc` state aliases to do anything, your app needs to register what those states *mean*:
|
|
64
41
|
|
|
65
42
|
```ts
|
|
66
43
|
import { setGlobalPredefinedStates } from '@tenphi/tasty';
|
|
67
44
|
|
|
68
|
-
// glaze.configure({ states: { dark: '@dark', highContrast: '@hc' } });
|
|
69
45
|
setGlobalPredefinedStates({
|
|
70
46
|
'@dark':
|
|
71
47
|
'@root(schema=dark) | (!@root(schema) & @media(prefers-color-scheme: dark))',
|
|
@@ -76,7 +52,7 @@ setGlobalPredefinedStates({
|
|
|
76
52
|
|
|
77
53
|
The state names here must match the `states` you set in [`glaze.configure({ states })`](api.md#configuration).
|
|
78
54
|
|
|
79
|
-
You can also register the tokens as a
|
|
55
|
+
You can also register the tokens as a Tasty recipe instead of spreading them globally:
|
|
80
56
|
|
|
81
57
|
```ts
|
|
82
58
|
import { configure, tasty } from '@tenphi/tasty';
|
|
@@ -105,65 +81,27 @@ const stylesheet = `
|
|
|
105
81
|
Each property name is `--<prefix><name>-color` by default. Override the suffix:
|
|
106
82
|
|
|
107
83
|
```ts
|
|
108
|
-
palette.css({ suffix: '' });
|
|
109
|
-
palette.css({ format: 'oklch' });
|
|
84
|
+
palette.css({ suffix: '' }); // → '--surface: rgb(...);'
|
|
85
|
+
palette.css({ format: 'oklch' }); // → '--surface-color: oklch(...);'
|
|
110
86
|
```
|
|
111
87
|
|
|
112
88
|
### Framework-agnostic JSON
|
|
113
89
|
|
|
114
90
|
```ts
|
|
115
91
|
const data = palette.json();
|
|
116
|
-
// → { primary: { surface: { light: '
|
|
92
|
+
// → { primary: { surface: { light: 'okhsl(...)', dark: 'okhsl(...)' } }, ... }
|
|
117
93
|
```
|
|
118
94
|
|
|
119
95
|
Feed into your tooling pipeline. Each color is grouped by theme name, then by token name, then by variant — no prefix logic to undo.
|
|
120
96
|
|
|
121
|
-
### W3C DTCG (`.tokens.json`)
|
|
122
|
-
|
|
123
|
-
```ts
|
|
124
|
-
import { writeFileSync } from 'node:fs';
|
|
125
|
-
const dtcg = palette.dtcg();
|
|
126
|
-
|
|
127
|
-
writeFileSync('tokens.light.tokens.json', JSON.stringify(dtcg.light, null, 2));
|
|
128
|
-
if (dtcg.dark) {
|
|
129
|
-
writeFileSync('tokens.dark.tokens.json', JSON.stringify(dtcg.dark, null, 2));
|
|
130
|
-
}
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Each document is a spec-conformant token tree. One file per scheme is the most tool-compatible convention — Style Dictionary treats them as themes, Tokens Studio as sets, and Figma as variable modes. Use `colorSpace: 'oklch'` for wide-gamut, Glaze-native values (no `hex`); the default `'srgb'` emits components plus a `hex` hint that every reader understands. Feed the files straight into Style Dictionary v4+, Tokens Studio, or any DTCG-compatible tool — no Glaze-specific transform needed.
|
|
134
|
-
|
|
135
|
-
### W3C DTCG Resolver-Module (single document)
|
|
136
|
-
|
|
137
|
-
When you want **one file** describing every scheme variant — for a resolver tool such as [Dispersa](https://github.com/dispersa-core/dispersa) — use `dtcgResolver()` instead of `dtcg()`:
|
|
138
|
-
|
|
139
|
-
```ts
|
|
140
|
-
import { writeFileSync } from 'node:fs';
|
|
141
|
-
const resolver = palette.dtcgResolver({ modes: { highContrast: true } });
|
|
142
|
-
|
|
143
|
-
writeFileSync('resolver.json', JSON.stringify(resolver, null, 2));
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
The document places the light tokens in `sets.base.sources[0]` (the default context) and emits a single `scheme` modifier with a context per variant (`light` / `dark` / `lightContrast` / `darkContrast`). Each non-default context holds that variant's exact resolved tokens — Glaze resolves `darkContrast` independently, so the four-context shape keeps every value correct (two independent modifiers would compose additively and produce wrong dark + high-contrast values). Rename the set, modifier, or contexts via `setName` / `modifierName` / `contextNames` if your resolver expects different labels. Prefer `dtcg()` when you need maximum per-file tool compatibility; prefer `dtcgResolver()` when a resolver tool consumes the document for you.
|
|
147
|
-
|
|
148
|
-
### Tailwind CSS v4
|
|
149
|
-
|
|
150
|
-
```ts
|
|
151
|
-
const css = palette.tailwind();
|
|
152
|
-
// Write to your CSS entry, or paste into a `@import "tailwindcss"` stylesheet:
|
|
153
|
-
// @theme { --color-primary-surface: oklch(...); ... }
|
|
154
|
-
// .dark { --color-primary-surface: oklch(...); ... }
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
The `--color-*` namespace makes every color available as `bg-*` / `text-*` / `border-*`. Drive dark mode from the OS preference instead of a class with `darkSelector: '@media (prefers-color-scheme: dark)'` (it nests `:root` automatically). High-contrast overrides land under `.high-contrast` and `.dark.high-contrast` by default; both are omitted unless `modes.highContrast` is enabled.
|
|
158
|
-
|
|
159
97
|
## Prefix map strategies
|
|
160
98
|
|
|
161
|
-
`palette.tokens()` / `tasty()` / `css()`
|
|
99
|
+
`palette.tokens()` / `tasty()` / `css()` accept a `prefix` option:
|
|
162
100
|
|
|
163
|
-
| Value
|
|
164
|
-
|
|
165
|
-
| `true` (default)
|
|
166
|
-
| `false`
|
|
101
|
+
| Value | Result |
|
|
102
|
+
|---|---|
|
|
103
|
+
| `true` (default) | Every theme prefixes its tokens with `<themeName>-`. |
|
|
104
|
+
| `false` | No prefixes. Colliding keys produce a `console.warn`; first-write wins. |
|
|
167
105
|
| `Record<string, string>` | Per-theme prefix overrides. Themes not listed fall back to `<themeName>-`. |
|
|
168
106
|
|
|
169
107
|
The most common production pattern: **default theme unprefixed, every other theme prefixed with its name**:
|
|
@@ -174,20 +112,15 @@ palette.tasty({
|
|
|
174
112
|
default: '',
|
|
175
113
|
primary: 'primary-',
|
|
176
114
|
success: 'success-',
|
|
177
|
-
danger:
|
|
115
|
+
danger: 'danger-',
|
|
178
116
|
warning: 'warning-',
|
|
179
|
-
note:
|
|
117
|
+
note: 'note-',
|
|
180
118
|
},
|
|
181
119
|
});
|
|
182
120
|
```
|
|
183
121
|
|
|
184
122
|
This makes neutral tokens consume as `#surface`, `#border`, `#disabled-surface` (no theme namespace) while status colors live under `#danger-surface`, `#success-accent-text`, etc.
|
|
185
123
|
|
|
186
|
-
This explicit map is usually clearer for a neutral `default` theme. The
|
|
187
|
-
separate `primary` palette option below solves a different namespace problem:
|
|
188
|
-
it duplicates one named theme without a prefix while retaining that theme's
|
|
189
|
-
prefixed tokens.
|
|
190
|
-
|
|
191
124
|
### Alias themes for legacy names
|
|
192
125
|
|
|
193
126
|
Two aliases for the same theme instance produce identical token values under different prefixes — useful when you want to support a legacy token name without duplicating definitions:
|
|
@@ -196,7 +129,7 @@ Two aliases for the same theme instance produce identical token values under dif
|
|
|
196
129
|
const palette = glaze.palette({
|
|
197
130
|
default: defaultTheme,
|
|
198
131
|
primary: primaryTheme,
|
|
199
|
-
purple:
|
|
132
|
+
purple: primaryTheme, // legacy alias — same theme, different prefix
|
|
200
133
|
// ...
|
|
201
134
|
});
|
|
202
135
|
|
|
@@ -204,7 +137,7 @@ palette.tasty({
|
|
|
204
137
|
prefix: {
|
|
205
138
|
default: '',
|
|
206
139
|
primary: 'primary-',
|
|
207
|
-
purple:
|
|
140
|
+
purple: 'purple-', // emits #purple-surface alongside #primary-surface
|
|
208
141
|
},
|
|
209
142
|
});
|
|
210
143
|
```
|
|
@@ -213,10 +146,13 @@ Both `#primary-surface` and `#purple-surface` resolve to the exact same color. D
|
|
|
213
146
|
|
|
214
147
|
### `primary` (the unprefixed alias)
|
|
215
148
|
|
|
216
|
-
`glaze.palette(themes, { primary })` and the per-export `primary` option duplicate one theme's tokens
|
|
149
|
+
`glaze.palette(themes, { primary })` and the per-export `primary` option duplicate one theme's tokens *without* prefix on top of any prefix map. Equivalent to listing that theme twice with different prefixes; useful when the "primary" theme is conceptually distinct from `default` and you want both sets of unprefixed tokens.
|
|
217
150
|
|
|
218
151
|
```ts
|
|
219
|
-
const palette = glaze.palette(
|
|
152
|
+
const palette = glaze.palette(
|
|
153
|
+
{ brand, accent },
|
|
154
|
+
{ primary: 'brand' },
|
|
155
|
+
);
|
|
220
156
|
palette.tokens();
|
|
221
157
|
// → { light: { 'brand-surface': '...', 'surface': '...', 'accent-surface': '...' } }
|
|
222
158
|
```
|
|
@@ -240,19 +176,16 @@ Walk your current color system and bucket every token into one of these categori
|
|
|
240
176
|
- **Shadows / overlays** — elevation, scrims.
|
|
241
177
|
- **One-off colors** — syntax highlighting, charts, illustrations.
|
|
242
178
|
|
|
243
|
-
Each bucket maps cleanly to one of the patterns in [methodology.md](methodology.md). The bucket determines the
|
|
179
|
+
Each bucket maps cleanly to one of the patterns in [methodology.md](methodology.md). The bucket determines the *shape* of the Glaze definition (root vs dependent, `mode: 'auto'` vs `'fixed'`, contrast-floor vs absolute lightness), not the value.
|
|
244
180
|
|
|
245
181
|
### 2. Reproduce the existing values
|
|
246
182
|
|
|
247
|
-
Pick a Glaze definition shape that lands the new color
|
|
183
|
+
Pick a Glaze definition shape that lands the new color *close to* the legacy hex in light mode. The methodology doc explains the shape per bucket; the API doc covers the levers (`lightness`, `saturation`, `contrast`, `mode`, `hue`).
|
|
248
184
|
|
|
249
185
|
Two tactics that make matching easier:
|
|
250
186
|
|
|
251
|
-
- **Anchor strong text at the edge** instead of solving for `'AAA'`. The contrast solver stops at the floor (cr=7), which usually leaves text noticeably softer than a legacy hex like `#1a1a1a`. An absolute `
|
|
252
|
-
- **
|
|
253
|
-
useful when reproducing a measured legacy ratio. For new content roles,
|
|
254
|
-
prefer the APCA presets from the methodology. For low-stakes spacing, use a
|
|
255
|
-
tone delta instead of inventing a contrast target.
|
|
187
|
+
- **Anchor strong text at the edge** instead of solving for `'AAA'`. The contrast solver stops at the floor (cr=7), which usually leaves text noticeably softer than a legacy hex like `#1a1a1a`. An absolute `lightness: 2` (or wherever the legacy token sits in OKHSL) preserves the look.
|
|
188
|
+
- **Use numeric `contrast` ratios** for soft / accent / disabled tokens. Presets give you the WCAG floor and nothing more — for matching a designed palette you usually want a specific perceived weight, not the floor.
|
|
256
189
|
|
|
257
190
|
### 3. Keep the old token names
|
|
258
191
|
|
|
@@ -263,19 +196,9 @@ Use a custom `prefix` map (and theme aliases if needed) so the names your compon
|
|
|
263
196
|
// New: define them in Glaze, map the prefix so they emit unchanged.
|
|
264
197
|
|
|
265
198
|
defaultTheme.colors({
|
|
266
|
-
dark:
|
|
267
|
-
'dark-02': {
|
|
268
|
-
|
|
269
|
-
tone: '-1',
|
|
270
|
-
saturation: 0.375,
|
|
271
|
-
contrast: [9, 11],
|
|
272
|
-
},
|
|
273
|
-
'dark-03': {
|
|
274
|
-
base: 'surface',
|
|
275
|
-
tone: '-1',
|
|
276
|
-
saturation: 0.24,
|
|
277
|
-
contrast: [4.5, 5.5],
|
|
278
|
-
},
|
|
199
|
+
dark: { base: 'surface', lightness: 2, saturation: 0.475 },
|
|
200
|
+
'dark-02': { base: 'surface', lightness: '-1', saturation: 0.375, contrast: [9, 11] },
|
|
201
|
+
'dark-03': { base: 'surface', lightness: '-1', saturation: 0.24, contrast: [4.5, 5.5] },
|
|
279
202
|
});
|
|
280
203
|
|
|
281
204
|
palette.tasty({ prefix: { default: '' } });
|
|
@@ -288,8 +211,8 @@ Once consumers are off the legacy names, rename the Glaze tokens to match your c
|
|
|
288
211
|
|
|
289
212
|
Glaze gives you light/dark/HC for free, but only the light mode is matched against the legacy palette. Before promoting the migration:
|
|
290
213
|
|
|
291
|
-
- Spot-check every surface, text, accent, and disabled pair in dark mode. The
|
|
292
|
-
- If the legacy system had no high-contrast mode, audit the HC variants Glaze emits. Anywhere the resolved cr is too low or the color blows out, add an HC pair (`
|
|
214
|
+
- Spot-check every surface, text, accent, and disabled pair in dark mode. The Möbius dark inversion plus per-color `mode` choices may produce results that *look right* in light but feel off in dark (typical fix: switch a brand color to `mode: 'fixed'`, or anchor a foreground to `surface` instead of the brand fill — see [methodology.md](methodology.md)).
|
|
215
|
+
- If the legacy system had no high-contrast mode, audit the HC variants Glaze emits. Anywhere the resolved cr is too low or the color blows out, add an HC pair (`lightness: ['-7', '-20']`, `contrast: [4.5, 7]`, etc.).
|
|
293
216
|
- Run real screens, not just the token grid. The interaction of multiple Glaze tokens against each other (text on chip, hover bg vs. fill, disabled label on disabled chip) is where mismatches show up.
|
|
294
217
|
|
|
295
218
|
### 5. Trim what `extend()` doesn't need
|
|
@@ -298,16 +221,15 @@ After migration, mark every default-only token (borders, shadows, disabled chip,
|
|
|
298
221
|
|
|
299
222
|
## Common pitfalls
|
|
300
223
|
|
|
301
|
-
| Symptom
|
|
302
|
-
|
|
303
|
-
| Disabled state stops looking disabled in dark mode.
|
|
304
|
-
| Brand color flips to its complement in dark mode.
|
|
305
|
-
| Brand text washes out against the dark surface.
|
|
306
|
-
| Tokens look right in light, broken in HC.
|
|
307
|
-
|
|
|
308
|
-
| `
|
|
309
|
-
| `console.warn:
|
|
310
|
-
| `console.warn: color "X" cannot meet contrast`. | The requested contrast target is physically unreachable for the color's hue/saturation against its base. | Lower the floor, change the base, or accept the closest passing variant. Use the `name` override on standalone colors to make the warning identifiable. |
|
|
224
|
+
| Symptom | Cause | Fix |
|
|
225
|
+
|---|---|---|
|
|
226
|
+
| Disabled state stops looking disabled in dark mode. | Alpha-tinted overlay on `surface-text` (which inverts), giving asymmetric perceived contrast. | Replace with a `mode: 'auto'` color anchored to `surface` with a numeric `contrast` (see [methodology.md → Disabled chip](methodology.md#disabled-chip-contrast-driven-for-scheme-symmetry)). |
|
|
227
|
+
| Brand color flips to its complement in dark mode. | Default `mode: 'auto'` runs the Möbius inversion. | Set `mode: 'fixed'` so the lightness is mapped (not inverted). |
|
|
228
|
+
| Brand text washes out against the dark surface. | Foreground was anchored to `accent-surface` (the brand fill), so contrast was only enforced against that fill — not the actual surface. | Anchor `accent-text` etc. to `surface` with `mode: 'auto'`. |
|
|
229
|
+
| Tokens look right in light, broken in HC. | The HC pass bypasses the lightness window — solver runs over the full `[0, 100]` range. | Add explicit `[normal, hc]` pairs to `lightness` / `contrast` for the affected tokens. |
|
|
230
|
+
| `palette.tokens()` emits unexpected unprefixed names. | A `primary` was set on the palette (or per-call) and is duplicating the theme's tokens without prefix. | Pass `primary: false` to disable for that export, or rename `glaze.palette(themes, { primary })`. |
|
|
231
|
+
| `console.warn: token "foo" collides with theme "bar"`. | Two themes resolved to the same output key under your prefix config. | Adjust the prefix map so each token is unique, or accept the first-write-wins behavior. |
|
|
232
|
+
| `console.warn: color "X" cannot meet contrast`. | The requested contrast target is physically unreachable for the color's hue/saturation against its base. | Lower the floor, change the base, or accept the closest passing variant. Use the `name` override on standalone colors to make the warning identifiable. |
|
|
311
233
|
|
|
312
234
|
## See also
|
|
313
235
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cube-dev/ui-kit",
|
|
3
|
-
"version": "0.0.0-canary-
|
|
3
|
+
"version": "0.0.0-canary-e397738",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "UIKit for Cube Projects",
|
|
6
6
|
"repository": {
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"@react-types/shared": "^3.32.1",
|
|
79
79
|
"@tabler/icons-react": "^3.31.0",
|
|
80
80
|
"@tanstack/react-virtual": "^3.13.12",
|
|
81
|
-
"@tenphi/glaze": "
|
|
82
|
-
"@tenphi/tasty": "2.
|
|
81
|
+
"@tenphi/glaze": "0.13.0",
|
|
82
|
+
"@tenphi/tasty": "2.8.0",
|
|
83
83
|
"clipboard-copy": "^4.0.1",
|
|
84
84
|
"clsx": "^1.1.1",
|
|
85
85
|
"diff": "^8.0.3",
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"csstype": "^3.1.2",
|
|
138
138
|
"dedent": "^0.7.0",
|
|
139
139
|
"husky": "^6.0.0",
|
|
140
|
-
"
|
|
140
|
+
"happy-dom": "^20.11.1",
|
|
141
141
|
"lint-staged": "^17.0.8",
|
|
142
142
|
"markdown-table": "^3.0.3",
|
|
143
143
|
"npm-run-all": "^4.1.5",
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-a2deb22 | Cube Dev Team */
|
|
2
|
-
//#region src/tokens/lazy-styles.ts
|
|
3
|
-
/**
|
|
4
|
-
* Proxy that materializes a `Styles` map on first property / enumeration
|
|
5
|
-
* access. Used so token exports stay import-safe while resolution can wait
|
|
6
|
-
* until after a host app calls `glaze.configure(...)`.
|
|
7
|
-
*/
|
|
8
|
-
function lazyStyles(factory) {
|
|
9
|
-
let cache;
|
|
10
|
-
const resolve = () => cache ??= factory();
|
|
11
|
-
return new Proxy({}, {
|
|
12
|
-
get(_target, prop) {
|
|
13
|
-
if (prop === Symbol.toStringTag) return "Object";
|
|
14
|
-
return Reflect.get(resolve(), prop);
|
|
15
|
-
},
|
|
16
|
-
ownKeys() {
|
|
17
|
-
return Reflect.ownKeys(resolve());
|
|
18
|
-
},
|
|
19
|
-
getOwnPropertyDescriptor(_target, prop) {
|
|
20
|
-
return Object.getOwnPropertyDescriptor(resolve(), prop);
|
|
21
|
-
},
|
|
22
|
-
has(_target, prop) {
|
|
23
|
-
return Reflect.has(resolve(), prop);
|
|
24
|
-
},
|
|
25
|
-
getPrototypeOf() {
|
|
26
|
-
return Object.prototype;
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
//#endregion
|
|
32
|
-
export { lazyStyles };
|
|
33
|
-
//# sourceMappingURL=lazy-styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-styles.js","names":[],"sources":["../../src/tokens/lazy-styles.ts"],"sourcesContent":["import type { Styles } from '@tenphi/tasty';\n\n/**\n * Proxy that materializes a `Styles` map on first property / enumeration\n * access. Used so token exports stay import-safe while resolution can wait\n * until after a host app calls `glaze.configure(...)`.\n */\nexport function lazyStyles(factory: () => Styles): Styles {\n let cache: Styles | undefined;\n const resolve = () => (cache ??= factory());\n return new Proxy({} as Styles, {\n get(_target, prop) {\n if (prop === Symbol.toStringTag) return 'Object';\n return Reflect.get(resolve(), prop);\n },\n ownKeys() {\n return Reflect.ownKeys(resolve());\n },\n getOwnPropertyDescriptor(_target, prop) {\n return Object.getOwnPropertyDescriptor(resolve(), prop);\n },\n has(_target, prop) {\n return Reflect.has(resolve(), prop);\n },\n getPrototypeOf() {\n return Object.prototype;\n },\n });\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,WAAW,SAA+B;CACxD,IAAI;CACJ,MAAM,gBAAiB,UAAU,SAAS;AAC1C,QAAO,IAAI,MAAM,EAAE,EAAY;EAC7B,IAAI,SAAS,MAAM;AACjB,OAAI,SAAS,OAAO,YAAa,QAAO;AACxC,UAAO,QAAQ,IAAI,SAAS,EAAE,KAAK;;EAErC,UAAU;AACR,UAAO,QAAQ,QAAQ,SAAS,CAAC;;EAEnC,yBAAyB,SAAS,MAAM;AACtC,UAAO,OAAO,yBAAyB,SAAS,EAAE,KAAK;;EAEzD,IAAI,SAAS,MAAM;AACjB,UAAO,QAAQ,IAAI,SAAS,EAAE,KAAK;;EAErC,iBAAiB;AACf,UAAO,OAAO;;EAEjB,CAAC"}
|
package/dist/tokens/palette.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { Styles } from "@tenphi/tasty";
|
|
3
|
-
import "@tenphi/glaze";
|
|
4
|
-
|
|
5
|
-
//#region src/tokens/palette.d.ts
|
|
6
|
-
declare function getPaletteTokens(): Styles;
|
|
7
|
-
/**
|
|
8
|
-
* Lazy proxy of {@link getPaletteTokens}. Prefer `getPaletteTokens()` in new
|
|
9
|
-
* code. First property / enumeration access resolves against the live glaze
|
|
10
|
-
* config (same memo as the getter).
|
|
11
|
-
*/
|
|
12
|
-
declare const PALETTE_TOKENS: Styles;
|
|
13
|
-
//#endregion
|
|
14
|
-
export { PALETTE_TOKENS, getPaletteTokens };
|
|
15
|
-
//# sourceMappingURL=palette.d.ts.map
|
package/docs/Colors.md
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Colors
|
|
2
|
-
|
|
3
|
-
Cube UI Kit color tokens are generated by Glaze from a shared OKHST palette.
|
|
4
|
-
Every adaptive token includes light, dark, and high-contrast variants. Change
|
|
5
|
-
the active scheme in the Storybook toolbar to review each example.
|
|
6
|
-
|
|
7
|
-
## Choosing a color pair
|
|
8
|
-
|
|
9
|
-
Start with the surface, then choose a foreground designed for that surface:
|
|
10
|
-
|
|
11
|
-
- On neutral surfaces, use the matching text family:
|
|
12
|
-
`#surface` + `#surface-text`, `#surface-2` + `#surface-2-text`, and so on.
|
|
13
|
-
- On semantic tinted surfaces, use `#<theme>-surface-text` for a neutralized,
|
|
14
|
-
high-contrast foreground.
|
|
15
|
-
- Use `#<theme>-accent-text` or `-soft` when the foreground should retain the
|
|
16
|
-
semantic hue, such as notification titles and links.
|
|
17
|
-
- On solid accent fills, use `#<theme>-accent-surface-text`.
|
|
18
|
-
- Do not select colors only because they look similar. Their names describe
|
|
19
|
-
the contrast relationship and intended role.
|
|
20
|
-
|
|
21
|
-
The text examples show each color with `t3m`, `t3`, and `t4`. Typography does
|
|
22
|
-
not change the color pairing; it makes the foreground easier to evaluate at
|
|
23
|
-
common UI sizes and weights.
|
|
24
|
-
|
|
25
|
-
## Neutral surfaces
|
|
26
|
-
|
|
27
|
-
Neutral surfaces form the page, panel, and nested-container elevation ladder.
|
|
28
|
-
Use the text tokens named for the selected surface whenever one exists.
|
|
29
|
-
|
|
30
|
-
## Semantic surfaces
|
|
31
|
-
|
|
32
|
-
Semantic surfaces support two deliberate foreground treatments.
|
|
33
|
-
|
|
34
|
-
### Surface text
|
|
35
|
-
|
|
36
|
-
The surface-text family keeps the semantic hue subtle and prioritizes strong
|
|
37
|
-
readability.
|
|
38
|
-
|
|
39
|
-
### Accent text
|
|
40
|
-
|
|
41
|
-
The accent-text family preserves more semantic color. This is the pairing used
|
|
42
|
-
by notification and Item card styles.
|
|
43
|
-
|
|
44
|
-
## Solid accents and interaction states
|
|
45
|
-
|
|
46
|
-
Solid accent fills are fixed brand colors with a dedicated light foreground.
|
|
47
|
-
The numbered surface ramp represents default, hover, and pressed states and is
|
|
48
|
-
shared by semantic themes.
|
|
49
|
-
|
|
50
|
-
## Disabled states
|
|
51
|
-
|
|
52
|
-
Disabled pairs intentionally have lower contrast than active content. Use the
|
|
53
|
-
neutral pair for low-emphasis controls and the accent-disabled pair for muted
|
|
54
|
-
solid semantic controls. Do not use disabled text for active information or
|
|
55
|
-
content that must meet normal text contrast requirements.
|
|
56
|
-
|
|
57
|
-
## Utility colors
|
|
58
|
-
|
|
59
|
-
`#placeholder`, `#focus`, semantic accent icons, and `#overlay` have narrow
|
|
60
|
-
roles. Keep them in those roles rather than treating them as general palette
|
|
61
|
-
swatches.
|
|
62
|
-
|
|
63
|
-
## Code syntax
|
|
64
|
-
|
|
65
|
-
Syntax tokens are calibrated as a group against `#surface`. Use the semantic
|
|
66
|
-
token for each syntax role instead of assigning arbitrary palette colors.
|
|
67
|
-
|
|
68
|
-
## Borders and shadows
|
|
69
|
-
|
|
70
|
-
Borders use the `1bw` design-system width. Shadow geometry comes from
|
|
71
|
-
`src/tokens/shadows.ts`; the `#shadow-sm`, `#shadow-md`, and `#shadow-lg`
|
|
72
|
-
colors adapt with the active scheme.
|
|
73
|
-
|
|
74
|
-
## Scope
|
|
75
|
-
|
|
76
|
-
This reference focuses on tokens intended for product UI. Internal loading-face
|
|
77
|
-
colors and compatibility aliases are intentionally omitted.
|
package/docs/glaze/okhst.md
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
# OKHST in Glaze
|
|
2
|
-
|
|
3
|
-
Glaze uses [OKHST](https://github.com/tenphi/okhst), an OKHSL-derived color
|
|
4
|
-
space with a tone axis for stable palette authoring. This page explains how
|
|
5
|
-
Glaze applies the model. The standalone repository is the canonical
|
|
6
|
-
specification for the transfer functions, derivation, and color-model
|
|
7
|
-
invariants.
|
|
8
|
-
|
|
9
|
-
For practical palette design, continue to [methodology.md](methodology.md). For
|
|
10
|
-
every related option and utility, see [api.md](api.md).
|
|
11
|
-
|
|
12
|
-
## What tone means
|
|
13
|
-
|
|
14
|
-
OKHST keeps OKHSL hue and saturation and replaces authored lightness with
|
|
15
|
-
**tone**:
|
|
16
|
-
|
|
17
|
-
| Space | Coordinates | Third coordinate |
|
|
18
|
-
| ----- | ----------- | -------------------- |
|
|
19
|
-
| OKHSL | `h, s, l` | Perceptual lightness |
|
|
20
|
-
| OKHST | `h, s, t` | Contrast-shaped tone |
|
|
21
|
-
|
|
22
|
-
Tone uses a `0–100` authoring scale. Its primary invariant is:
|
|
23
|
-
|
|
24
|
-
> The same tone maps to the same OKHSL lightness for every hue and saturation.
|
|
25
|
-
|
|
26
|
-
For neutral colors, equal tone differences produce equal WCAG contrast ratios.
|
|
27
|
-
For chromatic colors, they remain a useful progression but are not exact:
|
|
28
|
-
hue, saturation, and gamut mapping can change the final sRGB luminance.
|
|
29
|
-
|
|
30
|
-
This distinction informs two authoring rules:
|
|
31
|
-
|
|
32
|
-
- Use **tone deltas** for visual spacing within ramps and related UI colors.
|
|
33
|
-
- Use `contrast` when a rendered color must meet a measured WCAG or APCA floor.
|
|
34
|
-
|
|
35
|
-
## Tone vocabulary
|
|
36
|
-
|
|
37
|
-
### Absolute tone
|
|
38
|
-
|
|
39
|
-
A numeric `tone` places a color independently on the `0–100` authoring scale:
|
|
40
|
-
|
|
41
|
-
```ts
|
|
42
|
-
surface: {
|
|
43
|
-
tone: 97;
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
`'max'` and `'min'` select the corresponding end of the active scheme.
|
|
48
|
-
|
|
49
|
-
### Tone delta
|
|
50
|
-
|
|
51
|
-
A **tone delta** is the signed difference between a dependent color and its
|
|
52
|
-
base. It is authored as a string:
|
|
53
|
-
|
|
54
|
-
```ts
|
|
55
|
-
border: { base: 'surface', tone: '-8' }
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Here, `-8` is the tone delta. The base is resolved separately for every scheme,
|
|
59
|
-
then the delta is applied to that resolved base. This keeps related colors
|
|
60
|
-
visually ordered across light, dark, and high-contrast variants.
|
|
61
|
-
|
|
62
|
-
### Tone window
|
|
63
|
-
|
|
64
|
-
A **tone window** is the scheme-specific render range configured by
|
|
65
|
-
`lightTone` or `darkTone`:
|
|
66
|
-
|
|
67
|
-
```ts
|
|
68
|
-
glaze.configure({
|
|
69
|
-
lightTone: [10, 100],
|
|
70
|
-
darkTone: [15, 95],
|
|
71
|
-
});
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
In Glaze, `lo` and `hi` are OKHSL-lightness boundaries. Authored tone is
|
|
75
|
-
positioned within the corresponding tone interval, then converted back to
|
|
76
|
-
OKHSL lightness for rendering. The object form adds an advanced render
|
|
77
|
-
curvature:
|
|
78
|
-
|
|
79
|
-
```ts
|
|
80
|
-
lightTone: { lo: 10, hi: 100, eps: 0.05 }
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Pass `false` to use the full range. High-contrast variants always bypass the
|
|
84
|
-
ordinary boundaries and use the full range.
|
|
85
|
-
|
|
86
|
-
## Scheme adaptation
|
|
87
|
-
|
|
88
|
-
Each regular color has an adaptation `mode`:
|
|
89
|
-
|
|
90
|
-
| Mode | Light scheme | Dark scheme |
|
|
91
|
-
| ---------- | ------------------------------ | -------------------------------------------------------------------- |
|
|
92
|
-
| `'auto'` | Map into the light tone window | Apply dark tone inversion (`100 - t`), then map into the dark window |
|
|
93
|
-
| `'fixed'` | Map into the light tone window | Map into the dark window without inversion |
|
|
94
|
-
| `'static'` | Keep the authored tone | Keep the authored tone |
|
|
95
|
-
|
|
96
|
-
Use `auto` for surfaces and foregrounds that should exchange light/dark
|
|
97
|
-
positions. Use `fixed` for brand fills and inverse surfaces that should stay on
|
|
98
|
-
the same side of the scale. Reserve `static` for colors that must not adapt.
|
|
99
|
-
|
|
100
|
-
**Dark tone inversion** is different from `autoFlip`. Inversion is normal
|
|
101
|
-
scheme adaptation controlled by `mode`. `autoFlip` handles a different local
|
|
102
|
-
problem: it may reverse an overshooting tone delta or let the contrast solver
|
|
103
|
-
try the opposite side of a base.
|
|
104
|
-
|
|
105
|
-
The regular pipeline is:
|
|
106
|
-
|
|
107
|
-
```text
|
|
108
|
-
authored tone
|
|
109
|
-
-> choose the color's adaptation mode
|
|
110
|
-
-> invert for dark + auto
|
|
111
|
-
-> map through the active tone window
|
|
112
|
-
-> store canonical tone
|
|
113
|
-
-> convert to OKHSL at the rendering edge
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Dark schemes also apply `darkDesaturation` unless the color is `static`.
|
|
117
|
-
|
|
118
|
-
## Reference and render epsilon
|
|
119
|
-
|
|
120
|
-
`REF_EPS = 0.05` defines Glaze's canonical tone scale. It is used for OKHST
|
|
121
|
-
input, stored resolved tone, tone deltas, and contrast search.
|
|
122
|
-
|
|
123
|
-
An object tone window may supply another `eps` as a scheme-specific rendering
|
|
124
|
-
control. Glaze still converts the result back to the reference scale so tone
|
|
125
|
-
deltas and contrast calculations remain comparable between schemes. Most
|
|
126
|
-
palettes should use the default.
|
|
127
|
-
|
|
128
|
-
## Contrast verification
|
|
129
|
-
|
|
130
|
-
Tone provides an efficient starting point for contrast solving, but Glaze does
|
|
131
|
-
not assume a chromatic tone has the neutral color's luminance. For a color with
|
|
132
|
-
`base` and `contrast`, Glaze:
|
|
133
|
-
|
|
134
|
-
1. resolves both colors for the active scheme;
|
|
135
|
-
2. measures the requested WCAG ratio or APCA Lc;
|
|
136
|
-
3. searches tone when the requested position misses the floor; and
|
|
137
|
-
4. warns when the target is physically unreachable or rendered chroma drifts
|
|
138
|
-
below the expected result.
|
|
139
|
-
|
|
140
|
-
`contrast` is therefore a floor, not a replacement for tone relationships.
|
|
141
|
-
Detailed presets, HC promotion, polarity, and role inference are documented
|
|
142
|
-
under [`contrast`](api.md#contrast-floor) and [roles](api.md#roles).
|
|
143
|
-
|
|
144
|
-
## Input and output
|
|
145
|
-
|
|
146
|
-
Glaze accepts OKHST through:
|
|
147
|
-
|
|
148
|
-
```ts
|
|
149
|
-
glaze.color('okhst(152 95% 70%)');
|
|
150
|
-
glaze.color({ h: 152, s: 0.95, t: 0.7 });
|
|
151
|
-
glaze.color({ hue: 152, saturation: 95, tone: 70 });
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
There is no native CSS `okhst()` function. Native exports use `oklch`, `rgb`,
|
|
155
|
-
or `hsl`. [Tasty](https://tasty.style) integrations may request `format: 'okhst'` because it can
|
|
156
|
-
consume Glaze's custom serialization:
|
|
157
|
-
|
|
158
|
-
```ts
|
|
159
|
-
theme.tasty({ format: 'okhst' });
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
## Bringing existing colors into Glaze
|
|
163
|
-
|
|
164
|
-
When moving raw CSS colors or design tokens into Glaze, use `fromHex()`,
|
|
165
|
-
`fromRgb()`, or `glaze.color()` to preserve the source color while you establish
|
|
166
|
-
theme seeds and semantic relationships. Then replace one-off values with roots,
|
|
167
|
-
tone deltas, and contrast floors as appropriate.
|
|
168
|
-
|
|
169
|
-
See [migration.md](migration.md#migrating-from-an-existing-color-system) for
|
|
170
|
-
the implementation workflow.
|