@kaizen/design-tokens 9.0.3 → 9.1.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/CHANGELOG.md +27 -0
- package/dist/react/ThemeProvider.d.ts +1 -1
- package/dist/react/ThemeProvider.d.ts.map +1 -1
- package/dist/react/ThemeProvider.js +31 -8
- package/dist/src/ThemeManager.d.ts +1 -1
- package/dist/src/ThemeManager.d.ts.map +1 -1
- package/package.json +3 -3
- package/react/ThemeProvider.d.ts +1 -1
- package/react/ThemeProvider.js +31 -8
- package/react/ThemeProvider.js.map +1 -1
- package/react/ThemeProvider.tsx +49 -8
- package/src/ThemeManager.d.ts +1 -1
- package/src/ThemeManager.js.map +1 -1
- package/src/ThemeManager.ts +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [9.1.0](https://github.com/cultureamp/kaizen-design-system/compare/@kaizen/design-tokens@9.0.5...@kaizen/design-tokens@9.1.0) (2022-08-16)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Preload fonts in ThemeProvider & handle default theme ([#2917](https://github.com/cultureamp/kaizen-design-system/issues/2917)) ([67e8efb](https://github.com/cultureamp/kaizen-design-system/commit/67e8efb09f0582ef9e14b408291f1916c7f21eea))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [9.0.5](https://github.com/cultureamp/kaizen-design-system/compare/@kaizen/design-tokens@9.0.4...@kaizen/design-tokens@9.0.5) (2022-07-21)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @kaizen/design-tokens
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## [9.0.4](https://github.com/cultureamp/kaizen-design-system/compare/@kaizen/design-tokens@9.0.3...@kaizen/design-tokens@9.0.4) (2022-07-20)
|
|
26
|
+
|
|
27
|
+
**Note:** Version bump only for package @kaizen/design-tokens
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
6
33
|
## [9.0.3](https://github.com/cultureamp/kaizen-design-system/compare/@kaizen/design-tokens@9.0.2...@kaizen/design-tokens@9.0.3) (2022-06-23)
|
|
7
34
|
|
|
8
35
|
**Note:** Version bump only for package @kaizen/design-tokens
|
|
@@ -6,7 +6,7 @@ export declare const ThemeContext: React.Context<Theme>;
|
|
|
6
6
|
* This allows child react elements to more easily use theme variables, using the {@link useTheme} hook.
|
|
7
7
|
*/
|
|
8
8
|
export declare const ThemeProvider: ({ themeManager, ...props }: {
|
|
9
|
-
themeManager
|
|
9
|
+
themeManager?: ThemeManager<Theme> | undefined;
|
|
10
10
|
children: React.ReactNode;
|
|
11
11
|
}) => JSX.Element;
|
|
12
12
|
export declare const useTheme: () => Theme;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../react/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../react/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,YAAY,EAAgB,KAAK,EAAE,MAAM,KAAK,CAAA;AAEvD,eAAO,MAAM,YAAY,sBAA2C,CAAA;AAEpE;;;GAGG;AACH,eAAO,MAAM,aAAa;;cAKd,MAAM,SAAS;iBA+D1B,CAAA;AAED,eAAO,MAAM,QAAQ,aAAuC,CAAA"}
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
22
|
var t = {};
|
|
4
23
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -10,12 +29,9 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
10
29
|
}
|
|
11
30
|
return t;
|
|
12
31
|
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
32
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
33
|
exports.useTheme = exports.ThemeProvider = exports.ThemeContext = void 0;
|
|
18
|
-
var react_1 =
|
|
34
|
+
var react_1 = __importStar(require("react"));
|
|
19
35
|
var __1 = require("../");
|
|
20
36
|
exports.ThemeContext = react_1.default.createContext(__1.defaultTheme);
|
|
21
37
|
/**
|
|
@@ -24,20 +40,27 @@ exports.ThemeContext = react_1.default.createContext(__1.defaultTheme);
|
|
|
24
40
|
*/
|
|
25
41
|
var ThemeProvider = function (_a) {
|
|
26
42
|
var themeManager = _a.themeManager, props = __rest(_a, ["themeManager"]);
|
|
27
|
-
var
|
|
43
|
+
var themeManagerInstance = (0, react_1.useState)(function () { return themeManager || new __1.ThemeManager(__1.defaultTheme); })[0];
|
|
44
|
+
var _b = react_1.default.useState(themeManagerInstance.getCurrentTheme()), theme = _b[0], setTheme = _b[1];
|
|
28
45
|
react_1.default.useEffect(function () {
|
|
29
46
|
var cancelled = false;
|
|
30
47
|
var listener = function (newTheme) {
|
|
31
48
|
if (!cancelled)
|
|
32
49
|
setTheme(newTheme);
|
|
33
50
|
};
|
|
34
|
-
|
|
51
|
+
themeManagerInstance.addThemeChangeListener(listener);
|
|
35
52
|
return function () {
|
|
36
53
|
cancelled = true;
|
|
37
|
-
|
|
54
|
+
themeManagerInstance.removeThemeChangeListener(listener);
|
|
38
55
|
};
|
|
39
56
|
}, []);
|
|
40
|
-
return (react_1.default.createElement(
|
|
57
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
58
|
+
react_1.default.createElement(exports.ThemeContext.Provider, { value: theme }, props.children),
|
|
59
|
+
react_1.default.createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-bold.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" }),
|
|
60
|
+
react_1.default.createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-demi-bold.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" }),
|
|
61
|
+
react_1.default.createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-medium.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" }),
|
|
62
|
+
react_1.default.createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-regular.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" }),
|
|
63
|
+
react_1.default.createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/tiempos/tiempos-headline-bold.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" })));
|
|
41
64
|
};
|
|
42
65
|
exports.ThemeProvider = ThemeProvider;
|
|
43
66
|
var useTheme = function () { return react_1.default.useContext(exports.ThemeContext); };
|
|
@@ -7,10 +7,10 @@ import { Theme as BaseTheme } from "./types";
|
|
|
7
7
|
* It works by converting a Theme interface to a flattened map of CSS variable keys and values, then calling `document.documentElement.style.setProperty(key, value)`.
|
|
8
8
|
*/
|
|
9
9
|
export declare class ThemeManager<Theme extends BaseTheme = BaseTheme> {
|
|
10
|
-
constructor(theme: Theme, apply?: boolean);
|
|
11
10
|
private themeChangeListeners;
|
|
12
11
|
private theme;
|
|
13
12
|
private rootElement;
|
|
13
|
+
constructor(theme: Theme, apply?: boolean);
|
|
14
14
|
getRootElement: () => HTMLElement | null;
|
|
15
15
|
getCurrentTheme: () => Theme;
|
|
16
16
|
setRootElement: (element: HTMLElement) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../src/ThemeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,SAAS,CAAA;AAE5C;;;;;;GAMG;AACH,qBAAa,YAAY,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../src/ThemeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,SAAS,CAAA;AAE5C;;;;;;GAMG;AACH,qBAAa,YAAY,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS;IAC3D,OAAO,CAAC,oBAAoB,CAAsC;IAClE,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,WAAW,CAA2B;gBAG5C,KAAK,EAAE,KAAK,EAEZ,KAAK,GAAE,OAAc;IAUhB,cAAc,2BAAyB;IACvC,eAAe,cAAmB;IAElC,cAAc,YAAa,WAAW,UAE5C;IACM,gBAAgB,UAAW,KAAK,uCAOtC;IAEM,sBAAsB,qBAAsB,KAAK,KAAK,IAAI,UAEhE;IACM,yBAAyB,qBAAsB,KAAK,KAAK,IAAI,UAInE;IACM,iBAAiB,aAQvB;IAED,OAAO,CAAC,0BAA0B,CAEjC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaizen/design-tokens",
|
|
3
3
|
"description": "Tokens used in the Kaizen Design System",
|
|
4
|
-
"version": "9.0
|
|
4
|
+
"version": "9.1.0",
|
|
5
5
|
"homepage": "https://github.com/cultureamp/kaizen-design-system/tree/master/packages/design-tokens",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@types/yargs": "^16.0.4",
|
|
43
43
|
"json-to-flat-sass": "^1.0.0",
|
|
44
44
|
"lodash.flatmap": "^4.5.0",
|
|
45
|
-
"postcss": "^8.4.
|
|
45
|
+
"postcss": "^8.4.14",
|
|
46
46
|
"prettier": "*",
|
|
47
47
|
"react-highlight": "^0.14.0",
|
|
48
48
|
"react-map-interaction": "^2.1.0",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"react": ">=16 || ^17.0.0 || ^18.0.0"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "e53b047c305c131112c677c227c6a3b5db617823"
|
|
62
62
|
}
|
package/react/ThemeProvider.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare const ThemeContext: React.Context<Theme>;
|
|
|
6
6
|
* This allows child react elements to more easily use theme variables, using the {@link useTheme} hook.
|
|
7
7
|
*/
|
|
8
8
|
export declare const ThemeProvider: ({ themeManager, ...props }: {
|
|
9
|
-
themeManager
|
|
9
|
+
themeManager?: ThemeManager<Theme> | undefined;
|
|
10
10
|
children: React.ReactNode;
|
|
11
11
|
}) => JSX.Element;
|
|
12
12
|
export declare const useTheme: () => Theme;
|
package/react/ThemeProvider.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
22
|
var t = {};
|
|
4
23
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -10,12 +29,9 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
10
29
|
}
|
|
11
30
|
return t;
|
|
12
31
|
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
32
|
exports.__esModule = true;
|
|
17
33
|
exports.useTheme = exports.ThemeProvider = exports.ThemeContext = void 0;
|
|
18
|
-
var react_1 =
|
|
34
|
+
var react_1 = __importStar(require("react"));
|
|
19
35
|
var __1 = require("../");
|
|
20
36
|
exports.ThemeContext = react_1["default"].createContext(__1.defaultTheme);
|
|
21
37
|
/**
|
|
@@ -24,20 +40,27 @@ exports.ThemeContext = react_1["default"].createContext(__1.defaultTheme);
|
|
|
24
40
|
*/
|
|
25
41
|
var ThemeProvider = function (_a) {
|
|
26
42
|
var themeManager = _a.themeManager, props = __rest(_a, ["themeManager"]);
|
|
27
|
-
var
|
|
43
|
+
var themeManagerInstance = (0, react_1.useState)(function () { return themeManager || new __1.ThemeManager(__1.defaultTheme); })[0];
|
|
44
|
+
var _b = react_1["default"].useState(themeManagerInstance.getCurrentTheme()), theme = _b[0], setTheme = _b[1];
|
|
28
45
|
react_1["default"].useEffect(function () {
|
|
29
46
|
var cancelled = false;
|
|
30
47
|
var listener = function (newTheme) {
|
|
31
48
|
if (!cancelled)
|
|
32
49
|
setTheme(newTheme);
|
|
33
50
|
};
|
|
34
|
-
|
|
51
|
+
themeManagerInstance.addThemeChangeListener(listener);
|
|
35
52
|
return function () {
|
|
36
53
|
cancelled = true;
|
|
37
|
-
|
|
54
|
+
themeManagerInstance.removeThemeChangeListener(listener);
|
|
38
55
|
};
|
|
39
56
|
}, []);
|
|
40
|
-
return (react_1["default"].createElement(
|
|
57
|
+
return (react_1["default"].createElement(react_1["default"].Fragment, null,
|
|
58
|
+
react_1["default"].createElement(exports.ThemeContext.Provider, { value: theme }, props.children),
|
|
59
|
+
react_1["default"].createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-bold.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" }),
|
|
60
|
+
react_1["default"].createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-demi-bold.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" }),
|
|
61
|
+
react_1["default"].createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-medium.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" }),
|
|
62
|
+
react_1["default"].createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-regular.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" }),
|
|
63
|
+
react_1["default"].createElement("link", { rel: "preload", href: "https://d1e7r7b0lb8p4d.cloudfront.net/fonts/tiempos/tiempos-headline-bold.woff2", as: "font", type: "font/woff2", crossOrigin: "crossorigin" })));
|
|
41
64
|
};
|
|
42
65
|
exports.ThemeProvider = ThemeProvider;
|
|
43
66
|
var useTheme = function () { return react_1["default"].useContext(exports.ThemeContext); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["ThemeProvider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["ThemeProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAuC;AACvC,yBAAuD;AAE1C,QAAA,YAAY,GAAG,kBAAK,CAAC,aAAa,CAAQ,gBAAY,CAAC,CAAA;AAEpE;;;GAGG;AACI,IAAM,aAAa,GAAG,UAAC,EAM7B;IALC,IAAA,YAAY,kBAAA,EACT,KAAK,cAFoB,gBAG7B,CADS;IAKD,IAAA,oBAAoB,GAAI,IAAA,gBAAQ,EACrC,cAAM,OAAA,YAAY,IAAI,IAAI,gBAAY,CAAC,gBAAY,CAAC,EAA9C,CAA8C,CACrD,GAF0B,CAE1B;IAEK,IAAA,KAAoB,kBAAK,CAAC,QAAQ,CACtC,oBAAoB,CAAC,eAAe,EAAE,CACvC,EAFM,KAAK,QAAA,EAAE,QAAQ,QAErB,CAAA;IACD,kBAAK,CAAC,SAAS,CAAC;QACd,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,IAAM,QAAQ,GAAG,UAAC,QAAe;YAC/B,IAAI,CAAC,SAAS;gBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACpC,CAAC,CAAA;QACD,oBAAoB,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QACrD,OAAO;YACL,SAAS,GAAG,IAAI,CAAA;YAChB,oBAAoB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAA;QAC1D,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL;QACE,iCAAC,oBAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAChC,KAAK,CAAC,QAAQ,CACO;QACxB,2CACE,GAAG,EAAC,SAAS,EACb,IAAI,EAAC,oEAAoE,EACzE,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,YAAY,EACjB,WAAW,EAAC,aAAa,GACzB;QACF,2CACE,GAAG,EAAC,SAAS,EACb,IAAI,EAAC,yEAAyE,EAC9E,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,YAAY,EACjB,WAAW,EAAC,aAAa,GACzB;QACF,2CACE,GAAG,EAAC,SAAS,EACb,IAAI,EAAC,sEAAsE,EAC3E,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,YAAY,EACjB,WAAW,EAAC,aAAa,GACzB;QACF,2CACE,GAAG,EAAC,SAAS,EACb,IAAI,EAAC,uEAAuE,EAC5E,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,YAAY,EACjB,WAAW,EAAC,aAAa,GACzB;QACF,2CACE,GAAG,EAAC,SAAS,EACb,IAAI,EAAC,iFAAiF,EACtF,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,YAAY,EACjB,WAAW,EAAC,aAAa,GACzB,CACD,CACJ,CAAA;AACH,CAAC,CAAA;AApEY,QAAA,aAAa,iBAoEzB;AAEM,IAAM,QAAQ,GAAG,cAAM,OAAA,kBAAK,CAAC,UAAU,CAAC,oBAAY,CAAC,EAA9B,CAA8B,CAAA;AAA/C,QAAA,QAAQ,YAAuC"}
|
package/react/ThemeProvider.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from "react"
|
|
1
|
+
import React, { useState } from "react"
|
|
2
2
|
import { ThemeManager, defaultTheme, Theme } from "../"
|
|
3
3
|
|
|
4
4
|
export const ThemeContext = React.createContext<Theme>(defaultTheme)
|
|
@@ -11,28 +11,69 @@ export const ThemeProvider = ({
|
|
|
11
11
|
themeManager,
|
|
12
12
|
...props
|
|
13
13
|
}: {
|
|
14
|
-
themeManager
|
|
14
|
+
themeManager?: ThemeManager
|
|
15
15
|
children: React.ReactNode
|
|
16
16
|
}) => {
|
|
17
|
+
const [themeManagerInstance] = useState(
|
|
18
|
+
() => themeManager || new ThemeManager(defaultTheme)
|
|
19
|
+
)
|
|
20
|
+
|
|
17
21
|
const [theme, setTheme] = React.useState<Theme>(
|
|
18
|
-
|
|
22
|
+
themeManagerInstance.getCurrentTheme()
|
|
19
23
|
)
|
|
20
24
|
React.useEffect(() => {
|
|
21
25
|
let cancelled = false
|
|
22
26
|
const listener = (newTheme: Theme) => {
|
|
23
27
|
if (!cancelled) setTheme(newTheme)
|
|
24
28
|
}
|
|
25
|
-
|
|
29
|
+
themeManagerInstance.addThemeChangeListener(listener)
|
|
26
30
|
return () => {
|
|
27
31
|
cancelled = true
|
|
28
|
-
|
|
32
|
+
themeManagerInstance.removeThemeChangeListener(listener)
|
|
29
33
|
}
|
|
30
34
|
}, [])
|
|
31
35
|
|
|
32
36
|
return (
|
|
33
|
-
|
|
34
|
-
{
|
|
35
|
-
|
|
37
|
+
<>
|
|
38
|
+
<ThemeContext.Provider value={theme}>
|
|
39
|
+
{props.children}
|
|
40
|
+
</ThemeContext.Provider>
|
|
41
|
+
<link
|
|
42
|
+
rel="preload"
|
|
43
|
+
href="https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-bold.woff2"
|
|
44
|
+
as="font"
|
|
45
|
+
type="font/woff2"
|
|
46
|
+
crossOrigin="crossorigin"
|
|
47
|
+
/>
|
|
48
|
+
<link
|
|
49
|
+
rel="preload"
|
|
50
|
+
href="https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-demi-bold.woff2"
|
|
51
|
+
as="font"
|
|
52
|
+
type="font/woff2"
|
|
53
|
+
crossOrigin="crossorigin"
|
|
54
|
+
/>
|
|
55
|
+
<link
|
|
56
|
+
rel="preload"
|
|
57
|
+
href="https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-medium.woff2"
|
|
58
|
+
as="font"
|
|
59
|
+
type="font/woff2"
|
|
60
|
+
crossOrigin="crossorigin"
|
|
61
|
+
/>
|
|
62
|
+
<link
|
|
63
|
+
rel="preload"
|
|
64
|
+
href="https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-regular.woff2"
|
|
65
|
+
as="font"
|
|
66
|
+
type="font/woff2"
|
|
67
|
+
crossOrigin="crossorigin"
|
|
68
|
+
/>
|
|
69
|
+
<link
|
|
70
|
+
rel="preload"
|
|
71
|
+
href="https://d1e7r7b0lb8p4d.cloudfront.net/fonts/tiempos/tiempos-headline-bold.woff2"
|
|
72
|
+
as="font"
|
|
73
|
+
type="font/woff2"
|
|
74
|
+
crossOrigin="crossorigin"
|
|
75
|
+
/>
|
|
76
|
+
</>
|
|
36
77
|
)
|
|
37
78
|
}
|
|
38
79
|
|
package/src/ThemeManager.d.ts
CHANGED
|
@@ -7,10 +7,10 @@ import { Theme as BaseTheme } from "./types";
|
|
|
7
7
|
* It works by converting a Theme interface to a flattened map of CSS variable keys and values, then calling `document.documentElement.style.setProperty(key, value)`.
|
|
8
8
|
*/
|
|
9
9
|
export declare class ThemeManager<Theme extends BaseTheme = BaseTheme> {
|
|
10
|
-
constructor(theme: Theme, apply?: boolean);
|
|
11
10
|
private themeChangeListeners;
|
|
12
11
|
private theme;
|
|
13
12
|
private rootElement;
|
|
13
|
+
constructor(theme: Theme, apply?: boolean);
|
|
14
14
|
getRootElement: () => HTMLElement | null;
|
|
15
15
|
getCurrentTheme: () => Theme;
|
|
16
16
|
setRootElement: (element: HTMLElement) => void;
|
package/src/ThemeManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["ThemeManager.ts"],"names":[],"mappings":";;;AACA,qFAAmF;AACnF;;;;;;GAMG;AACH;
|
|
1
|
+
{"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["ThemeManager.ts"],"names":[],"mappings":";;;AACA,qFAAmF;AACnF;;;;;;GAMG;AACH;IAKE,sBACE,KAAY;IACZ,oHAAoH;IACpH,KAAqB;QAHvB,iBAWC;QARC,sBAAA,EAAA,YAAqB;QAPf,yBAAoB,GAAG,EAAmC,CAAA;QAE1D,gBAAW,GAAuB,IAAI,CAAA;QAevC,mBAAc,GAAG,cAAM,OAAA,KAAI,CAAC,WAAW,EAAhB,CAAgB,CAAA;QACvC,oBAAe,GAAG,cAAM,OAAA,KAAI,CAAC,KAAK,EAAV,CAAU,CAAA;QAElC,mBAAc,GAAG,UAAC,OAAoB;YAC3C,KAAI,CAAC,WAAW,GAAG,OAAO,CAAA;QAC5B,CAAC,CAAA;QACM,qBAAgB,GAAG,UAAC,KAAY,EAAE,KAAe;YACtD,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,KAAI,CAAC,KAAK,KAAK,KAAK;oBAAE,OAAM;aACjC;YACD,KAAI,CAAC,KAAK,GAAG,KAAK,CAAA;YAClB,KAAI,CAAC,iBAAiB,EAAE,CAAA;YACxB,KAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAA;QACxC,CAAC,CAAA;QAEM,2BAAsB,GAAG,UAAC,QAAgC;YAC/D,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1C,CAAC,CAAA;QACM,8BAAyB,GAAG,UAAC,QAAgC;YAClE,KAAI,CAAC,oBAAoB,GAAG,KAAI,CAAC,oBAAoB,CAAC,MAAM,CAC1D,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,QAAQ,EAAd,CAAc,CACpB,CAAA;QACH,CAAC,CAAA;QACM,sBAAiB,GAAG;YACzB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,KAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;gBAC7C,IAAM,sBAAsB,GAAG,IAAA,6DAA6B,EAAC,KAAI,CAAC,KAAK,CAAC,CAAA;gBACxE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,UAAC,EAAY;;wBAAX,GAAG,QAAA,EAAE,KAAK,QAAA;oBACzD,MAAA,KAAI,CAAC,WAAW,0CAAE,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;gBACjD,CAAC,CAAC,CAAA;aACH;QACH,CAAC,CAAA;QAEO,+BAA0B,GAAG,UAAC,KAAY;YAChD,KAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,KAAK,CAAC,EAAf,CAAe,CAAC,CAAA;QAChE,CAAC,CAAA;QA3CC;;;UAGE;QACF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,KAAK;YAAE,IAAI,CAAC,iBAAiB,EAAE,CAAA;IACrC,CAAC;IAsCH,mBAAC;AAAD,CAAC,AAtDD,IAsDC;AAtDY,oCAAY;AAwDzB,gIAAgI;AAChI,kIAAkI;AAClI,uEAAuE"}
|
package/src/ThemeManager.ts
CHANGED
|
@@ -8,6 +8,10 @@ import { makeCssVariableDefinitionsMap } from "./lib/makeCssVariableDefinitionsM
|
|
|
8
8
|
* It works by converting a Theme interface to a flattened map of CSS variable keys and values, then calling `document.documentElement.style.setProperty(key, value)`.
|
|
9
9
|
*/
|
|
10
10
|
export class ThemeManager<Theme extends BaseTheme = BaseTheme> {
|
|
11
|
+
private themeChangeListeners = [] as Array<(theme: Theme) => void>
|
|
12
|
+
private theme: Theme
|
|
13
|
+
private rootElement: HTMLElement | null = null
|
|
14
|
+
|
|
11
15
|
constructor(
|
|
12
16
|
theme: Theme,
|
|
13
17
|
/* This allows you to stop the class from applying the theme automatically during construction. Defaults to true */
|
|
@@ -21,10 +25,6 @@ export class ThemeManager<Theme extends BaseTheme = BaseTheme> {
|
|
|
21
25
|
if (apply) this.applyCurrentTheme()
|
|
22
26
|
}
|
|
23
27
|
|
|
24
|
-
private themeChangeListeners = [] as Array<(theme: Theme) => void>
|
|
25
|
-
private theme: Theme
|
|
26
|
-
private rootElement: HTMLElement | null = null
|
|
27
|
-
|
|
28
28
|
public getRootElement = () => this.rootElement
|
|
29
29
|
public getCurrentTheme = () => this.theme
|
|
30
30
|
|