@cube-dev/ui-kit 0.152.0 → 0.154.0
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/README.md +17 -0
- package/dist/CHANGELOG.md +111 -0
- package/dist/README.md +17 -0
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +3 -2
- 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.d.ts +16 -0
- package/dist/components/Root.js +7 -3
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/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/TreeNode.js.map +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.d.ts +2 -2
- package/dist/components/fields/Checkbox/Checkbox.js +2 -2
- package/dist/components/fields/Checkbox/Checkbox.js.map +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 +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.d.ts +12 -0
- package/dist/components/fields/DatePicker/MonthPicker.js +19 -0
- package/dist/components/fields/DatePicker/MonthPicker.js.map +1 -0
- package/dist/components/fields/DatePicker/PeriodPicker.d.ts +28 -0
- package/dist/components/fields/DatePicker/PeriodPicker.js +131 -0
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -0
- package/dist/components/fields/DatePicker/QuarterPicker.d.ts +12 -0
- package/dist/components/fields/DatePicker/QuarterPicker.js +19 -0
- package/dist/components/fields/DatePicker/QuarterPicker.js.map +1 -0
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.d.ts +12 -0
- package/dist/components/fields/DatePicker/WeekPicker.js +19 -0
- package/dist/components/fields/DatePicker/WeekPicker.js.map +1 -0
- package/dist/components/fields/DatePicker/YearPicker.d.ts +12 -0
- package/dist/components/fields/DatePicker/YearPicker.js +19 -0
- package/dist/components/fields/DatePicker/YearPicker.js.map +1 -0
- package/dist/components/fields/DatePicker/index.d.ts +7 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.d.ts +35 -0
- package/dist/components/fields/DatePicker/period.js +58 -0
- package/dist/components/fields/DatePicker/period.js.map +1 -0
- 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 +2 -2
- package/dist/components/fields/RadioGroup/Radio.js.map +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.d.ts +2 -2
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/Switch/Switch.js.map +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/index.d.ts +6 -0
- 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/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 +12 -3
- package/dist/components/other/Calendar/Calendar.js.map +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +4 -2
- package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +35 -13
- package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +229 -0
- package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -0
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.d.ts +10 -3
- package/dist/components/other/CubeLogo/CubeLogo.js +31 -4
- package/dist/components/other/CubeLogo/CubeLogo.js.map +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.d.ts +5 -5
- package/dist/data/themes.js +6 -6
- package/dist/data/themes.js.map +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/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 +12 -5
- package/dist/index.js +12 -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/shared/form.d.ts +27 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.d.ts +41 -2
- package/dist/tokens/colors.js +77 -9
- package/dist/tokens/colors.js.map +1 -1
- package/dist/tokens/index.d.ts +3 -2
- package/dist/tokens/index.js +23 -16
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +10 -6
- package/dist/tokens/lazy-styles.js.map +1 -1
- package/dist/tokens/palette-config.d.ts +222 -0
- package/dist/tokens/palette-config.js +309 -0
- package/dist/tokens/palette-config.js.map +1 -0
- package/dist/tokens/palette.d.ts +45 -5
- package/dist/tokens/palette.js +578 -405
- package/dist/tokens/palette.js.map +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +3 -3
- package/docs/Colors.md +4 -0
- package/docs/Theming.md +375 -0
- package/docs/Usage.md +30 -3
- package/docs/components/Root.md +1 -0
- package/docs/components/fields/PeriodPicker.md +75 -0
- package/docs/components/other/CubeLogo.md +27 -1
- package/docs/glaze/api.md +156 -8
- package/docs/glaze/methodology.md +21 -1
- package/docs/glaze/okhst.md +13 -0
- package/docs/tasty/README.md +1 -0
- package/docs/tasty/ai-agents.md +206 -0
- package/docs/tasty/injector.md +15 -0
- package/docs/tasty/react-api.md +21 -2
- package/package.json +3 -3
package/dist/tokens/palette.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.154.0 | Cube Dev Team */
|
|
2
|
+
import { getPaletteConfig, getPaletteVersion, resolvePaletteConfig } from "./palette-config.js";
|
|
2
3
|
import { lazyStyles } from "./lazy-styles.js";
|
|
3
4
|
import { glaze } from "@tenphi/glaze";
|
|
4
5
|
|
|
@@ -13,317 +14,144 @@ import { glaze } from "@tenphi/glaze";
|
|
|
13
14
|
*
|
|
14
15
|
* The `@dark` and `@hc` state aliases are wired up globally in
|
|
15
16
|
* `src/components/Root.tsx` (see `setGlobalPredefinedStates`).
|
|
17
|
+
*
|
|
18
|
+
* This module owns the *recipe* — which colors exist and how each one is
|
|
19
|
+
* positioned relative to its base. The *seeds* it is built from (hue,
|
|
20
|
+
* saturation, pastel, contrast level) live in `./palette-config.ts` and are
|
|
21
|
+
* tunable at runtime; `buildPalette()` below is a pure function of them.
|
|
16
22
|
*/
|
|
17
|
-
const PURPLE_HUE = 280.3;
|
|
18
|
-
const SUCCESS_HUE = 156.9;
|
|
19
|
-
const DANGER_HUE = 23.1;
|
|
20
|
-
const WARNING_HUE = 84.3;
|
|
21
|
-
const NOTE_HUE = 302.3;
|
|
22
|
-
/** Seed saturation; per-color saturation factors below are 0–1 of this seed. */
|
|
23
|
-
const SEED_SATURATION = 80;
|
|
24
23
|
const TEXT_TONE = -98;
|
|
25
24
|
const TEXT_SOFT_TONE = -72;
|
|
26
25
|
const TEXT_SOFT2_TONE = -52;
|
|
27
26
|
const SURFACE_2_TEXT_OFFSET = 2;
|
|
28
27
|
const SURFACE_3_TEXT_OFFSET = 4;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
tone: "-6",
|
|
62
|
-
saturation: .1,
|
|
63
|
-
inherit: false
|
|
64
|
-
},
|
|
65
|
-
"surface-text": {
|
|
66
|
-
base: "surface",
|
|
67
|
-
tone: `${TEXT_TONE - 2}`,
|
|
68
|
-
saturation: .2,
|
|
69
|
-
contrast: ["AA", "AAA"]
|
|
70
|
-
},
|
|
71
|
-
"surface-text-soft": {
|
|
72
|
-
base: "surface",
|
|
73
|
-
tone: `${TEXT_SOFT_TONE - 2}`,
|
|
74
|
-
saturation: .2,
|
|
75
|
-
contrast: ["AA", "AAA"],
|
|
76
|
-
inherit: false
|
|
77
|
-
},
|
|
78
|
-
"surface-text-soft-2": {
|
|
79
|
-
base: "surface",
|
|
80
|
-
tone: `${TEXT_SOFT2_TONE - 2}`,
|
|
81
|
-
saturation: .2,
|
|
82
|
-
contrast: ["AA", "AAA"],
|
|
83
|
-
inherit: false
|
|
84
|
-
},
|
|
85
|
-
"surface-2-text": {
|
|
86
|
-
base: "surface-2",
|
|
87
|
-
tone: `${TEXT_TONE + SURFACE_2_TEXT_OFFSET}`,
|
|
88
|
-
saturation: .2,
|
|
89
|
-
contrast: ["AA", "AAA"],
|
|
90
|
-
inherit: false
|
|
91
|
-
},
|
|
92
|
-
"surface-2-text-soft": {
|
|
93
|
-
base: "surface-2",
|
|
94
|
-
tone: `${TEXT_SOFT_TONE + SURFACE_2_TEXT_OFFSET}`,
|
|
95
|
-
saturation: .2,
|
|
96
|
-
contrast: ["AA", "AAA"],
|
|
97
|
-
inherit: false
|
|
98
|
-
},
|
|
99
|
-
"surface-3-text": {
|
|
100
|
-
base: "surface-3",
|
|
101
|
-
tone: `${TEXT_TONE + SURFACE_3_TEXT_OFFSET}`,
|
|
102
|
-
saturation: .2,
|
|
103
|
-
contrast: ["AA", "AAA"],
|
|
104
|
-
inherit: false
|
|
105
|
-
},
|
|
106
|
-
"surface-3-text-soft": {
|
|
107
|
-
base: "surface-3",
|
|
108
|
-
tone: `${TEXT_SOFT_TONE + SURFACE_3_TEXT_OFFSET}`,
|
|
109
|
-
saturation: .2,
|
|
110
|
-
contrast: ["AA", "AAA"],
|
|
111
|
-
inherit: false
|
|
112
|
-
},
|
|
113
|
-
border: {
|
|
114
|
-
base: "surface",
|
|
115
|
-
tone: ["-10", "-20"],
|
|
116
|
-
saturation: .175
|
|
117
|
-
},
|
|
118
|
-
placeholder: {
|
|
119
|
-
base: "surface",
|
|
120
|
-
tone: "-33",
|
|
121
|
-
saturation: .175,
|
|
122
|
-
inherit: false
|
|
123
|
-
},
|
|
124
|
-
focus: {
|
|
125
|
-
base: "surface",
|
|
126
|
-
tone: "-29",
|
|
127
|
-
saturation: .8625,
|
|
128
|
-
inherit: false
|
|
129
|
-
},
|
|
130
|
-
disabled: {
|
|
131
|
-
tone: 80.8,
|
|
132
|
-
saturation: .4,
|
|
133
|
-
inherit: false
|
|
134
|
-
},
|
|
135
|
-
"disabled-surface": {
|
|
136
|
-
base: "surface",
|
|
137
|
-
tone: "-3.5",
|
|
138
|
-
saturation: .2,
|
|
139
|
-
inherit: false
|
|
140
|
-
},
|
|
141
|
-
"disabled-surface-text": {
|
|
142
|
-
base: "surface",
|
|
143
|
-
tone: "-23",
|
|
144
|
-
saturation: .3,
|
|
145
|
-
inherit: false
|
|
146
|
-
},
|
|
147
|
-
"surface-inverse": {
|
|
148
|
-
tone: 12,
|
|
149
|
-
saturation: .475,
|
|
150
|
-
mode: "fixed",
|
|
151
|
-
inherit: false
|
|
152
|
-
},
|
|
153
|
-
"accent-surface-text": {
|
|
154
|
-
tone: 100,
|
|
155
|
-
mode: "fixed"
|
|
156
|
-
},
|
|
157
|
-
"accent-surface": {
|
|
158
|
-
base: "accent-surface-text",
|
|
159
|
-
tone: "-49",
|
|
160
|
-
contrast: ["AA", "AAA"],
|
|
161
|
-
mode: "fixed"
|
|
162
|
-
},
|
|
163
|
-
"accent-surface-2": {
|
|
164
|
-
base: "accent-surface-text",
|
|
165
|
-
tone: "-52",
|
|
166
|
-
contrast: ["AA", "AAA"],
|
|
167
|
-
mode: "fixed"
|
|
168
|
-
},
|
|
169
|
-
"accent-surface-3": {
|
|
170
|
-
base: "accent-surface-text",
|
|
171
|
-
tone: "-55",
|
|
172
|
-
contrast: ["AA", "AAA"],
|
|
173
|
-
mode: "fixed"
|
|
174
|
-
},
|
|
175
|
-
"accent-surface-hover": {
|
|
176
|
-
base: "accent-surface-text",
|
|
177
|
-
tone: "-58",
|
|
178
|
-
contrast: ["AA", "AAA"],
|
|
179
|
-
mode: "fixed"
|
|
180
|
-
},
|
|
181
|
-
"accent-surface-border": {
|
|
182
|
-
base: "accent-surface",
|
|
183
|
-
tone: "+13",
|
|
184
|
-
mode: "fixed"
|
|
185
|
-
},
|
|
186
|
-
"accent-selected-fill": {
|
|
187
|
-
type: "mix",
|
|
188
|
-
base: "surface",
|
|
189
|
-
target: "accent-surface",
|
|
190
|
-
value: 9,
|
|
191
|
-
space: "srgb"
|
|
192
|
-
},
|
|
193
|
-
"accent-text": {
|
|
194
|
-
base: "accent-selected-fill",
|
|
195
|
-
tone: "-49",
|
|
196
|
-
saturation: 1,
|
|
197
|
-
contrast: [6, 11]
|
|
198
|
-
},
|
|
199
|
-
"accent-text-soft": {
|
|
200
|
-
base: "accent-selected-fill",
|
|
201
|
-
tone: "-49",
|
|
202
|
-
saturation: 1,
|
|
203
|
-
contrast: ["AA", "AAA"]
|
|
204
|
-
},
|
|
205
|
-
"accent-icon": {
|
|
206
|
-
base: "surface",
|
|
207
|
-
tone: "-38",
|
|
208
|
-
saturation: .9375
|
|
209
|
-
},
|
|
210
|
-
"accent-disabled-surface": {
|
|
211
|
-
base: "surface",
|
|
212
|
-
tone: "-13",
|
|
213
|
-
saturation: .5,
|
|
214
|
-
mode: "fixed"
|
|
215
|
-
},
|
|
216
|
-
"accent-disabled-surface-text": {
|
|
217
|
-
base: "accent-disabled-surface",
|
|
218
|
-
tone: "max",
|
|
219
|
-
saturation: .4,
|
|
220
|
-
mode: "fixed"
|
|
221
|
-
},
|
|
28
|
+
const CODE_STRING_HUE = 280.3;
|
|
29
|
+
/**
|
|
30
|
+
* Saturation factor of the neutral `surface`.
|
|
31
|
+
*
|
|
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
|
+
*/
|
|
35
|
+
const SURFACE_SATURATION = .12;
|
|
36
|
+
const TINTED_SURFACE_SATURATION = .2;
|
|
37
|
+
const TINTED_SURFACE_TONE_OFFSET = 2;
|
|
38
|
+
/**
|
|
39
|
+
* Syntax highlighting for `PrismCode`, as its own theme.
|
|
40
|
+
*
|
|
41
|
+
* A small palette of *adaptive* colored tokens. Each one is anchored to `surface`
|
|
42
|
+
* with a relative tone plus an `['AA','AAA']` readability floor, so it stays legible
|
|
43
|
+
* in light, dark and high contrast. Hues mirror the long-standing PrismCode
|
|
44
|
+
* reference (pink keywords / pink functions / purple strings / green numbers / gray
|
|
45
|
+
* comments); `code-attribute` keeps cyan for HTML attribute names, CSS properties
|
|
46
|
+
* and selectors, while HTML/XML tag names reuse `code-keyword`. Diff insertion and
|
|
47
|
+
* deletion reuse the `success-*` / `danger-*` ramps instead.
|
|
48
|
+
*
|
|
49
|
+
* Two things are deliberately static here. Every hue is an absolute literal, so a
|
|
50
|
+
* re-seeded brand cannot rotate the syntax palette — a green brand would otherwise
|
|
51
|
+
* collide `code-string` with `code-number` (156°). And these factors are relative to
|
|
52
|
+
* the *code* theme's own seed (`themes.code.saturation`), not the palette-level one,
|
|
53
|
+
* so tuning the app's saturation cannot wash out a code block.
|
|
54
|
+
*
|
|
55
|
+
* That separate seed is the only reason these live outside the default theme: a
|
|
56
|
+
* theme colour can never exceed its own seed, and four of these sit at factor `1.0`,
|
|
57
|
+
* so they could not hold their chroma inside a default theme seeded below 80.
|
|
58
|
+
*/
|
|
59
|
+
const CODE_COLORS = {
|
|
222
60
|
"code-comment": {
|
|
223
61
|
base: "surface",
|
|
224
62
|
hue: 280,
|
|
225
63
|
saturation: .1,
|
|
226
64
|
tone: "-50",
|
|
227
|
-
contrast: ["AA", "AAA"]
|
|
228
|
-
inherit: false
|
|
65
|
+
contrast: ["AA", "AAA"]
|
|
229
66
|
},
|
|
230
67
|
"code-punctuation": {
|
|
231
68
|
base: "surface",
|
|
232
69
|
hue: 348,
|
|
233
70
|
saturation: .4,
|
|
234
71
|
tone: "-50",
|
|
235
|
-
contrast: ["AA", "AAA"]
|
|
236
|
-
inherit: false
|
|
72
|
+
contrast: ["AA", "AAA"]
|
|
237
73
|
},
|
|
238
74
|
"code-keyword": {
|
|
239
75
|
base: "surface",
|
|
240
76
|
hue: 348,
|
|
241
77
|
saturation: 1,
|
|
242
78
|
tone: "-54",
|
|
243
|
-
contrast: ["AA", "AAA"]
|
|
244
|
-
inherit: false
|
|
79
|
+
contrast: ["AA", "AAA"]
|
|
245
80
|
},
|
|
246
81
|
"code-string": {
|
|
247
82
|
base: "surface",
|
|
248
|
-
hue:
|
|
83
|
+
hue: CODE_STRING_HUE,
|
|
249
84
|
saturation: 1,
|
|
250
85
|
tone: "-50",
|
|
251
|
-
contrast: ["AA", "AAA"]
|
|
252
|
-
inherit: false
|
|
86
|
+
contrast: ["AA", "AAA"]
|
|
253
87
|
},
|
|
254
88
|
"code-number": {
|
|
255
89
|
base: "surface",
|
|
256
90
|
hue: 156,
|
|
257
91
|
saturation: .9,
|
|
258
92
|
tone: "-50",
|
|
259
|
-
contrast: ["AA", "AAA"]
|
|
260
|
-
inherit: false
|
|
93
|
+
contrast: ["AA", "AAA"]
|
|
261
94
|
},
|
|
262
95
|
"code-function": {
|
|
263
96
|
base: "surface",
|
|
264
97
|
hue: 348,
|
|
265
98
|
saturation: 1,
|
|
266
99
|
tone: "-54",
|
|
267
|
-
contrast: ["AA", "AAA"]
|
|
268
|
-
inherit: false
|
|
100
|
+
contrast: ["AA", "AAA"]
|
|
269
101
|
},
|
|
270
102
|
"code-attribute": {
|
|
271
103
|
base: "surface",
|
|
272
104
|
hue: 200,
|
|
273
105
|
saturation: 1,
|
|
274
106
|
tone: "-50",
|
|
275
|
-
contrast: ["AA", "AAA"]
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
107
|
+
contrast: ["AA", "AAA"]
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Build the standalone theme the `code-*` tokens live in.
|
|
112
|
+
*
|
|
113
|
+
* Its seed is the code saturation, so {@link CODE_COLORS} keeps its authored factors
|
|
114
|
+
* verbatim and resolves identically at any palette saturation. The mirrored `surface`
|
|
115
|
+
* is an implementation detail — it exists only as the contrast base, and is filtered
|
|
116
|
+
* out of the emitted tokens by {@link pickCodeTokens}.
|
|
117
|
+
*/
|
|
118
|
+
function buildCodeTheme(config, instanceConfig) {
|
|
119
|
+
const codeSaturation = config.themes.code.saturation;
|
|
120
|
+
const theme = glaze(config.hue, codeSaturation, instanceConfig);
|
|
121
|
+
let mirrorFactor = SURFACE_SATURATION * (config.saturation / codeSaturation);
|
|
122
|
+
if (mirrorFactor > 1) {
|
|
123
|
+
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.`);
|
|
124
|
+
mirrorFactor = 1;
|
|
125
|
+
}
|
|
126
|
+
theme.colors({
|
|
127
|
+
surface: {
|
|
128
|
+
tone: 100,
|
|
129
|
+
saturation: mirrorFactor
|
|
130
|
+
},
|
|
131
|
+
...CODE_COLORS
|
|
132
|
+
});
|
|
133
|
+
return theme;
|
|
134
|
+
}
|
|
135
|
+
/** Drop the mirrored `surface`, keeping only the `code-*` tokens. */
|
|
136
|
+
function pickCodeTokens(tokens) {
|
|
137
|
+
const out = {};
|
|
138
|
+
for (const name of Object.keys(tokens)) if (name.startsWith("code-") || name.startsWith("#code-")) out[name] = tokens[name];
|
|
139
|
+
return out;
|
|
140
|
+
}
|
|
141
|
+
glaze.configure({
|
|
142
|
+
states: {
|
|
143
|
+
dark: "@dark",
|
|
144
|
+
highContrast: "@hc"
|
|
309
145
|
},
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
fg: "surface-text",
|
|
314
|
-
intensity: 15,
|
|
315
|
-
inherit: false
|
|
146
|
+
modes: {
|
|
147
|
+
dark: true,
|
|
148
|
+
highContrast: true
|
|
316
149
|
},
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
opacity: .5,
|
|
320
|
-
inherit: false
|
|
321
|
-
}
|
|
150
|
+
darkTone: [14, 95],
|
|
151
|
+
darkDesaturation: 0
|
|
322
152
|
});
|
|
323
|
-
const TINTED_SURFACE_SATURATION = .2;
|
|
324
|
-
const TINTED_SURFACE_TONE_OFFSET = 2;
|
|
325
153
|
/**
|
|
326
|
-
* Per-colored-theme overrides on top of
|
|
154
|
+
* Per-colored-theme overrides on top of the default theme:
|
|
327
155
|
* - `surface` — bumped saturation so the banner bg is visibly tinted.
|
|
328
156
|
* - `border` — bumped saturation so OUTLINE-variant borders pick up the
|
|
329
157
|
* theme hue (used by `#<theme>-border` in `item-themes.ts`). Mirrors the
|
|
@@ -333,13 +161,13 @@ const TINTED_SURFACE_TONE_OFFSET = 2;
|
|
|
333
161
|
*/
|
|
334
162
|
const TINTED_SURFACE_OVERRIDE = {
|
|
335
163
|
surface: {
|
|
336
|
-
tone: 100 - TINTED_SURFACE_TONE_OFFSET,
|
|
164
|
+
tone: [100 - TINTED_SURFACE_TONE_OFFSET, 100 - TINTED_SURFACE_TONE_OFFSET * 2],
|
|
337
165
|
saturation: TINTED_SURFACE_SATURATION
|
|
338
166
|
},
|
|
339
167
|
border: {
|
|
340
168
|
base: "surface",
|
|
341
|
-
tone: ["-10", "-
|
|
342
|
-
saturation: .
|
|
169
|
+
tone: ["-10", "-30"],
|
|
170
|
+
saturation: .3
|
|
343
171
|
},
|
|
344
172
|
"surface-text": {
|
|
345
173
|
base: "surface",
|
|
@@ -360,166 +188,511 @@ const TINTED_SURFACE_OVERRIDE = {
|
|
|
360
188
|
contrast: ["AA", "AAA"]
|
|
361
189
|
}
|
|
362
190
|
};
|
|
363
|
-
const primaryTheme = defaultTheme.extend({ colors: TINTED_SURFACE_OVERRIDE });
|
|
364
|
-
const successTheme = defaultTheme.extend({
|
|
365
|
-
hue: SUCCESS_HUE,
|
|
366
|
-
colors: TINTED_SURFACE_OVERRIDE
|
|
367
|
-
});
|
|
368
|
-
const dangerTheme = defaultTheme.extend({
|
|
369
|
-
hue: DANGER_HUE,
|
|
370
|
-
colors: TINTED_SURFACE_OVERRIDE
|
|
371
|
-
});
|
|
372
|
-
const warningTheme = defaultTheme.extend({
|
|
373
|
-
hue: WARNING_HUE,
|
|
374
|
-
colors: TINTED_SURFACE_OVERRIDE
|
|
375
|
-
});
|
|
376
|
-
const noteTheme = defaultTheme.extend({
|
|
377
|
-
hue: NOTE_HUE,
|
|
378
|
-
colors: TINTED_SURFACE_OVERRIDE
|
|
379
|
-
});
|
|
380
191
|
/**
|
|
381
|
-
*
|
|
382
|
-
* that intentionally sit on a dark surface regardless of the active scheme.
|
|
383
|
-
*
|
|
384
|
-
* Every token here is `mode: 'fixed'` so the resolved value is identical in
|
|
385
|
-
* light, dark, and high-contrast. The shape is purpose-built (not a full
|
|
386
|
-
* mirror of `defaultTheme`) — only what `SPECIAL_*_STYLES` in
|
|
387
|
-
* `src/data/item-themes.ts` consumes is emitted.
|
|
192
|
+
* Build the full palette from a resolved config.
|
|
388
193
|
*
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
*
|
|
393
|
-
* the `#primary-accent-surface` / `-2` / `-3` ramp on the colored
|
|
394
|
-
* themes so `SPECIAL_PRIMARY_STYLES.fill` can use the same shape.
|
|
395
|
-
* - `accent-surface-hover` — legacy alias kept around for the
|
|
396
|
-
* `#special-hover` color shortcut in `src/tokens/colors.ts`. Item
|
|
397
|
-
* themes themselves no longer reference it.
|
|
398
|
-
* - `accent-surface-text` — fixed white (= built-in `#white`), exposed
|
|
399
|
-
* for explicit references.
|
|
400
|
-
* - `accent-text` — dark-purple foreground readable on white. Used as
|
|
401
|
-
* CLEAR-variant text on the always-white pill, and as the
|
|
402
|
-
* pressed/focused border on the brand-purple primary fill. Matches the
|
|
403
|
-
* legacy `#fixed-primary-text` alias (= `#primary-accent-surface-hover`).
|
|
404
|
-
* - `accent-disabled-surface` / `accent-disabled-surface-text` —
|
|
405
|
-
* brand-tinted disabled chip + label, positioned with relative tone
|
|
406
|
-
* deltas against the fixed dark `surface` so the disabled state is
|
|
407
|
-
* scheme-symmetric.
|
|
194
|
+
* Pure: it reads nothing but its argument (and the global Glaze config, which
|
|
195
|
+
* the caller sets first), so re-running it with the same config yields the same
|
|
196
|
+
* tokens. Theme instances are immutable with respect to their hue / saturation
|
|
197
|
+
* seed and a `GlazePalette` has no mutation API, so re-seeding means rebuilding.
|
|
408
198
|
*/
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
199
|
+
function buildPalette(config, options = {}) {
|
|
200
|
+
const { hue, baseHue, saturation, pastel, themes, contrastLevel } = config;
|
|
201
|
+
const overrides = {
|
|
202
|
+
...pastel ? { pastel: true } : null,
|
|
203
|
+
...options.isolateContrastLevel ? { contrastLevel } : null
|
|
204
|
+
};
|
|
205
|
+
const instanceConfig = Object.keys(overrides).length ? overrides : void 0;
|
|
206
|
+
const defaultTheme = glaze(hue, saturation, instanceConfig);
|
|
207
|
+
defaultTheme.colors({
|
|
208
|
+
surface: {
|
|
209
|
+
tone: 100,
|
|
210
|
+
saturation: SURFACE_SATURATION,
|
|
211
|
+
hue: baseHue
|
|
212
|
+
},
|
|
213
|
+
"surface-2": {
|
|
214
|
+
hue: baseHue,
|
|
215
|
+
base: "surface",
|
|
216
|
+
tone: ["-2", "-4"],
|
|
217
|
+
saturation: .1,
|
|
218
|
+
inherit: false
|
|
219
|
+
},
|
|
220
|
+
"surface-3": {
|
|
221
|
+
hue: baseHue,
|
|
222
|
+
base: "surface",
|
|
223
|
+
tone: ["-4", "-8"],
|
|
224
|
+
saturation: .1,
|
|
225
|
+
inherit: false
|
|
226
|
+
},
|
|
227
|
+
"surface-4": {
|
|
228
|
+
hue: baseHue,
|
|
229
|
+
base: "surface",
|
|
230
|
+
tone: ["-6", "-12"],
|
|
231
|
+
saturation: .1,
|
|
232
|
+
inherit: false
|
|
233
|
+
},
|
|
234
|
+
"surface-text": {
|
|
235
|
+
hue: baseHue,
|
|
236
|
+
base: "surface",
|
|
237
|
+
tone: `${TEXT_TONE - 2}`,
|
|
238
|
+
saturation: .2,
|
|
239
|
+
contrast: ["AA", "AAA"]
|
|
240
|
+
},
|
|
241
|
+
"surface-text-soft": {
|
|
242
|
+
hue: baseHue,
|
|
243
|
+
base: "surface",
|
|
244
|
+
tone: `${TEXT_SOFT_TONE - 2}`,
|
|
245
|
+
saturation: .2,
|
|
246
|
+
contrast: ["AA", "AAA"],
|
|
247
|
+
inherit: false
|
|
248
|
+
},
|
|
249
|
+
"surface-text-soft-2": {
|
|
250
|
+
hue: baseHue,
|
|
251
|
+
base: "surface",
|
|
252
|
+
tone: `${TEXT_SOFT2_TONE - 2}`,
|
|
253
|
+
saturation: .2,
|
|
254
|
+
contrast: ["AA", "AAA"],
|
|
255
|
+
inherit: false
|
|
256
|
+
},
|
|
257
|
+
"surface-2-text": {
|
|
258
|
+
hue: baseHue,
|
|
259
|
+
base: "surface-2",
|
|
260
|
+
tone: `${TEXT_TONE + SURFACE_2_TEXT_OFFSET}`,
|
|
261
|
+
saturation: .2,
|
|
262
|
+
contrast: ["AA", "AAA"],
|
|
263
|
+
inherit: false
|
|
264
|
+
},
|
|
265
|
+
"surface-2-text-soft": {
|
|
266
|
+
hue: baseHue,
|
|
267
|
+
base: "surface-2",
|
|
268
|
+
tone: `${TEXT_SOFT_TONE + SURFACE_2_TEXT_OFFSET}`,
|
|
269
|
+
saturation: .2,
|
|
270
|
+
contrast: ["AA", "AAA"],
|
|
271
|
+
inherit: false
|
|
272
|
+
},
|
|
273
|
+
"surface-3-text": {
|
|
274
|
+
hue: baseHue,
|
|
275
|
+
base: "surface-3",
|
|
276
|
+
tone: `${TEXT_TONE + SURFACE_3_TEXT_OFFSET}`,
|
|
277
|
+
saturation: .2,
|
|
278
|
+
contrast: ["AA", "AAA"],
|
|
279
|
+
inherit: false
|
|
280
|
+
},
|
|
281
|
+
"surface-3-text-soft": {
|
|
282
|
+
hue: baseHue,
|
|
283
|
+
base: "surface-3",
|
|
284
|
+
tone: `${TEXT_SOFT_TONE + SURFACE_3_TEXT_OFFSET}`,
|
|
285
|
+
saturation: .2,
|
|
286
|
+
contrast: ["AA", "AAA"],
|
|
287
|
+
inherit: false
|
|
288
|
+
},
|
|
289
|
+
border: {
|
|
290
|
+
hue: baseHue,
|
|
291
|
+
base: "surface",
|
|
292
|
+
tone: ["-10", "-30"],
|
|
293
|
+
saturation: .175
|
|
294
|
+
},
|
|
295
|
+
placeholder: {
|
|
296
|
+
hue: baseHue,
|
|
297
|
+
base: "surface",
|
|
298
|
+
tone: "-33",
|
|
299
|
+
saturation: .175,
|
|
300
|
+
inherit: false
|
|
301
|
+
},
|
|
302
|
+
focus: {
|
|
303
|
+
base: "surface",
|
|
304
|
+
tone: "-29",
|
|
305
|
+
saturation: .8625,
|
|
306
|
+
inherit: false
|
|
307
|
+
},
|
|
308
|
+
disabled: {
|
|
309
|
+
tone: 80.8,
|
|
310
|
+
saturation: .4,
|
|
311
|
+
inherit: false
|
|
312
|
+
},
|
|
313
|
+
"disabled-surface": {
|
|
314
|
+
hue: baseHue,
|
|
315
|
+
base: "surface",
|
|
316
|
+
tone: "-3.5",
|
|
317
|
+
saturation: .2,
|
|
318
|
+
inherit: false
|
|
319
|
+
},
|
|
320
|
+
"disabled-surface-text": {
|
|
321
|
+
base: "surface",
|
|
322
|
+
tone: "-23",
|
|
323
|
+
saturation: .3,
|
|
324
|
+
inherit: false
|
|
325
|
+
},
|
|
326
|
+
"surface-inverse": {
|
|
327
|
+
hue: baseHue,
|
|
328
|
+
tone: 12,
|
|
329
|
+
saturation: .475,
|
|
330
|
+
mode: "fixed",
|
|
331
|
+
inherit: false
|
|
332
|
+
},
|
|
333
|
+
"accent-surface-text": {
|
|
334
|
+
tone: 100,
|
|
335
|
+
mode: "fixed"
|
|
336
|
+
},
|
|
337
|
+
"accent-surface": {
|
|
338
|
+
base: "accent-surface-text",
|
|
339
|
+
tone: "-49",
|
|
340
|
+
contrast: ["AA", "AAA"],
|
|
341
|
+
mode: "fixed"
|
|
342
|
+
},
|
|
343
|
+
"accent-surface-2": {
|
|
344
|
+
base: "accent-surface-text",
|
|
345
|
+
tone: "-52",
|
|
346
|
+
contrast: ["AA", "AAA"],
|
|
347
|
+
mode: "fixed"
|
|
348
|
+
},
|
|
349
|
+
"accent-surface-3": {
|
|
350
|
+
base: "accent-surface-text",
|
|
351
|
+
tone: "-55",
|
|
352
|
+
contrast: ["AA", "AAA"],
|
|
353
|
+
mode: "fixed"
|
|
354
|
+
},
|
|
355
|
+
"accent-surface-hover": {
|
|
356
|
+
base: "accent-surface-text",
|
|
357
|
+
tone: "-58",
|
|
358
|
+
contrast: ["AA", "AAA"],
|
|
359
|
+
mode: "fixed"
|
|
360
|
+
},
|
|
361
|
+
"accent-surface-border": {
|
|
362
|
+
base: "accent-surface",
|
|
363
|
+
tone: "+13",
|
|
364
|
+
mode: "fixed"
|
|
365
|
+
},
|
|
366
|
+
"accent-selected-fill": {
|
|
367
|
+
type: "mix",
|
|
368
|
+
base: "surface",
|
|
369
|
+
target: "accent-surface",
|
|
370
|
+
value: 9,
|
|
371
|
+
space: "srgb"
|
|
372
|
+
},
|
|
373
|
+
"accent-text": {
|
|
374
|
+
base: "accent-selected-fill",
|
|
375
|
+
tone: "-49",
|
|
376
|
+
saturation: 1,
|
|
377
|
+
contrast: [6, 11]
|
|
378
|
+
},
|
|
379
|
+
"accent-text-soft": {
|
|
380
|
+
base: "accent-selected-fill",
|
|
381
|
+
tone: "-49",
|
|
382
|
+
saturation: 1,
|
|
383
|
+
contrast: ["AA", "AAA"]
|
|
384
|
+
},
|
|
385
|
+
"accent-icon": {
|
|
386
|
+
base: "surface",
|
|
387
|
+
tone: "-38",
|
|
388
|
+
saturation: .9375
|
|
389
|
+
},
|
|
390
|
+
"accent-disabled-surface": {
|
|
391
|
+
base: "surface",
|
|
392
|
+
tone: "-13",
|
|
393
|
+
saturation: .5,
|
|
394
|
+
mode: "fixed"
|
|
395
|
+
},
|
|
396
|
+
"accent-disabled-surface-text": {
|
|
397
|
+
base: "accent-disabled-surface",
|
|
398
|
+
tone: "max",
|
|
399
|
+
saturation: .4,
|
|
400
|
+
mode: "fixed"
|
|
401
|
+
},
|
|
402
|
+
"loading-face-1": {
|
|
403
|
+
base: "surface",
|
|
404
|
+
tone: "-2",
|
|
405
|
+
saturation: .3,
|
|
406
|
+
inherit: false
|
|
407
|
+
},
|
|
408
|
+
"loading-face-2": {
|
|
409
|
+
base: "surface",
|
|
410
|
+
tone: "-9",
|
|
411
|
+
saturation: .62,
|
|
412
|
+
inherit: false
|
|
413
|
+
},
|
|
414
|
+
"loading-face-3": {
|
|
415
|
+
base: "surface",
|
|
416
|
+
tone: "-21",
|
|
417
|
+
saturation: .66,
|
|
418
|
+
inherit: false
|
|
419
|
+
},
|
|
420
|
+
"shadow-sm": {
|
|
421
|
+
type: "shadow",
|
|
422
|
+
bg: "surface",
|
|
423
|
+
fg: "surface-text",
|
|
424
|
+
intensity: 5,
|
|
425
|
+
inherit: false
|
|
426
|
+
},
|
|
427
|
+
"shadow-md": {
|
|
428
|
+
type: "shadow",
|
|
429
|
+
bg: "surface",
|
|
430
|
+
fg: "surface-text",
|
|
431
|
+
intensity: 10,
|
|
432
|
+
inherit: false
|
|
433
|
+
},
|
|
434
|
+
"shadow-lg": {
|
|
435
|
+
type: "shadow",
|
|
436
|
+
bg: "surface",
|
|
437
|
+
fg: "surface-text",
|
|
438
|
+
intensity: 15,
|
|
439
|
+
inherit: false
|
|
440
|
+
},
|
|
441
|
+
overlay: {
|
|
442
|
+
tone: 10,
|
|
443
|
+
opacity: .5,
|
|
444
|
+
inherit: false,
|
|
445
|
+
hue: baseHue
|
|
446
|
+
}
|
|
447
|
+
});
|
|
448
|
+
const primaryTheme = defaultTheme.extend({ colors: TINTED_SURFACE_OVERRIDE });
|
|
449
|
+
const successTheme = defaultTheme.extend({
|
|
450
|
+
hue: themes.success.hue,
|
|
451
|
+
saturation: themes.success.saturation,
|
|
452
|
+
colors: TINTED_SURFACE_OVERRIDE
|
|
453
|
+
});
|
|
454
|
+
const dangerTheme = defaultTheme.extend({
|
|
455
|
+
hue: themes.danger.hue,
|
|
456
|
+
saturation: themes.danger.saturation,
|
|
457
|
+
colors: TINTED_SURFACE_OVERRIDE
|
|
458
|
+
});
|
|
459
|
+
const warningTheme = defaultTheme.extend({
|
|
460
|
+
hue: themes.warning.hue,
|
|
461
|
+
saturation: themes.warning.saturation,
|
|
462
|
+
colors: TINTED_SURFACE_OVERRIDE
|
|
463
|
+
});
|
|
464
|
+
const noteTheme = defaultTheme.extend({
|
|
465
|
+
hue: themes.note.hue,
|
|
466
|
+
saturation: themes.note.saturation,
|
|
467
|
+
colors: TINTED_SURFACE_OVERRIDE
|
|
468
|
+
});
|
|
469
|
+
const specialTheme = glaze(hue, saturation, instanceConfig);
|
|
470
|
+
specialTheme.colors({
|
|
471
|
+
surface: {
|
|
472
|
+
tone: 12,
|
|
473
|
+
saturation: .475,
|
|
474
|
+
mode: "fixed"
|
|
475
|
+
},
|
|
476
|
+
"accent-surface-text": {
|
|
477
|
+
tone: 100,
|
|
478
|
+
mode: "fixed"
|
|
479
|
+
},
|
|
480
|
+
"accent-surface": {
|
|
481
|
+
base: "accent-surface-text",
|
|
482
|
+
tone: "-49",
|
|
483
|
+
contrast: ["AA", "AAA"],
|
|
484
|
+
mode: "fixed"
|
|
485
|
+
},
|
|
486
|
+
"accent-surface-2": {
|
|
487
|
+
base: "accent-surface-text",
|
|
488
|
+
tone: "-52",
|
|
489
|
+
contrast: ["AA", "AAA"],
|
|
490
|
+
mode: "fixed"
|
|
491
|
+
},
|
|
492
|
+
"accent-surface-3": {
|
|
493
|
+
base: "accent-surface-text",
|
|
494
|
+
tone: "-55",
|
|
495
|
+
contrast: ["AA", "AAA"],
|
|
496
|
+
mode: "fixed"
|
|
497
|
+
},
|
|
498
|
+
"accent-surface-border": {
|
|
499
|
+
base: "accent-surface",
|
|
500
|
+
tone: "+13",
|
|
501
|
+
mode: "fixed"
|
|
502
|
+
},
|
|
503
|
+
"accent-surface-hover": {
|
|
504
|
+
base: "accent-surface-text",
|
|
505
|
+
tone: "-58",
|
|
506
|
+
contrast: ["AA", "AAA"],
|
|
507
|
+
mode: "fixed"
|
|
508
|
+
},
|
|
509
|
+
"accent-text": {
|
|
510
|
+
base: "accent-surface-text",
|
|
511
|
+
tone: "-58",
|
|
512
|
+
contrast: ["AA", "AAA"],
|
|
513
|
+
mode: "fixed"
|
|
514
|
+
},
|
|
515
|
+
"accent-disabled-surface": {
|
|
516
|
+
base: "surface",
|
|
517
|
+
tone: "+4",
|
|
518
|
+
saturation: .5,
|
|
519
|
+
mode: "fixed"
|
|
520
|
+
},
|
|
521
|
+
"accent-disabled-surface-text": {
|
|
522
|
+
base: "accent-disabled-surface",
|
|
523
|
+
tone: "+18",
|
|
524
|
+
saturation: .4,
|
|
525
|
+
mode: "fixed"
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
return {
|
|
529
|
+
palette: glaze.palette({
|
|
530
|
+
default: defaultTheme,
|
|
531
|
+
primary: primaryTheme,
|
|
532
|
+
purple: primaryTheme,
|
|
533
|
+
success: successTheme,
|
|
534
|
+
danger: dangerTheme,
|
|
535
|
+
warning: warningTheme,
|
|
536
|
+
note: noteTheme,
|
|
537
|
+
special: specialTheme
|
|
538
|
+
}),
|
|
539
|
+
codeTheme: buildCodeTheme(config, instanceConfig)
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
const TOKEN_PREFIXES = {
|
|
543
|
+
default: "",
|
|
544
|
+
primary: "primary-",
|
|
545
|
+
purple: "purple-",
|
|
546
|
+
success: "success-",
|
|
547
|
+
danger: "danger-",
|
|
548
|
+
warning: "warning-",
|
|
549
|
+
note: "note-",
|
|
550
|
+
special: "special-"
|
|
551
|
+
};
|
|
552
|
+
let paletteCache = null;
|
|
553
|
+
let codeThemeCache = null;
|
|
554
|
+
let paletteTokensCache = null;
|
|
555
|
+
let cachedVersion = -1;
|
|
468
556
|
/**
|
|
469
|
-
*
|
|
557
|
+
* Whether *we* are the ones holding a manual level in Glaze's global config.
|
|
470
558
|
*
|
|
471
|
-
* `
|
|
472
|
-
*
|
|
559
|
+
* `contrastLevel` is the one palette option that has to be global: a global
|
|
560
|
+
* level pins `modes.highContrast: false` so no high-contrast tier is emitted at
|
|
561
|
+
* all (which is the point — a manual level already carries the preference),
|
|
562
|
+
* whereas a per-instance level would leave the tier in place and report its own
|
|
563
|
+
* values there. `palette.tasty({ modes })` cannot override that either.
|
|
473
564
|
*
|
|
474
|
-
*
|
|
475
|
-
*
|
|
476
|
-
*
|
|
565
|
+
* Being global means it is shared with the host app, so we only write it when
|
|
566
|
+
* asked. A host that sets its own `glaze.configure({ contrastLevel })` and never
|
|
567
|
+
* touches `setPaletteConfig({ contrastLevel })` keeps its level — without this
|
|
568
|
+
* flag we would silently reset it to `'auto'` on the first token read.
|
|
477
569
|
*/
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
570
|
+
let ownsContrastLevel = false;
|
|
571
|
+
function applyContrastLevel(contrastLevel) {
|
|
572
|
+
if (contrastLevel === "auto" && !ownsContrastLevel) return;
|
|
573
|
+
glaze.configure({ contrastLevel });
|
|
574
|
+
ownsContrastLevel = contrastLevel !== "auto";
|
|
575
|
+
}
|
|
576
|
+
function refresh() {
|
|
577
|
+
const version = getPaletteVersion();
|
|
578
|
+
if (paletteTokensCache && cachedVersion === version) return;
|
|
579
|
+
const config = getPaletteConfig();
|
|
580
|
+
applyContrastLevel(config.contrastLevel);
|
|
581
|
+
const built = buildPalette(config);
|
|
582
|
+
paletteCache = built.palette;
|
|
583
|
+
paletteTokensCache = {
|
|
584
|
+
...built.palette.tasty({
|
|
585
|
+
prefix: TOKEN_PREFIXES,
|
|
586
|
+
format: "oklch"
|
|
587
|
+
}),
|
|
588
|
+
...pickCodeTokens(built.codeTheme.tasty({ format: "oklch" }))
|
|
589
|
+
};
|
|
590
|
+
codeThemeCache = built.codeTheme;
|
|
591
|
+
cachedVersion = version;
|
|
592
|
+
}
|
|
488
593
|
/**
|
|
489
|
-
* Resolve Glaze palette tokens against the
|
|
594
|
+
* Resolve Glaze palette tokens against the current palette config.
|
|
490
595
|
*
|
|
491
|
-
* Memoized
|
|
492
|
-
*
|
|
493
|
-
*
|
|
494
|
-
*
|
|
596
|
+
* Memoized against the config version (see `./palette-config.ts`), so repeated
|
|
597
|
+
* reads are free and `setPaletteConfig()` invalidates them. Resolution is
|
|
598
|
+
* deferred rather than done at module import, so host apps can call
|
|
599
|
+
* `setPaletteConfig(...)` / `glaze.configure(...)` after importing
|
|
600
|
+
* `@cube-dev/ui-kit` and still affect the first paint.
|
|
495
601
|
*
|
|
496
602
|
* Keys use `#name` syntax; values are state maps:
|
|
497
603
|
* '#surface': { '': 'oklch(...)', '@dark': 'oklch(...)', '@hc': 'oklch(...)' }
|
|
498
604
|
*/
|
|
499
|
-
let paletteTokensCache = null;
|
|
500
605
|
function getPaletteTokens() {
|
|
501
|
-
|
|
502
|
-
prefix: {
|
|
503
|
-
default: "",
|
|
504
|
-
primary: "primary-",
|
|
505
|
-
purple: "purple-",
|
|
506
|
-
success: "success-",
|
|
507
|
-
danger: "danger-",
|
|
508
|
-
warning: "warning-",
|
|
509
|
-
note: "note-",
|
|
510
|
-
special: "special-"
|
|
511
|
-
},
|
|
512
|
-
format: "oklch"
|
|
513
|
-
});
|
|
606
|
+
refresh();
|
|
514
607
|
return paletteTokensCache;
|
|
515
608
|
}
|
|
609
|
+
/** The live `GlazePalette`. Rebuilt whenever the palette config changes. */
|
|
610
|
+
function getPalette() {
|
|
611
|
+
refresh();
|
|
612
|
+
return paletteCache;
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* The live theme behind the `code-*` tokens. Separate from {@link getPalette}
|
|
616
|
+
* because it carries its own saturation seed — see {@link CODE_COLORS}.
|
|
617
|
+
*/
|
|
618
|
+
function getCodeTheme() {
|
|
619
|
+
refresh();
|
|
620
|
+
return codeThemeCache;
|
|
621
|
+
}
|
|
622
|
+
const VARIANT_KEY = {
|
|
623
|
+
"light:false": "light",
|
|
624
|
+
"light:true": "lightContrast",
|
|
625
|
+
"dark:false": "dark",
|
|
626
|
+
"dark:true": "darkContrast"
|
|
627
|
+
};
|
|
628
|
+
/**
|
|
629
|
+
* Single-entry memo: all four variants of the last config rendered.
|
|
630
|
+
*
|
|
631
|
+
* Keyed on the palette version as well as the config, because the config is not
|
|
632
|
+
* the only input — `buildPalette` also reads Glaze's own global config
|
|
633
|
+
* (`darkTone`, `darkDesaturation`, the state map). A host that drives Glaze
|
|
634
|
+
* directly and then calls `invalidatePaletteTokens()` bumps the version without
|
|
635
|
+
* touching the config, and the region previews have to follow the document.
|
|
636
|
+
*/
|
|
637
|
+
let renderKey = null;
|
|
638
|
+
let renderVariants = {};
|
|
639
|
+
/**
|
|
640
|
+
* Resolve one scheme variant of a palette to flat, literal color values.
|
|
641
|
+
*
|
|
642
|
+
* Unlike {@link getPaletteTokens}, which emits state maps (`@dark` / `@hc`) for
|
|
643
|
+
* the whole document, this collapses the palette to the single variant you ask
|
|
644
|
+
* for. That is what makes a **region** preview possible: applied through a tasty
|
|
645
|
+
* `tokens` prop, the values override the inherited ones for that subtree only, so
|
|
646
|
+
* a dark or high-contrast theme can be shown inside a light page.
|
|
647
|
+
*
|
|
648
|
+
* Prefer `renderColorTokens()` from `./colors` unless you specifically want the
|
|
649
|
+
* palette without the legacy aliases.
|
|
650
|
+
*/
|
|
651
|
+
function renderPaletteTokens(options = {}) {
|
|
652
|
+
const { scheme = "light", highContrast = false, ...config } = options;
|
|
653
|
+
const resolved = resolvePaletteConfig(config);
|
|
654
|
+
const key = `${getPaletteVersion()}:${JSON.stringify(resolved)}`;
|
|
655
|
+
if (renderKey !== key) {
|
|
656
|
+
const previousLevel = glaze.getConfig().contrastLevel;
|
|
657
|
+
try {
|
|
658
|
+
glaze.configure({ contrastLevel: "auto" });
|
|
659
|
+
const built = buildPalette(resolved, { isolateContrastLevel: true });
|
|
660
|
+
const modes = {
|
|
661
|
+
dark: true,
|
|
662
|
+
highContrast: true
|
|
663
|
+
};
|
|
664
|
+
const themed = built.palette.tokens({
|
|
665
|
+
prefix: TOKEN_PREFIXES,
|
|
666
|
+
format: "oklch",
|
|
667
|
+
modes
|
|
668
|
+
});
|
|
669
|
+
const code = built.codeTheme.tokens({
|
|
670
|
+
format: "oklch",
|
|
671
|
+
modes
|
|
672
|
+
});
|
|
673
|
+
const variants = {};
|
|
674
|
+
for (const name of Object.keys(themed)) variants[name] = {
|
|
675
|
+
...themed[name],
|
|
676
|
+
...pickCodeTokens(code[name] ?? {})
|
|
677
|
+
};
|
|
678
|
+
renderVariants = variants;
|
|
679
|
+
renderKey = key;
|
|
680
|
+
} finally {
|
|
681
|
+
glaze.configure({ contrastLevel: previousLevel });
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
const flat = renderVariants[VARIANT_KEY[`${scheme}:${highContrast}`]] ?? renderVariants[scheme];
|
|
685
|
+
const out = {};
|
|
686
|
+
for (const name of Object.keys(flat)) out[`#${name}`] = flat[name];
|
|
687
|
+
return out;
|
|
688
|
+
}
|
|
516
689
|
/**
|
|
517
690
|
* Lazy proxy of {@link getPaletteTokens}. Prefer `getPaletteTokens()` in new
|
|
518
|
-
* code.
|
|
519
|
-
* config
|
|
691
|
+
* code. Property / enumeration access always reflects the current palette
|
|
692
|
+
* config.
|
|
520
693
|
*/
|
|
521
694
|
const PALETTE_TOKENS = lazyStyles(getPaletteTokens);
|
|
522
695
|
|
|
523
696
|
//#endregion
|
|
524
|
-
export { PALETTE_TOKENS, getPaletteTokens };
|
|
697
|
+
export { PALETTE_TOKENS, getCodeTheme, getPalette, getPaletteTokens, renderPaletteTokens };
|
|
525
698
|
//# sourceMappingURL=palette.js.map
|