@xeonr/platform-ui 1.6.2 → 1.7.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/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/kit/Anchored.d.ts.map +1 -1
- package/dist/kit/Anchored.js +4 -1
- package/dist/kit/Anchored.js.map +1 -1
- package/dist/kit/Badge.d.ts +23 -0
- package/dist/kit/Badge.d.ts.map +1 -1
- package/dist/kit/Badge.js +53 -0
- package/dist/kit/Badge.js.map +1 -1
- package/dist/kit/Button.d.ts +13 -0
- package/dist/kit/Button.d.ts.map +1 -1
- package/dist/kit/Button.js +7 -3
- package/dist/kit/Button.js.map +1 -1
- package/dist/kit/Checkbox.d.ts +34 -0
- package/dist/kit/Checkbox.d.ts.map +1 -0
- package/dist/kit/Checkbox.js +52 -0
- package/dist/kit/Checkbox.js.map +1 -0
- package/dist/kit/Color.d.ts +8 -1
- package/dist/kit/Color.d.ts.map +1 -1
- package/dist/kit/Color.js +14 -5
- package/dist/kit/Color.js.map +1 -1
- package/dist/kit/Controls.d.ts +2 -33
- package/dist/kit/Controls.d.ts.map +1 -1
- package/dist/kit/Controls.js +3 -44
- package/dist/kit/Controls.js.map +1 -1
- package/dist/kit/DataGrid.d.ts +42 -2
- package/dist/kit/DataGrid.d.ts.map +1 -1
- package/dist/kit/DataGrid.js +98 -7
- package/dist/kit/DataGrid.js.map +1 -1
- package/dist/kit/Form.d.ts +7 -1
- package/dist/kit/Form.d.ts.map +1 -1
- package/dist/kit/Form.js +7 -4
- package/dist/kit/Form.js.map +1 -1
- package/dist/kit/Menu.d.ts +13 -2
- package/dist/kit/Menu.d.ts.map +1 -1
- package/dist/kit/Menu.js +32 -6
- package/dist/kit/Menu.js.map +1 -1
- package/dist/kit/Spectrum.d.ts +40 -0
- package/dist/kit/Spectrum.d.ts.map +1 -0
- package/dist/kit/Spectrum.js +235 -0
- package/dist/kit/Spectrum.js.map +1 -0
- package/dist/kit/SplitButton.d.ts +43 -0
- package/dist/kit/SplitButton.d.ts.map +1 -0
- package/dist/kit/SplitButton.js +34 -0
- package/dist/kit/SplitButton.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +21 -2
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/ThemeProvider.js +21 -5
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useState } from "react";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
3
3
|
import { createGlobalStyle } from "styled-components";
|
|
4
4
|
import { brandCss } from "./brand.js";
|
|
5
5
|
import { cssVariables, globalCss } from "./tokens.js";
|
|
@@ -52,24 +52,33 @@ function storedBrand() {
|
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
export function AppThemeProvider({ children, storageKey = DEFAULT_STORAGE_KEY, initialPref, onPrefChange, globalStyle = true, brand: initialBrand = null, }) {
|
|
55
|
+
export function AppThemeProvider({ children, storageKey = DEFAULT_STORAGE_KEY, initialPref, onPrefChange, globalStyle = true, brand: initialBrand = null, pref: controlledPref, }) {
|
|
56
|
+
const controlled = controlledPref !== undefined;
|
|
57
|
+
// read inside effects and callbacks that must not re-run when it changes
|
|
58
|
+
const controlledRef = useRef(controlled);
|
|
59
|
+
useIsoLayoutEffect(() => { controlledRef.current = controlled; }, [controlled]);
|
|
56
60
|
const STORAGE_KEY = storageKey;
|
|
57
61
|
// The first render uses only what a server could know too: the props. The
|
|
58
62
|
// remembered preference, the system scheme and the remembered brand are read
|
|
59
63
|
// in a layout effect, which runs before the first paint, so a client-only
|
|
60
64
|
// console still paints them on its first frame, and a server-rendered host
|
|
61
65
|
// hydrates against matching markup instead of throwing it away (CON-64).
|
|
62
|
-
const [
|
|
66
|
+
const [ownPref, setPrefState] = useState(() => normalise(initialPref));
|
|
67
|
+
const pref = controlled ? normalise(controlledPref) : ownPref;
|
|
63
68
|
const [sys, setSys] = useState("dark");
|
|
64
69
|
// An explicit prop beats the remembered value: a host that states its colour
|
|
65
70
|
// is not guessing. Everything else starts from what the registry said here
|
|
66
71
|
// last time, which is right on every visit after the first.
|
|
67
72
|
const [brand, setBrandState] = useState(initialBrand);
|
|
68
73
|
useIsoLayoutEffect(() => {
|
|
74
|
+
setSys(systemScheme());
|
|
75
|
+
// a controlled provider was told its theme and its brand: storage, which
|
|
76
|
+
// a sandboxed iframe may not even have, has nothing to add
|
|
77
|
+
if (controlledRef.current)
|
|
78
|
+
return;
|
|
69
79
|
const p = storedPref(STORAGE_KEY);
|
|
70
80
|
if (p)
|
|
71
81
|
setPrefState(p);
|
|
72
|
-
setSys(systemScheme());
|
|
73
82
|
if (!initialBrand) {
|
|
74
83
|
const b = storedBrand();
|
|
75
84
|
if (b)
|
|
@@ -88,6 +97,8 @@ export function AppThemeProvider({ children, storageKey = DEFAULT_STORAGE_KEY, i
|
|
|
88
97
|
}
|
|
89
98
|
const setBrand = useCallback((hex) => {
|
|
90
99
|
setBrandState(hex);
|
|
100
|
+
if (controlledRef.current)
|
|
101
|
+
return;
|
|
91
102
|
try {
|
|
92
103
|
if (hex && HEX_RE.test(hex))
|
|
93
104
|
localStorage.setItem(BRAND_KEY, hex);
|
|
@@ -117,7 +128,7 @@ export function AppThemeProvider({ children, storageKey = DEFAULT_STORAGE_KEY, i
|
|
|
117
128
|
// Cross-tab sync: another tab changing the preference updates us live.
|
|
118
129
|
useEffect(() => {
|
|
119
130
|
const on = (e) => {
|
|
120
|
-
if (e.key !== STORAGE_KEY)
|
|
131
|
+
if (e.key !== STORAGE_KEY || controlledRef.current)
|
|
121
132
|
return;
|
|
122
133
|
setPrefState(normalise(e.newValue));
|
|
123
134
|
};
|
|
@@ -125,6 +136,11 @@ export function AppThemeProvider({ children, storageKey = DEFAULT_STORAGE_KEY, i
|
|
|
125
136
|
return () => window.removeEventListener("storage", on);
|
|
126
137
|
}, [STORAGE_KEY]);
|
|
127
138
|
const setPref = useCallback((p) => {
|
|
139
|
+
if (controlledRef.current) {
|
|
140
|
+
// the host owns it: say what the person asked for, and wait to be told
|
|
141
|
+
onPrefChange?.(p);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
128
144
|
setPrefState(p);
|
|
129
145
|
try {
|
|
130
146
|
if (p === "system")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xeonr/platform-ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Xeonr Platform Suite design language: the --x-* token sheet, theme provider and kit shared by every Xeonr console.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"scripts": {
|
|
86
86
|
"build": "tsc -p tsconfig.build.json",
|
|
87
87
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
88
|
-
"lint": "eslint . && node scripts/check-colour-literals.mjs src/kit/CodeEditor.tsx src/theme/theme.test.ts src/kit/kit.test.tsx",
|
|
88
|
+
"lint": "eslint . && node scripts/check-colour-literals.mjs src/kit/CodeEditor.tsx src/theme/theme.test.ts src/kit/kit.test.tsx src/kit/renderers.test.tsx",
|
|
89
89
|
"test": "vitest run"
|
|
90
90
|
}
|
|
91
91
|
}
|