@cube-dev/ui-kit 0.0.0-canary-0954924 → 0.0.0-canary-4e3e97e
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 +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.d.ts +4 -4
- package/dist/components/Root.js +1 -1
- 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/InfoBadge/InfoBadge.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.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/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.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/ColorInput/ColorInput.js +2 -3
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +2 -2
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.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 +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/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.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 -2
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +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 +2 -15
- package/dist/components/fields/Slider/HueSlider.js.map +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/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/{ColorSwatch → color}/ColorSwatch.d.ts +2 -8
- package/dist/components/fields/{ColorSwatch → color}/ColorSwatch.js +6 -14
- package/dist/components/fields/color/ColorSwatch.js.map +1 -0
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +4 -4
- package/dist/components/fields/color/color.js.map +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/color/index.d.ts +1 -0
- package/dist/components/fields/index.d.ts +1 -2
- package/dist/components/form/FieldWrapper/FieldWrapper.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/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.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/group-move.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/Board/use-board-select-modifier-key.js +1 -1
- package/dist/components/layout/Board/use-board-selection.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/Pagination/Pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.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/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/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.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/eslint-plugin/defaults.generated.js +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.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/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.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/PipetteIcon.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/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/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/color-theme.d.ts +1 -8
- package/dist/tokens/color-theme.js +7 -19
- package/dist/tokens/color-theme.js.map +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.d.ts +1 -2
- package/dist/tokens/index.js +2 -3
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/palette-config.d.ts +9 -193
- package/dist/tokens/palette-config.js +10 -64
- package/dist/tokens/palette-config.js.map +1 -1
- package/dist/tokens/palette.js +158 -551
- 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/disabledProps.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/useBufferedValue.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 +2 -2
- package/docs/Theming.md +30 -315
- package/docs/glaze/api.md +47 -155
- package/docs/glaze/methodology.md +13 -15
- package/docs/glaze/migration.md +0 -36
- package/docs/glaze/okhst.md +0 -4
- package/package.json +3 -3
- package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +0 -1
- package/dist/components/fields/ColorSwatch/index.d.ts +0 -2
- package/dist/tokens/color-seed.d.ts +0 -44
- package/dist/tokens/color-seed.js +0 -48
- package/dist/tokens/color-seed.js.map +0 -1
- package/docs/components/fields/ColorSwatch.md +0 -148
package/dist/tokens/palette.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
2
|
-
import {
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-4e3e97e | Cube Dev Team */
|
|
2
|
+
import { getPaletteConfig, getPaletteVersion, resolvePaletteConfig } from "./palette-config.js";
|
|
3
3
|
import { lazyStyles } from "./lazy-styles.js";
|
|
4
|
-
import {
|
|
4
|
+
import { glaze } from "@tenphi/glaze";
|
|
5
5
|
|
|
6
6
|
//#region src/tokens/palette.ts
|
|
7
7
|
/**
|
|
@@ -30,312 +30,12 @@ const CODE_STRING_HUE = 280.3;
|
|
|
30
30
|
* Saturation factor of the neutral `surface`.
|
|
31
31
|
*
|
|
32
32
|
* Shared with the code theme, which mirrors `surface` to solve its contrast floors
|
|
33
|
-
* against the real page background — the two must not drift apart.
|
|
34
|
-
* config too, which needs it to work out the share of the accent zone's chroma the
|
|
35
|
-
* chrome takes when no `baseColor` names one outright; it lives there because the
|
|
36
|
-
* config cannot import from here, and is re-exported under this name because that is
|
|
37
|
-
* what the recipe calls it.
|
|
33
|
+
* against the real page background — the two must not drift apart.
|
|
38
34
|
*/
|
|
39
|
-
const SURFACE_SATURATION =
|
|
35
|
+
const SURFACE_SATURATION = .12;
|
|
40
36
|
const TINTED_SURFACE_SATURATION = .2;
|
|
41
37
|
const TINTED_SURFACE_TONE_OFFSET = 2;
|
|
42
38
|
/**
|
|
43
|
-
* How far `surfaceMode: 'tinted'` moves the neutral ramp off the end of the tone
|
|
44
|
-
* scale.
|
|
45
|
-
*
|
|
46
|
-
* Small on purpose. Two tones is below the threshold where a page reads as
|
|
47
|
-
* "grey" rather than "white", and it is not lightness this buys: chroma needs
|
|
48
|
-
* distance from the extreme to exist at all, so at tone 100 a light surface is
|
|
49
|
-
* white whatever saturation it asks for. Two tones is the cheapest room in which
|
|
50
|
-
* the base hue becomes visible.
|
|
51
|
-
*
|
|
52
|
-
* Everything under `surface` is positioned relative to it, so the shift carries
|
|
53
|
-
* the whole ladder — and the text ramp's contrast floors re-solve against the new
|
|
54
|
-
* background instead of drifting.
|
|
55
|
-
*/
|
|
56
|
-
const TINTED_SURFACE_TONE_SHIFT = 2;
|
|
57
|
-
/** Tone of the neutral `surface`, per {@link ResolvedPaletteConfig.surfaceMode}. */
|
|
58
|
-
function surfaceTone(config) {
|
|
59
|
-
return config.surfaceMode === "tinted" ? 100 - TINTED_SURFACE_TONE_SHIFT : 100;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Tone of a TINTED `surface` — a status theme's, or a runtime tint's —
|
|
63
|
-
* as `[light, highContrast]`.
|
|
64
|
-
*
|
|
65
|
-
* A tinted surface is a banner sitting *on* the page, so its tone is authored as
|
|
66
|
-
* an offset from the page's rather than as an absolute. Under
|
|
67
|
-
* `surfaceMode: 'tinted'` the page itself moves down to 98, which is exactly where
|
|
68
|
-
* these used to sit: a `note` banner would come out the same tone as the surface
|
|
69
|
-
* behind it and stop reading as a banner at all. Anchoring both on
|
|
70
|
-
* {@link surfaceTone} keeps the separation the offset was chosen for.
|
|
71
|
-
*
|
|
72
|
-
* The text ramps on these themes are relative (`base: 'surface'`), so they follow
|
|
73
|
-
* on their own — only the absolute tone needs the anchor.
|
|
74
|
-
*/
|
|
75
|
-
function tintedSurfaceTone(config) {
|
|
76
|
-
const page = surfaceTone(config);
|
|
77
|
-
return [page - TINTED_SURFACE_TONE_OFFSET, page - TINTED_SURFACE_TONE_OFFSET * 2];
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Rescale the base-zone saturation factors onto the base zone's own seed.
|
|
81
|
-
*
|
|
82
|
-
* Every color's `saturation` is a 0–1 factor of its **theme's** seed, and the
|
|
83
|
-
* neutral family shares a theme instance with the accent one — it has to, since
|
|
84
|
-
* `accent-surface` is positioned against `surface`. A separate base seed therefore
|
|
85
|
-
* cannot be a second theme; it arrives as a scale over the authored factors.
|
|
86
|
-
*
|
|
87
|
-
* The scale is anchored on `surface`: dividing by `SURFACE_SATURATION` turns each
|
|
88
|
-
* factor into its share *of the surface's tint*, and multiplying by
|
|
89
|
-
* `baseSaturation / saturation` re-expresses that share against the base seed.
|
|
90
|
-
* `surface` therefore lands on exactly `baseSaturation` on the 0–100 scale, and
|
|
91
|
-
* every sibling keeps its proportion to it. At the shipped
|
|
92
|
-
* `baseSaturation = saturation × 0.12` the scale is `1` and nothing moves.
|
|
93
|
-
*
|
|
94
|
-
* Clamped because Glaze reads the factor as 0–1, which is also why the proportions
|
|
95
|
-
* converge at the top: `surface-inverse` (the highest at `0.475`) saturates first,
|
|
96
|
-
* around `baseSaturation: 25`.
|
|
97
|
-
*
|
|
98
|
-
* A palette seed of `0` leaves no chroma for any factor to scale, so the base zone
|
|
99
|
-
* is grey there whatever it asks for — the ceiling belongs to the theme instance,
|
|
100
|
-
* not to this scale.
|
|
101
|
-
*/
|
|
102
|
-
function baseSaturationScale(config) {
|
|
103
|
-
return config.saturation > 0 ? config.baseSaturation / (SURFACE_SATURATION * config.saturation) : 0;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* The floor for a pinned brand FILL, measured from white — APCA `large`, Lc 45.
|
|
107
|
-
*
|
|
108
|
-
* "From white" falls out of the anchor rather than replacing it. The base stays
|
|
109
|
-
* `surface`, and `roleToPolarity('surface')` gives this the `bg` polarity, so Glaze
|
|
110
|
-
* solves `apcaContrast(surface, fill)` — in light, where `surface` IS `oklch(1 0 0)`,
|
|
111
|
-
* that is literally white-on-fill, the pair every `type="primary"` label depends on.
|
|
112
|
-
*
|
|
113
|
-
* Re-anchoring to `accent-surface-text` to say "from white" in both schemes was tried
|
|
114
|
-
* and is wrong: in dark the label root is near-white while the page is not, so the
|
|
115
|
-
* floor stops constraining the fill against the page and a dark brand disappears into
|
|
116
|
-
* it — `#111827` came out at WCAG 1.16 against the dark surface. Keeping `surface`
|
|
117
|
-
* means the floor reads as the label pair in light and as page separation in dark,
|
|
118
|
-
* which is the constraint that actually matters in each.
|
|
119
|
-
*
|
|
120
|
-
* Why APCA and not a WCAG ratio. WCAG 2.x is polarity-blind, so one number means two
|
|
121
|
-
* very different things: the previous `3` measured Lc 56 in light but only Lc 23 in
|
|
122
|
-
* dark (12 hues, spread under 2 Lc — hue is not a factor, polarity is). That is 2.4x
|
|
123
|
-
* stricter in light than in dark, which is why light brands kept getting crushed while
|
|
124
|
-
* dark ones sailed through under the same rule. Lc 45 is one number that means one
|
|
125
|
-
* thing in both schemes.
|
|
126
|
-
*
|
|
127
|
-
* Still a FLOOR, not a target: a brand already past it is emitted exactly as given.
|
|
128
|
-
*
|
|
129
|
-
* The HC entry is `60` — APCA's `content` tier — and it is a CEILING imposed by
|
|
130
|
-
* geometry, not a preference. The fill answers to two floors that pull opposite ways
|
|
131
|
-
* in dark: this one pushes it away from a dark page (lighter), while
|
|
132
|
-
* {@link ACCENT_LABEL_LC} pushes it away from the white label (darker). Measured on
|
|
133
|
-
* the emitted tokens, the window where both hold in dark high contrast is
|
|
134
|
-
* `L ∈ [0.605, 0.735]`; asking 85 of the page empties it outright, and a 3072-case
|
|
135
|
-
* sweep put the white primary label at Lc 20.7 on a fill that satisfied the page.
|
|
136
|
-
* 60 is the largest value that keeps the window open — 65 reopens 768 failures.
|
|
137
|
-
*
|
|
138
|
-
* So high contrast escalates the fill only as far as the label can follow. That is
|
|
139
|
-
* the right way round: the tier exists to be READ, and a fill driven to Lc 85 off the
|
|
140
|
-
* page is one its own label has vanished from.
|
|
141
|
-
*
|
|
142
|
-
* It cannot be written as a WCAG ratio either — Glaze rejects a `contrast` pair that
|
|
143
|
-
* switches metric, which is a fair guard — so the tier moves to APCA with the rest.
|
|
144
|
-
* For the record, WCAG 7 measures Lc 83.5 in light but only Lc 54.4 in dark, so no
|
|
145
|
-
* single Lc could have restated the old AAA pair in both schemes regardless.
|
|
146
|
-
*/
|
|
147
|
-
const ACCENT_FILL_CONTRAST = { apca: [45, 60] };
|
|
148
|
-
/**
|
|
149
|
-
* Floors for the two brand TEXT tokens: rest, then hover — APCA `content` and `body`.
|
|
150
|
-
*
|
|
151
|
-
* Also "from white", in the same sense as {@link ACCENT_FILL_CONTRAST}: both solve
|
|
152
|
-
* against `accent-selected-fill`, which is `oklch(0.975 0.0037 284.4)` in light — white
|
|
153
|
-
* for every practical purpose, and the surface these labels actually sit on. These are
|
|
154
|
-
* foreground spots, so they keep the default `fg` polarity and Glaze solves
|
|
155
|
-
* `apcaContrast(text, base)`.
|
|
156
|
-
*
|
|
157
|
-
* Lc 60 is APCA's `content` tier, the floor for ordinary body text, which is what a
|
|
158
|
-
* link is. The hover takes `body`/75 so the rest→hover intensify stays visible; one
|
|
159
|
-
* preset step apart is what keeps the two from solving onto the same color.
|
|
160
|
-
*
|
|
161
|
-
* The HC entries are spelled `85` and `92` rather than left to Glaze's +15, for the
|
|
162
|
-
* same reason as {@link ACCENT_FILL_CONTRAST}, and they stay apart so the rest→hover
|
|
163
|
-
* intensify survives the tier that needs it most. They replace the hand-measured
|
|
164
|
-
* `[4.5, 9]` pair, whose `9` existed only because a WCAG ratio that high is unreachable
|
|
165
|
-
* for a saturated hue against a chromatic base: `#FFD400` in dark high contrast used to
|
|
166
|
-
* pin to pure black and come out a hover link *less* readable than its rest state. An
|
|
167
|
-
* Lc target is reachable in both schemes because it is polarity-aware, so the
|
|
168
|
-
* pathological case has no equivalent here.
|
|
169
|
-
*/
|
|
170
|
-
const ACCENT_TEXT_CONTRAST = { apca: [60, 85] };
|
|
171
|
-
const ACCENT_TEXT_HOVER_CONTRAST = { apca: [75, 92] };
|
|
172
|
-
/**
|
|
173
|
-
* Tone steps of the brand fill ramp, measured from `accent-surface`.
|
|
174
|
-
*
|
|
175
|
-
* They reproduce the white-anchored `-49 / -52 / -55 / -58` ladder exactly once the
|
|
176
|
-
* fill is pinned, because those four deltas share an anchor and differ by 3 / 6 / 9.
|
|
177
|
-
*/
|
|
178
|
-
const ACCENT_RAMP = {
|
|
179
|
-
surface2: "-3",
|
|
180
|
-
surface3: "-6",
|
|
181
|
-
hover: "-9"
|
|
182
|
-
};
|
|
183
|
-
/**
|
|
184
|
-
* How far the hover brand text sits past the rest one, in tone.
|
|
185
|
-
*
|
|
186
|
-
* Both are pinned to the caller's tone otherwise, and a pair at the same tone behind
|
|
187
|
-
* the same floor resolves to one color — which would silently delete the rest→hover
|
|
188
|
-
* intensify that `accent-text` exists for. Tone is contrast-uniform, so one step is
|
|
189
|
-
* one step in either scheme.
|
|
190
|
-
*/
|
|
191
|
-
const ACCENT_TEXT_HOVER_STEP = 6;
|
|
192
|
-
/**
|
|
193
|
-
* The white label's own floor on the brand fill, as an APCA Lc.
|
|
194
|
-
*
|
|
195
|
-
* The same 45 as {@link ACCENT_FILL_CONTRAST}, and deliberately so: it is the same
|
|
196
|
-
* surface being constrained, just against the other thing that has to survive on it.
|
|
197
|
-
*
|
|
198
|
-
* Two floors rather than one because in dark they pull opposite ways, and dropping
|
|
199
|
-
* either one produces the mirror image of the other's failure. The fill has to be dark
|
|
200
|
-
* enough for the `#white` label every `type="primary"` item paints on it, and light
|
|
201
|
-
* enough to separate from a dark page. In light mode the page IS white, so both
|
|
202
|
-
* collapse into the single measurement Glaze already makes and this cap never fires.
|
|
203
|
-
*
|
|
204
|
-
* Measured, in dark, with only the page floor: `#FFFFFF` clears it at WCAG 14.4 while
|
|
205
|
-
* the label lands on **Lc 0** — the label is exactly its own fill. With only the white
|
|
206
|
-
* floor the failure mirrors: `#111827` puts the fill at **Lc 0.0 against the page**, a
|
|
207
|
-
* blazing white label on a shape that is not there. The border does not stand in for
|
|
208
|
-
* the fill here — it is deliberately low-contrast — so the fill has to carry it.
|
|
209
|
-
*/
|
|
210
|
-
const ACCENT_LABEL_LC = 45;
|
|
211
|
-
/**
|
|
212
|
-
* How far above {@link ACCENT_LABEL_LC} the ceiling actually searches.
|
|
213
|
-
*
|
|
214
|
-
* The ceiling is computed on the bare seed, but the emitted `accent-surface` then goes
|
|
215
|
-
* through the page floor, which can only LIGHTEN — and a lighter fill is a weaker white
|
|
216
|
-
* label, so the solve eats into the margin the ceiling just established. Measured worst
|
|
217
|
-
* case across 3072 hue/chroma/tone/scheme/tier combinations is 1.8 Lc, in dark high
|
|
218
|
-
* contrast where the page floor pushes hardest; 3 covers it with room.
|
|
219
|
-
*/
|
|
220
|
-
const ACCENT_LABEL_MARGIN = 3;
|
|
221
|
-
/**
|
|
222
|
-
* Keyed on the palette VERSION as well as the seed, because the search resolves
|
|
223
|
-
* through Glaze's global settings — the dark tone window among them. A caller that
|
|
224
|
-
* runs `glaze.configure(...)` and then `invalidatePaletteTokens()` has changed the
|
|
225
|
-
* answer without changing the seed, and a cache keyed on the color alone would hand
|
|
226
|
-
* back a cap computed against the old settings. Versioning it is what makes the
|
|
227
|
-
* invalidation API mean what it says.
|
|
228
|
-
*
|
|
229
|
-
* Bounded for the same reason `colorSeed`'s cache is: a color picker drag resolves a
|
|
230
|
-
* distinct seed per frame, and stale versions accumulate keys nobody reads again.
|
|
231
|
-
*/
|
|
232
|
-
const accentCapCache = /* @__PURE__ */ new Map();
|
|
233
|
-
const ACCENT_CAP_CACHE_LIMIT = 256;
|
|
234
|
-
/** APCA Lc of pure white on one resolved variant. */
|
|
235
|
-
function labelLcOf(variant) {
|
|
236
|
-
const { h, s, l } = variantToOkhsl(variant);
|
|
237
|
-
const gamma = (c) => c <= .0031308 ? 12.92 * c : 1.055 * Math.pow(c, 1 / 2.4) - .055;
|
|
238
|
-
const y = (rgb) => {
|
|
239
|
-
const [r, g, b] = rgb.map((c) => Math.max(0, Math.min(1, gamma(c))));
|
|
240
|
-
return .2126 * r ** 2.4 + .7152 * g ** 2.4 + .0722 * b ** 2.4;
|
|
241
|
-
};
|
|
242
|
-
return Math.abs(apcaContrast(y([
|
|
243
|
-
1,
|
|
244
|
-
1,
|
|
245
|
-
1
|
|
246
|
-
]), y(okhslToLinearSrgb(h, s, l, false))));
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Pull a brand tone down until a white label survives on every variant of the fill.
|
|
250
|
-
*
|
|
251
|
-
* The search runs against Glaze's own fixed-mode resolution — the same mapping
|
|
252
|
-
* `accent-surface` goes through — rather than reimplementing the dark tone window, and
|
|
253
|
-
* checks all four variants so the cap is a property of the seed and not of one scheme.
|
|
254
|
-
*
|
|
255
|
-
* Only ever lowers, so a brand already dark enough comes back untouched.
|
|
256
|
-
*/
|
|
257
|
-
function capAccentTone(hue, saturation, tone) {
|
|
258
|
-
return Math.min(tone, accentToneCeiling(hue, saturation));
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* The lightest tone at this hue and chroma that a white label still survives on.
|
|
262
|
-
*
|
|
263
|
-
* A property of the hue/chroma pair alone, NOT of the tone being asked for — which is
|
|
264
|
-
* what makes it cacheable, and what the first cut got wrong: it only searched when the
|
|
265
|
-
* requested tone already failed, so a dark tone probed first cached "no ceiling" and
|
|
266
|
-
* every later light tone at the same hue escaped uncapped.
|
|
267
|
-
*/
|
|
268
|
-
function accentToneCeiling(hue, saturation) {
|
|
269
|
-
const key = `${hue}|${saturation}|${getPaletteVersion()}`;
|
|
270
|
-
const cached = accentCapCache.get(key);
|
|
271
|
-
if (cached !== void 0) return cached;
|
|
272
|
-
const labelLc = (candidate) => {
|
|
273
|
-
const resolved = glaze.color({
|
|
274
|
-
from: {
|
|
275
|
-
h: hue,
|
|
276
|
-
s: saturation / 100,
|
|
277
|
-
t: candidate / 100
|
|
278
|
-
},
|
|
279
|
-
mode: "fixed"
|
|
280
|
-
}).resolve();
|
|
281
|
-
return Math.min(labelLcOf(resolved.light), labelLcOf(resolved.dark), labelLcOf(resolved.lightContrast), labelLcOf(resolved.darkContrast));
|
|
282
|
-
};
|
|
283
|
-
let ceiling = 100;
|
|
284
|
-
const target = ACCENT_LABEL_LC + ACCENT_LABEL_MARGIN;
|
|
285
|
-
if (labelLc(100) < target) {
|
|
286
|
-
let low = 0;
|
|
287
|
-
let high = 100;
|
|
288
|
-
for (let i = 0; i < 24; i++) {
|
|
289
|
-
const mid = (low + high) / 2;
|
|
290
|
-
if (labelLc(mid) >= target) low = mid;
|
|
291
|
-
else high = mid;
|
|
292
|
-
}
|
|
293
|
-
ceiling = low;
|
|
294
|
-
}
|
|
295
|
-
if (accentCapCache.size >= ACCENT_CAP_CACHE_LIMIT) accentCapCache.clear();
|
|
296
|
-
accentCapCache.set(key, ceiling);
|
|
297
|
-
return ceiling;
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* The brand seed as the three numbers Glaze consumes, with its tone capped.
|
|
301
|
-
*
|
|
302
|
-
* Takes the RESOLVED hue rather than the one the caller's literal carries, because
|
|
303
|
-
* `resolveConfig` ranks an explicit {@link PaletteConfig.hue} above a color's own —
|
|
304
|
-
* see the call site for what handing over the literal instead used to break.
|
|
305
|
-
*/
|
|
306
|
-
function cappedAccent(hue, saturation, tone) {
|
|
307
|
-
const capped = capAccentTone(hue, saturation, tone);
|
|
308
|
-
return {
|
|
309
|
-
color: {
|
|
310
|
-
h: hue,
|
|
311
|
-
s: saturation / 100,
|
|
312
|
-
t: capped / 100
|
|
313
|
-
},
|
|
314
|
-
tone: capped
|
|
315
|
-
};
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* Opaque stand-in for the BASE selected fill used by outline / outline-2 / clear Item
|
|
319
|
-
* types (`#surface|#surface-2|#surface-3` + `#accent-surface.09`).
|
|
320
|
-
*
|
|
321
|
-
* Anchors the `accent-text*` contrast. `value: 9` matches the `.09` alpha overlay;
|
|
322
|
-
* `space: 'srgb'` approximates CSS two-layer compositing. Inherited so colored themes
|
|
323
|
-
* re-resolve against their own `surface` + `accent-surface` (default `surface-2` /
|
|
324
|
-
* `surface-3` are `inherit: false` and can't be the mix base). Primary's tinted
|
|
325
|
-
* `surface` makes this slightly harder than default clear-selected, covering
|
|
326
|
-
* outline / outline-2 selected fills as well.
|
|
327
|
-
*
|
|
328
|
-
* The same in both accent arrangements — it is defined by its two ends, and both of
|
|
329
|
-
* those move with the seed on their own.
|
|
330
|
-
*/
|
|
331
|
-
const ACCENT_SELECTED_FILL = { "accent-selected-fill": {
|
|
332
|
-
type: "mix",
|
|
333
|
-
base: "surface",
|
|
334
|
-
target: "accent-surface",
|
|
335
|
-
value: 9,
|
|
336
|
-
space: "srgb"
|
|
337
|
-
} };
|
|
338
|
-
/**
|
|
339
39
|
* Syntax highlighting for `PrismCode`, as its own theme.
|
|
340
40
|
*
|
|
341
41
|
* A small palette of *adaptive* colored tokens. Each one is anchored to `surface`
|
|
@@ -427,14 +127,14 @@ const CODE_COLORS = {
|
|
|
427
127
|
function buildCodeTheme(config, instanceConfig) {
|
|
428
128
|
const codeSaturation = config.themes.code.saturation;
|
|
429
129
|
const theme = glaze(config.hue, codeSaturation, instanceConfig);
|
|
430
|
-
let mirrorFactor = config.
|
|
130
|
+
let mirrorFactor = SURFACE_SATURATION * (config.saturation / codeSaturation);
|
|
431
131
|
if (mirrorFactor > 1) {
|
|
432
|
-
console.warn(`[cube-ui-kit] themes.code.saturation (${codeSaturation}) is too low for
|
|
132
|
+
console.warn(`[cube-ui-kit] themes.code.saturation (${codeSaturation}) is too low for saturation ${config.saturation}: the mirrored code surface would need a factor of ${mirrorFactor.toFixed(3)}. Clamped to 1; raise the code saturation to keep syntax contrast accurate.`);
|
|
433
133
|
mirrorFactor = 1;
|
|
434
134
|
}
|
|
435
135
|
theme.colors({
|
|
436
136
|
surface: {
|
|
437
|
-
tone:
|
|
137
|
+
tone: 100,
|
|
438
138
|
saturation: mirrorFactor
|
|
439
139
|
},
|
|
440
140
|
...CODE_COLORS
|
|
@@ -460,17 +160,19 @@ glaze.configure({
|
|
|
460
160
|
darkDesaturation: 0
|
|
461
161
|
});
|
|
462
162
|
/**
|
|
463
|
-
*
|
|
464
|
-
*
|
|
465
|
-
*
|
|
466
|
-
*
|
|
467
|
-
*
|
|
468
|
-
*
|
|
469
|
-
*
|
|
470
|
-
* higher saturation. Glaze's `extend({ colors })` redefines each listed color
|
|
471
|
-
* from scratch, so we restate the full definition here.
|
|
163
|
+
* Per-colored-theme overrides on top of the default theme:
|
|
164
|
+
* - `surface` — bumped saturation so the banner bg is visibly tinted.
|
|
165
|
+
* - `border` — bumped saturation so OUTLINE-variant borders pick up the
|
|
166
|
+
* theme hue (used by `#<theme>-border` in `item-themes.ts`). Mirrors the
|
|
167
|
+
* default-theme `border` shape (`base: 'surface'`, tone window) but
|
|
168
|
+
* with higher saturation. Glaze's `extend({ colors })` redefines each
|
|
169
|
+
* listed color from scratch, so we restate the full definition here.
|
|
472
170
|
*/
|
|
473
|
-
const
|
|
171
|
+
const TINTED_SURFACE_OVERRIDE = {
|
|
172
|
+
surface: {
|
|
173
|
+
tone: [100 - TINTED_SURFACE_TONE_OFFSET, 100 - TINTED_SURFACE_TONE_OFFSET * 2],
|
|
174
|
+
saturation: TINTED_SURFACE_SATURATION
|
|
175
|
+
},
|
|
474
176
|
border: {
|
|
475
177
|
base: "surface",
|
|
476
178
|
tone: ["-10", "-30"],
|
|
@@ -496,31 +198,13 @@ const TINTED_SURFACE_RAMP = {
|
|
|
496
198
|
}
|
|
497
199
|
};
|
|
498
200
|
/**
|
|
499
|
-
* Per-colored-theme overrides on top of the default theme: a `surface` bumped in
|
|
500
|
-
* saturation so the banner background is visibly tinted, plus
|
|
501
|
-
* {@link TINTED_SURFACE_RAMP}.
|
|
502
|
-
*
|
|
503
|
-
* A function of the config because the surface's tone is — see
|
|
504
|
-
* {@link tintedSurfaceTone}.
|
|
505
|
-
*/
|
|
506
|
-
function tintedSurfaceOverride(config) {
|
|
507
|
-
return {
|
|
508
|
-
surface: {
|
|
509
|
-
tone: tintedSurfaceTone(config),
|
|
510
|
-
saturation: TINTED_SURFACE_SATURATION
|
|
511
|
-
},
|
|
512
|
-
...TINTED_SURFACE_RAMP
|
|
513
|
-
};
|
|
514
|
-
}
|
|
515
|
-
/**
|
|
516
201
|
* A tinted surface, a banding step, and text guaranteed to read on both.
|
|
517
202
|
*
|
|
518
203
|
* The recipe behind {@link getColorTheme} in `./color-theme.ts`, which builds
|
|
519
204
|
* one-off themes at runtime from an arbitrary hue. It lives here so it shares
|
|
520
205
|
* `TINTED_SURFACE_SATURATION`, the tone offsets and the text ramp with
|
|
521
|
-
* {@link
|
|
522
|
-
* and a built-in theme's `surface` should be the same colour for the same hue
|
|
523
|
-
* which also means both have to follow the page when `surfaceMode` moves it.
|
|
206
|
+
* {@link TINTED_SURFACE_OVERRIDE} above rather than forking them — a runtime tint
|
|
207
|
+
* and a built-in theme's `surface` should be the same colour for the same hue.
|
|
524
208
|
*
|
|
525
209
|
* Three colours, because that is what banded, readable table column needs:
|
|
526
210
|
* `surface` for even rows, `surface-2` one tone step down for odd rows and
|
|
@@ -532,185 +216,29 @@ function tintedSurfaceOverride(config) {
|
|
|
532
216
|
* clears it on both bands. The neutral ramp's own `surface-2-text` is shaped the
|
|
533
217
|
* same way for the same reason.
|
|
534
218
|
*/
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
"surface
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
"surface-2
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
"surface-2
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
};
|
|
559
|
-
}
|
|
560
|
-
/**
|
|
561
|
-
* The brand family, in one of two arrangements.
|
|
562
|
-
*
|
|
563
|
-
* **`null`** — the shipped one, verbatim. Every fill hangs off a fixed white
|
|
564
|
-
* `accent-surface-text` at a relative tone delta behind an `['AA','AAA']` floor, and
|
|
565
|
-
* the text pair hangs off `accent-selected-fill` at `-49`. Those floors are
|
|
566
|
-
* load-bearing rather than decorative: relaxing them moves the shipped `accent-text`
|
|
567
|
-
* light tone from 38.76 to 48.63 and the `accent-surface` high-contrast tone from
|
|
568
|
-
* 36.08 to 51.00. Nothing on this path may change — `palette.test.ts` snapshots it.
|
|
569
|
-
*
|
|
570
|
-
* **A color** — the caller handed us one, and the job is to render *that*. Glaze's
|
|
571
|
-
* `from` takes the value directly: it supplies the hue, the tone, and an absolute
|
|
572
|
-
* saturation that does not answer to the theme seed, and it reproduces the value
|
|
573
|
-
* exactly in the light/normal-contrast variant. The floors drop to
|
|
574
|
-
* {@link ACCENT_FILL_CONTRAST} on top, because anchored the shipped way every accent
|
|
575
|
-
* lands at roughly tone 50 whatever went in, and a 4.5 floor then crushes anything
|
|
576
|
-
* light besides.
|
|
577
|
-
*
|
|
578
|
-
* Two details worth keeping straight:
|
|
579
|
-
*
|
|
580
|
-
* - **The ramp carries no floor.** Re-anchored onto the fill, an `['AA','AAA']` floor
|
|
581
|
-
* is measured against the *fill* rather than white and collapses all three steps to
|
|
582
|
-
* near-black. A plain tone step is what the relationship actually is.
|
|
583
|
-
* - **The text pair stays `mode: 'auto'`.** Link text has to invert on a dark page, so
|
|
584
|
-
* exactness belongs to the fill; the text is a brand-toned companion of it.
|
|
585
|
-
*/
|
|
586
|
-
function accentFillColors(accent) {
|
|
587
|
-
if (accent == null) return {
|
|
588
|
-
"accent-surface-text": {
|
|
589
|
-
tone: 100,
|
|
590
|
-
mode: "fixed"
|
|
591
|
-
},
|
|
592
|
-
"accent-surface": {
|
|
593
|
-
base: "accent-surface-text",
|
|
594
|
-
tone: "-49",
|
|
595
|
-
contrast: ["AA", "AAA"],
|
|
596
|
-
mode: "fixed"
|
|
597
|
-
},
|
|
598
|
-
"accent-surface-2": {
|
|
599
|
-
base: "accent-surface-text",
|
|
600
|
-
tone: "-52",
|
|
601
|
-
contrast: ["AA", "AAA"],
|
|
602
|
-
mode: "fixed"
|
|
603
|
-
},
|
|
604
|
-
"accent-surface-3": {
|
|
605
|
-
base: "accent-surface-text",
|
|
606
|
-
tone: "-55",
|
|
607
|
-
contrast: ["AA", "AAA"],
|
|
608
|
-
mode: "fixed"
|
|
609
|
-
},
|
|
610
|
-
"accent-surface-hover": {
|
|
611
|
-
base: "accent-surface-text",
|
|
612
|
-
tone: "-58",
|
|
613
|
-
contrast: ["AA", "AAA"],
|
|
614
|
-
mode: "fixed"
|
|
615
|
-
},
|
|
616
|
-
"accent-surface-border": {
|
|
617
|
-
base: "accent-surface",
|
|
618
|
-
tone: "+13",
|
|
619
|
-
mode: "fixed"
|
|
620
|
-
}
|
|
621
|
-
};
|
|
622
|
-
return {
|
|
623
|
-
"accent-surface-text": {
|
|
624
|
-
tone: 100,
|
|
625
|
-
mode: "fixed"
|
|
626
|
-
},
|
|
627
|
-
"accent-surface": {
|
|
628
|
-
from: accent.color,
|
|
629
|
-
base: "surface",
|
|
630
|
-
contrast: ACCENT_FILL_CONTRAST,
|
|
631
|
-
mode: "fixed"
|
|
632
|
-
},
|
|
633
|
-
"accent-surface-2": {
|
|
634
|
-
base: "accent-surface",
|
|
635
|
-
tone: ACCENT_RAMP.surface2,
|
|
636
|
-
mode: "fixed"
|
|
637
|
-
},
|
|
638
|
-
"accent-surface-3": {
|
|
639
|
-
base: "accent-surface",
|
|
640
|
-
tone: ACCENT_RAMP.surface3,
|
|
641
|
-
mode: "fixed"
|
|
642
|
-
},
|
|
643
|
-
"accent-surface-hover": {
|
|
644
|
-
base: "accent-surface",
|
|
645
|
-
tone: ACCENT_RAMP.hover,
|
|
646
|
-
mode: "fixed"
|
|
647
|
-
},
|
|
648
|
-
"accent-surface-border": {
|
|
649
|
-
base: "accent-surface",
|
|
650
|
-
tone: "+13",
|
|
651
|
-
mode: "fixed"
|
|
652
|
-
}
|
|
653
|
-
};
|
|
654
|
-
}
|
|
655
|
-
/**
|
|
656
|
-
* The brand FOREGROUNDS — text on a neutral surface, and the icon.
|
|
657
|
-
*
|
|
658
|
-
* Split from {@link accentFillColors} because the two have different audiences: the
|
|
659
|
-
* fill ramp is shared with the standalone `special` theme, which builds its own
|
|
660
|
-
* purpose-made subset and must not gain tokens it does not consume. Only the default
|
|
661
|
-
* theme (and the colored themes that inherit from it) takes these.
|
|
662
|
-
*
|
|
663
|
-
* These stay `mode: 'auto'` in both arrangements — a link has to invert on a dark page,
|
|
664
|
-
* so exactness belongs to the fill and these are its brand-toned companions.
|
|
665
|
-
*/
|
|
666
|
-
function accentTextColors(accent) {
|
|
667
|
-
if (accent == null) return {
|
|
668
|
-
...ACCENT_SELECTED_FILL,
|
|
669
|
-
"accent-text": {
|
|
670
|
-
base: "accent-selected-fill",
|
|
671
|
-
tone: "-49",
|
|
672
|
-
saturation: 1,
|
|
673
|
-
contrast: [6, 11]
|
|
674
|
-
},
|
|
675
|
-
"accent-text-soft": {
|
|
676
|
-
base: "accent-selected-fill",
|
|
677
|
-
tone: "-49",
|
|
678
|
-
saturation: 1,
|
|
679
|
-
contrast: ["AA", "AAA"]
|
|
680
|
-
},
|
|
681
|
-
"accent-icon": {
|
|
682
|
-
base: "surface",
|
|
683
|
-
tone: "-38",
|
|
684
|
-
saturation: .9375
|
|
685
|
-
}
|
|
686
|
-
};
|
|
687
|
-
return {
|
|
688
|
-
...ACCENT_SELECTED_FILL,
|
|
689
|
-
"accent-text": {
|
|
690
|
-
from: accent.color,
|
|
691
|
-
base: "accent-selected-fill",
|
|
692
|
-
tone: Math.max(0, accent.tone - ACCENT_TEXT_HOVER_STEP),
|
|
693
|
-
contrast: ACCENT_TEXT_HOVER_CONTRAST
|
|
694
|
-
},
|
|
695
|
-
"accent-text-soft": {
|
|
696
|
-
from: accent.color,
|
|
697
|
-
base: "accent-selected-fill",
|
|
698
|
-
contrast: ACCENT_TEXT_CONTRAST
|
|
699
|
-
},
|
|
700
|
-
"accent-icon": {
|
|
701
|
-
from: accent.color,
|
|
702
|
-
base: "surface",
|
|
703
|
-
contrast: ACCENT_TEXT_CONTRAST
|
|
704
|
-
}
|
|
705
|
-
};
|
|
706
|
-
}
|
|
707
|
-
/** Every accent token the default theme carries — fills, foregrounds, and the mix. */
|
|
708
|
-
function accentColors(accent) {
|
|
709
|
-
return {
|
|
710
|
-
...accentFillColors(accent),
|
|
711
|
-
...accentTextColors(accent)
|
|
712
|
-
};
|
|
713
|
-
}
|
|
219
|
+
const TINT_RECIPE = {
|
|
220
|
+
surface: {
|
|
221
|
+
tone: [100 - TINTED_SURFACE_TONE_OFFSET, 100 - TINTED_SURFACE_TONE_OFFSET * 2],
|
|
222
|
+
saturation: TINTED_SURFACE_SATURATION
|
|
223
|
+
},
|
|
224
|
+
"surface-2": {
|
|
225
|
+
base: "surface",
|
|
226
|
+
tone: ["-2", "-4"],
|
|
227
|
+
saturation: TINTED_SURFACE_SATURATION
|
|
228
|
+
},
|
|
229
|
+
"surface-2-text": {
|
|
230
|
+
base: "surface-2",
|
|
231
|
+
tone: `${TEXT_TONE - TINTED_SURFACE_TONE_OFFSET - SURFACE_2_TEXT_OFFSET}`,
|
|
232
|
+
saturation: .25,
|
|
233
|
+
contrast: ["AA", "AAA"]
|
|
234
|
+
},
|
|
235
|
+
"surface-2-text-soft": {
|
|
236
|
+
base: "surface-2",
|
|
237
|
+
tone: `${TEXT_SOFT_TONE - TINTED_SURFACE_TONE_OFFSET - SURFACE_2_TEXT_OFFSET}`,
|
|
238
|
+
saturation: .25,
|
|
239
|
+
contrast: ["AA", "AAA"]
|
|
240
|
+
}
|
|
241
|
+
};
|
|
714
242
|
/**
|
|
715
243
|
* Build the full palette from a resolved config.
|
|
716
244
|
*
|
|
@@ -720,11 +248,7 @@ function accentColors(accent) {
|
|
|
720
248
|
* seed and a `GlazePalette` has no mutation API, so re-seeding means rebuilding.
|
|
721
249
|
*/
|
|
722
250
|
function buildPalette(config, options = {}) {
|
|
723
|
-
const { hue, baseHue, saturation,
|
|
724
|
-
const accent = accentColor !== null && accentTone !== null && accentSaturation !== null ? cappedAccent(hue, accentSaturation, accentTone) : null;
|
|
725
|
-
const baseTone = surfaceTone(config);
|
|
726
|
-
const baseScale = baseSaturationScale(config);
|
|
727
|
-
const baseChroma = (factor) => Math.min(1, factor * baseScale);
|
|
251
|
+
const { hue, baseHue, saturation, pastel, themes, contrastLevel } = config;
|
|
728
252
|
const sharedOverrides = options.isolateContrastLevel ? { contrastLevel } : {};
|
|
729
253
|
const overrides = {
|
|
730
254
|
...sharedOverrides,
|
|
@@ -738,43 +262,43 @@ function buildPalette(config, options = {}) {
|
|
|
738
262
|
const defaultTheme = glaze(hue, saturation, instanceConfig);
|
|
739
263
|
defaultTheme.colors({
|
|
740
264
|
surface: {
|
|
741
|
-
tone:
|
|
742
|
-
saturation:
|
|
265
|
+
tone: 100,
|
|
266
|
+
saturation: SURFACE_SATURATION,
|
|
743
267
|
hue: baseHue
|
|
744
268
|
},
|
|
745
269
|
"surface-2": {
|
|
746
270
|
hue: baseHue,
|
|
747
271
|
base: "surface",
|
|
748
272
|
tone: ["-2", "-4"],
|
|
749
|
-
saturation:
|
|
273
|
+
saturation: .1,
|
|
750
274
|
inherit: false
|
|
751
275
|
},
|
|
752
276
|
"surface-3": {
|
|
753
277
|
hue: baseHue,
|
|
754
278
|
base: "surface",
|
|
755
279
|
tone: ["-4", "-8"],
|
|
756
|
-
saturation:
|
|
280
|
+
saturation: .1,
|
|
757
281
|
inherit: false
|
|
758
282
|
},
|
|
759
283
|
"surface-4": {
|
|
760
284
|
hue: baseHue,
|
|
761
285
|
base: "surface",
|
|
762
286
|
tone: ["-6", "-12"],
|
|
763
|
-
saturation:
|
|
287
|
+
saturation: .1,
|
|
764
288
|
inherit: false
|
|
765
289
|
},
|
|
766
290
|
"surface-text": {
|
|
767
291
|
hue: baseHue,
|
|
768
292
|
base: "surface",
|
|
769
293
|
tone: `${TEXT_TONE - 2}`,
|
|
770
|
-
saturation:
|
|
294
|
+
saturation: .2,
|
|
771
295
|
contrast: ["AA", "AAA"]
|
|
772
296
|
},
|
|
773
297
|
"surface-text-soft": {
|
|
774
298
|
hue: baseHue,
|
|
775
299
|
base: "surface",
|
|
776
300
|
tone: `${TEXT_SOFT_TONE - 2}`,
|
|
777
|
-
saturation:
|
|
301
|
+
saturation: .2,
|
|
778
302
|
contrast: ["AA", "AAA"],
|
|
779
303
|
inherit: false
|
|
780
304
|
},
|
|
@@ -782,7 +306,7 @@ function buildPalette(config, options = {}) {
|
|
|
782
306
|
hue: baseHue,
|
|
783
307
|
base: "surface",
|
|
784
308
|
tone: `${TEXT_SOFT2_TONE - 2}`,
|
|
785
|
-
saturation:
|
|
309
|
+
saturation: .2,
|
|
786
310
|
contrast: ["AA", "AAA"],
|
|
787
311
|
inherit: false
|
|
788
312
|
},
|
|
@@ -790,7 +314,7 @@ function buildPalette(config, options = {}) {
|
|
|
790
314
|
hue: baseHue,
|
|
791
315
|
base: "surface-2",
|
|
792
316
|
tone: `${TEXT_TONE + SURFACE_2_TEXT_OFFSET}`,
|
|
793
|
-
saturation:
|
|
317
|
+
saturation: .2,
|
|
794
318
|
contrast: ["AA", "AAA"],
|
|
795
319
|
inherit: false
|
|
796
320
|
},
|
|
@@ -798,7 +322,7 @@ function buildPalette(config, options = {}) {
|
|
|
798
322
|
hue: baseHue,
|
|
799
323
|
base: "surface-2",
|
|
800
324
|
tone: `${TEXT_SOFT_TONE + SURFACE_2_TEXT_OFFSET}`,
|
|
801
|
-
saturation:
|
|
325
|
+
saturation: .2,
|
|
802
326
|
contrast: ["AA", "AAA"],
|
|
803
327
|
inherit: false
|
|
804
328
|
},
|
|
@@ -806,7 +330,7 @@ function buildPalette(config, options = {}) {
|
|
|
806
330
|
hue: baseHue,
|
|
807
331
|
base: "surface-3",
|
|
808
332
|
tone: `${TEXT_TONE + SURFACE_3_TEXT_OFFSET}`,
|
|
809
|
-
saturation:
|
|
333
|
+
saturation: .2,
|
|
810
334
|
contrast: ["AA", "AAA"],
|
|
811
335
|
inherit: false
|
|
812
336
|
},
|
|
@@ -814,7 +338,7 @@ function buildPalette(config, options = {}) {
|
|
|
814
338
|
hue: baseHue,
|
|
815
339
|
base: "surface-3",
|
|
816
340
|
tone: `${TEXT_SOFT_TONE + SURFACE_3_TEXT_OFFSET}`,
|
|
817
|
-
saturation:
|
|
341
|
+
saturation: .2,
|
|
818
342
|
contrast: ["AA", "AAA"],
|
|
819
343
|
inherit: false
|
|
820
344
|
},
|
|
@@ -822,13 +346,13 @@ function buildPalette(config, options = {}) {
|
|
|
822
346
|
hue: baseHue,
|
|
823
347
|
base: "surface",
|
|
824
348
|
tone: ["-10", "-30"],
|
|
825
|
-
saturation:
|
|
349
|
+
saturation: .175
|
|
826
350
|
},
|
|
827
351
|
placeholder: {
|
|
828
352
|
hue: baseHue,
|
|
829
353
|
base: "surface",
|
|
830
354
|
tone: "-33",
|
|
831
|
-
saturation:
|
|
355
|
+
saturation: .175,
|
|
832
356
|
inherit: false
|
|
833
357
|
},
|
|
834
358
|
focus: {
|
|
@@ -846,7 +370,7 @@ function buildPalette(config, options = {}) {
|
|
|
846
370
|
hue: baseHue,
|
|
847
371
|
base: "surface",
|
|
848
372
|
tone: "-3.5",
|
|
849
|
-
saturation:
|
|
373
|
+
saturation: .2,
|
|
850
374
|
inherit: false
|
|
851
375
|
},
|
|
852
376
|
"disabled-surface-text": {
|
|
@@ -858,11 +382,67 @@ function buildPalette(config, options = {}) {
|
|
|
858
382
|
"surface-inverse": {
|
|
859
383
|
hue: baseHue,
|
|
860
384
|
tone: 12,
|
|
861
|
-
saturation:
|
|
385
|
+
saturation: .475,
|
|
862
386
|
mode: "fixed",
|
|
863
387
|
inherit: false
|
|
864
388
|
},
|
|
865
|
-
|
|
389
|
+
"accent-surface-text": {
|
|
390
|
+
tone: 100,
|
|
391
|
+
mode: "fixed"
|
|
392
|
+
},
|
|
393
|
+
"accent-surface": {
|
|
394
|
+
base: "accent-surface-text",
|
|
395
|
+
tone: "-49",
|
|
396
|
+
contrast: ["AA", "AAA"],
|
|
397
|
+
mode: "fixed"
|
|
398
|
+
},
|
|
399
|
+
"accent-surface-2": {
|
|
400
|
+
base: "accent-surface-text",
|
|
401
|
+
tone: "-52",
|
|
402
|
+
contrast: ["AA", "AAA"],
|
|
403
|
+
mode: "fixed"
|
|
404
|
+
},
|
|
405
|
+
"accent-surface-3": {
|
|
406
|
+
base: "accent-surface-text",
|
|
407
|
+
tone: "-55",
|
|
408
|
+
contrast: ["AA", "AAA"],
|
|
409
|
+
mode: "fixed"
|
|
410
|
+
},
|
|
411
|
+
"accent-surface-hover": {
|
|
412
|
+
base: "accent-surface-text",
|
|
413
|
+
tone: "-58",
|
|
414
|
+
contrast: ["AA", "AAA"],
|
|
415
|
+
mode: "fixed"
|
|
416
|
+
},
|
|
417
|
+
"accent-surface-border": {
|
|
418
|
+
base: "accent-surface",
|
|
419
|
+
tone: "+13",
|
|
420
|
+
mode: "fixed"
|
|
421
|
+
},
|
|
422
|
+
"accent-selected-fill": {
|
|
423
|
+
type: "mix",
|
|
424
|
+
base: "surface",
|
|
425
|
+
target: "accent-surface",
|
|
426
|
+
value: 9,
|
|
427
|
+
space: "srgb"
|
|
428
|
+
},
|
|
429
|
+
"accent-text": {
|
|
430
|
+
base: "accent-selected-fill",
|
|
431
|
+
tone: "-49",
|
|
432
|
+
saturation: 1,
|
|
433
|
+
contrast: [6, 11]
|
|
434
|
+
},
|
|
435
|
+
"accent-text-soft": {
|
|
436
|
+
base: "accent-selected-fill",
|
|
437
|
+
tone: "-49",
|
|
438
|
+
saturation: 1,
|
|
439
|
+
contrast: ["AA", "AAA"]
|
|
440
|
+
},
|
|
441
|
+
"accent-icon": {
|
|
442
|
+
base: "surface",
|
|
443
|
+
tone: "-38",
|
|
444
|
+
saturation: .9375
|
|
445
|
+
},
|
|
866
446
|
"accent-disabled-surface": {
|
|
867
447
|
base: "surface",
|
|
868
448
|
tone: "-13",
|
|
@@ -921,31 +501,26 @@ function buildPalette(config, options = {}) {
|
|
|
921
501
|
hue: baseHue
|
|
922
502
|
}
|
|
923
503
|
});
|
|
924
|
-
const
|
|
925
|
-
const primaryTheme = defaultTheme.extend({ colors: tintedSurface });
|
|
926
|
-
const statusColors = accent == null ? tintedSurface : {
|
|
927
|
-
...tintedSurface,
|
|
928
|
-
...accentColors(null)
|
|
929
|
-
};
|
|
504
|
+
const primaryTheme = defaultTheme.extend({ colors: TINTED_SURFACE_OVERRIDE });
|
|
930
505
|
const successTheme = defaultTheme.extend({
|
|
931
506
|
hue: themes.success.hue,
|
|
932
507
|
saturation: themes.success.saturation,
|
|
933
|
-
colors:
|
|
508
|
+
colors: TINTED_SURFACE_OVERRIDE
|
|
934
509
|
});
|
|
935
510
|
const dangerTheme = defaultTheme.extend({
|
|
936
511
|
hue: themes.danger.hue,
|
|
937
512
|
saturation: themes.danger.saturation,
|
|
938
|
-
colors:
|
|
513
|
+
colors: TINTED_SURFACE_OVERRIDE
|
|
939
514
|
});
|
|
940
515
|
const warningTheme = defaultTheme.extend({
|
|
941
516
|
hue: themes.warning.hue,
|
|
942
517
|
saturation: themes.warning.saturation,
|
|
943
|
-
colors:
|
|
518
|
+
colors: TINTED_SURFACE_OVERRIDE
|
|
944
519
|
});
|
|
945
520
|
const noteTheme = defaultTheme.extend({
|
|
946
521
|
hue: themes.note.hue,
|
|
947
522
|
saturation: themes.note.saturation,
|
|
948
|
-
colors:
|
|
523
|
+
colors: TINTED_SURFACE_OVERRIDE
|
|
949
524
|
});
|
|
950
525
|
const specialTheme = glaze(hue, saturation, instanceConfig);
|
|
951
526
|
specialTheme.colors({
|
|
@@ -954,7 +529,39 @@ function buildPalette(config, options = {}) {
|
|
|
954
529
|
saturation: .475,
|
|
955
530
|
mode: "fixed"
|
|
956
531
|
},
|
|
957
|
-
|
|
532
|
+
"accent-surface-text": {
|
|
533
|
+
tone: 100,
|
|
534
|
+
mode: "fixed"
|
|
535
|
+
},
|
|
536
|
+
"accent-surface": {
|
|
537
|
+
base: "accent-surface-text",
|
|
538
|
+
tone: "-49",
|
|
539
|
+
contrast: ["AA", "AAA"],
|
|
540
|
+
mode: "fixed"
|
|
541
|
+
},
|
|
542
|
+
"accent-surface-2": {
|
|
543
|
+
base: "accent-surface-text",
|
|
544
|
+
tone: "-52",
|
|
545
|
+
contrast: ["AA", "AAA"],
|
|
546
|
+
mode: "fixed"
|
|
547
|
+
},
|
|
548
|
+
"accent-surface-3": {
|
|
549
|
+
base: "accent-surface-text",
|
|
550
|
+
tone: "-55",
|
|
551
|
+
contrast: ["AA", "AAA"],
|
|
552
|
+
mode: "fixed"
|
|
553
|
+
},
|
|
554
|
+
"accent-surface-border": {
|
|
555
|
+
base: "accent-surface",
|
|
556
|
+
tone: "+13",
|
|
557
|
+
mode: "fixed"
|
|
558
|
+
},
|
|
559
|
+
"accent-surface-hover": {
|
|
560
|
+
base: "accent-surface-text",
|
|
561
|
+
tone: "-58",
|
|
562
|
+
contrast: ["AA", "AAA"],
|
|
563
|
+
mode: "fixed"
|
|
564
|
+
},
|
|
958
565
|
"accent-text": {
|
|
959
566
|
base: "accent-surface-text",
|
|
960
567
|
tone: "-58",
|
|
@@ -1143,5 +750,5 @@ function renderPaletteTokens(options = {}) {
|
|
|
1143
750
|
const PALETTE_TOKENS = lazyStyles(getPaletteTokens);
|
|
1144
751
|
|
|
1145
752
|
//#endregion
|
|
1146
|
-
export { PALETTE_TOKENS, getCodeTheme, getPalette, getPaletteTokens, renderPaletteTokens
|
|
753
|
+
export { PALETTE_TOKENS, TINT_RECIPE, getCodeTheme, getPalette, getPaletteTokens, renderPaletteTokens };
|
|
1147
754
|
//# sourceMappingURL=palette.js.map
|