@jetbrains/ring-ui-built 6.0.51 → 6.0.52

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.
@@ -1,5 +1,5 @@
1
1
  import { i as _slicedToArray, c as _objectWithoutProperties, d as _objectSpread2 } from './_rollupPluginBabelHelpers.js';
2
- import { useState, useEffect, forwardRef, useMemo, useContext } from 'react';
2
+ import { createContext, useState, useEffect, forwardRef, useMemo, useContext } from 'react';
3
3
  import classNames from 'classnames';
4
4
  import { createPortal } from 'react-dom';
5
5
  import { PopupTargetContext, PopupTarget } from '../popup/popup.target.js';
@@ -18,6 +18,10 @@ var Theme;
18
18
  Theme["LIGHT"] = "light";
19
19
  Theme["DARK"] = "dark";
20
20
  })(Theme || (Theme = {}));
21
+ var ThemeContext = /*#__PURE__*/createContext({
22
+ theme: Theme.LIGHT
23
+ });
24
+ var GLOBAL_DARK_CLASS_NAME = 'ring-ui-theme-dark';
21
25
  var darkMatcher = window.matchMedia('(prefers-color-scheme: dark)');
22
26
  function useTheme() {
23
27
  var _useState = useState(darkMatcher.matches),
@@ -40,6 +44,7 @@ function useThemeClasses(theme) {
40
44
  var resolvedTheme = theme === Theme.AUTO ? systemTheme : theme;
41
45
  return classNames({
42
46
  [modules_59717246.dark]: resolvedTheme === Theme.DARK,
47
+ [GLOBAL_DARK_CLASS_NAME]: resolvedTheme === Theme.DARK,
43
48
  [modules_6381a4b3.light]: resolvedTheme === Theme.LIGHT
44
49
  });
45
50
  }
@@ -53,10 +58,10 @@ function applyTheme(theme, container) {
53
58
  if (theme === Theme.DARK) {
54
59
  container.classList.remove(modules_6381a4b3.light);
55
60
  container.classList.add(modules_59717246.dark);
56
- container.classList.add('ring-ui-theme-dark');
61
+ container.classList.add(GLOBAL_DARK_CLASS_NAME);
57
62
  } else {
58
63
  container.classList.remove(modules_59717246.dark);
59
- container.classList.remove('ring-ui-theme-dark');
64
+ container.classList.remove(GLOBAL_DARK_CLASS_NAME);
60
65
  container.classList.add(modules_6381a4b3.light);
61
66
  }
62
67
  }
@@ -73,6 +78,11 @@ var ThemeProvider = /*#__PURE__*/forwardRef(function ThemeProvider(_ref2, ref) {
73
78
  var id = useMemo(function () {
74
79
  return getUID('popups-with-theme-');
75
80
  }, []);
81
+ var themeValue = useMemo(function () {
82
+ return {
83
+ theme: resolvedTheme
84
+ };
85
+ }, [resolvedTheme]);
76
86
  useEffect(function () {
77
87
  if (target != null) {
78
88
  applyTheme(resolvedTheme, target);
@@ -80,23 +90,26 @@ var ThemeProvider = /*#__PURE__*/forwardRef(function ThemeProvider(_ref2, ref) {
80
90
  }, [resolvedTheme, target]);
81
91
  var themeClasses = useThemeClasses(theme);
82
92
  var parentTarget = useContext(PopupTargetContext);
83
- return /*#__PURE__*/jsx("div", _objectSpread2(_objectSpread2({
84
- ref: ref,
85
- className: target != null ? undefined : classNames(className, themeClasses)
86
- }, restProps), {}, {
87
- children: passToPopups ? /*#__PURE__*/jsx(PopupTarget, {
88
- id: id,
89
- children: function children(popupTarget) {
90
- return /*#__PURE__*/jsxs(Fragment, {
91
- children: [_children, /*#__PURE__*/createPortal( /*#__PURE__*/jsx("div", {
92
- className: themeClasses,
93
- children: popupTarget
94
- }), parentTarget && getPopupContainer(parentTarget) || document.body)]
95
- });
96
- }
97
- }) : _children
98
- }));
93
+ return /*#__PURE__*/jsx(ThemeContext.Provider, {
94
+ value: themeValue,
95
+ children: /*#__PURE__*/jsx("div", _objectSpread2(_objectSpread2({
96
+ ref: ref,
97
+ className: target != null ? undefined : classNames(className, themeClasses)
98
+ }, restProps), {}, {
99
+ children: passToPopups ? /*#__PURE__*/jsx(PopupTarget, {
100
+ id: id,
101
+ children: function children(popupTarget) {
102
+ return /*#__PURE__*/jsxs(Fragment, {
103
+ children: [_children, /*#__PURE__*/createPortal( /*#__PURE__*/jsx("div", {
104
+ className: themeClasses,
105
+ children: popupTarget
106
+ }), parentTarget && getPopupContainer(parentTarget) || document.body)]
107
+ });
108
+ }
109
+ }) : _children
110
+ }))
111
+ });
99
112
  });
100
113
  var Theme$1 = Theme;
101
114
 
102
- export { Theme$1 as T, WithThemeClasses as W, ThemeProvider as a, useThemeClasses as b, applyTheme as c, modules_59717246 as m, useTheme as u };
115
+ export { Theme$1 as T, WithThemeClasses as W, ThemeProvider as a, ThemeContext as b, useThemeClasses as c, applyTheme as d, modules_59717246 as m, useTheme as u };
@@ -4,6 +4,9 @@ declare enum Theme {
4
4
  LIGHT = "light",
5
5
  DARK = "dark"
6
6
  }
7
+ export declare const ThemeContext: import("react").Context<{
8
+ theme: Theme.LIGHT | Theme.DARK;
9
+ }>;
7
10
  export declare function useTheme(): Theme.LIGHT | Theme.DARK;
8
11
  export declare function useThemeClasses(theme: Theme): string;
9
12
  export interface WithThemeClassesProps {
@@ -4,7 +4,7 @@ import 'classnames';
4
4
  import 'react-dom';
5
5
  import '../popup/popup.target.js';
6
6
  import '../popup/popup.js';
7
- export { a as ThemeProvider, W as WithThemeClasses, c as applyTheme, T as default, u as useTheme, b as useThemeClasses } from '../_helpers/theme.js';
7
+ export { b as ThemeContext, a as ThemeProvider, W as WithThemeClasses, d as applyTheme, T as default, u as useTheme, c as useThemeClasses } from '../_helpers/theme.js';
8
8
  import './get-uid.js';
9
9
  import 'react/jsx-runtime';
10
10
  import 'prop-types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jetbrains/ring-ui-built",
3
- "version": "6.0.51",
3
+ "version": "6.0.52",
4
4
  "description": "JetBrains UI library",
5
5
  "author": "JetBrains",
6
6
  "license": "Apache-2.0",