@arcblock/ux 3.0.25 → 3.0.27
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/lib/CodeBlock/index.js +70 -67
- package/lib/Config/config-provider.d.ts +1 -1
- package/lib/Config/config-provider.js +22 -20
- package/lib/NFTDisplay/preview.d.ts +11 -0
- package/lib/NFTDisplay/preview.js +60 -0
- package/lib/NavMenu/style.js +1 -1
- package/lib/RelativeTime/index.d.ts +2 -1
- package/lib/RelativeTime/index.js +88 -88
- package/lib/Tag/index.js +12 -12
- package/lib/Theme/theme-provider.d.ts +4 -2
- package/lib/Theme/theme-provider.js +83 -79
- package/package.json +7 -7
- package/src/CodeBlock/index.tsx +7 -4
- package/src/Config/config-provider.tsx +3 -1
- package/src/NFTDisplay/preview.tsx +84 -0
- package/src/NavMenu/style.ts +1 -1
- package/src/RelativeTime/index.tsx +43 -29
- package/src/Tag/index.jsx +1 -1
- package/src/Theme/Theme.stories.jsx +1 -0
- package/src/Theme/theme-provider.tsx +19 -12
@@ -33,6 +33,8 @@ export interface ColorSchemeContextType {
|
|
33
33
|
changeMode: (mode: PaletteMode) => void;
|
34
34
|
prefer?: Prefer;
|
35
35
|
}
|
36
|
+
export type UxTheme = ThemeOptions | ((parentTheme: Theme, context?: { mode: PaletteMode }) => Theme);
|
37
|
+
export type Prefer = 'light' | 'dark' | 'system';
|
36
38
|
|
37
39
|
export const ColorSchemeContext = createContext<ColorSchemeContextType>({} as ColorSchemeContextType);
|
38
40
|
export function useColorScheme() {
|
@@ -77,6 +79,9 @@ function DarkSchemeStyles({ className = undefined }: { className?: string }) {
|
|
77
79
|
const webkitThumb = prefix
|
78
80
|
? `${prefix}::-webkit-scrollbar-thumb, ${prefix} *::-webkit-scrollbar-thumb`
|
79
81
|
: '*::-webkit-scrollbar-thumb';
|
82
|
+
const webKitCorner = prefix
|
83
|
+
? `${prefix}::-webkit-scrollbar-corner, ${prefix} *::-webkit-scrollbar-corner`
|
84
|
+
: '*::-webkit-scrollbar-corner';
|
80
85
|
const firefoxSelector = prefix ? `${prefix}, ${prefix} *` : '*';
|
81
86
|
|
82
87
|
return (
|
@@ -102,6 +107,9 @@ function DarkSchemeStyles({ className = undefined }: { className?: string }) {
|
|
102
107
|
backgroundClip: 'padding-box',
|
103
108
|
},
|
104
109
|
},
|
110
|
+
[webKitCorner]: {
|
111
|
+
background: trackColor,
|
112
|
+
},
|
105
113
|
},
|
106
114
|
// Firefox
|
107
115
|
'@supports not selector(::-webkit-scrollbar)': {
|
@@ -118,8 +126,8 @@ function DarkSchemeStyles({ className = undefined }: { className?: string }) {
|
|
118
126
|
return null;
|
119
127
|
}
|
120
128
|
|
121
|
-
|
122
|
-
|
129
|
+
let injectedCssBaseline = false;
|
130
|
+
const injectedDarkSchemeStylesMap: Record<string, boolean> = {};
|
123
131
|
|
124
132
|
interface BaseThemeProviderProps {
|
125
133
|
children?: React.ReactNode;
|
@@ -127,17 +135,16 @@ interface BaseThemeProviderProps {
|
|
127
135
|
injectFirst?: boolean;
|
128
136
|
/** 指定一个类名,DarkSchemeStyles 只会作用于带有该类的元素及其后代 */
|
129
137
|
darkSchemeClass?: string;
|
138
|
+
/** 禁用样式缓存 */
|
139
|
+
disableStyleCache?: boolean;
|
130
140
|
}
|
131
|
-
|
132
|
-
let injectedCssBaseline = false;
|
133
|
-
const injectedDarkSchemeStylesMap: Record<string, boolean> = {};
|
134
|
-
|
135
141
|
/** 快速配置 MUI 主题 */
|
136
142
|
function BaseThemeProvider({
|
137
143
|
children = null,
|
138
144
|
theme = defaultTheme,
|
139
145
|
injectFirst = true,
|
140
146
|
darkSchemeClass = '',
|
147
|
+
disableStyleCache = false,
|
141
148
|
}: BaseThemeProviderProps) {
|
142
149
|
const _theme = useMemo(() => {
|
143
150
|
if (typeof theme === 'function') {
|
@@ -151,18 +158,20 @@ function BaseThemeProvider({
|
|
151
158
|
}, [theme]);
|
152
159
|
|
153
160
|
const cssBaseline = useCreation(() => {
|
154
|
-
if (
|
161
|
+
if (disableStyleCache) return <CssBaseline />;
|
155
162
|
|
163
|
+
if (injectedCssBaseline) return null;
|
156
164
|
injectedCssBaseline = true;
|
157
165
|
return <CssBaseline />;
|
158
|
-
}, []);
|
166
|
+
}, [disableStyleCache]);
|
159
167
|
|
160
168
|
const darkSchemeStyles = useCreation(() => {
|
161
|
-
if (
|
169
|
+
if (disableStyleCache) return <DarkSchemeStyles className={darkSchemeClass} />;
|
162
170
|
|
171
|
+
if (injectedDarkSchemeStylesMap[darkSchemeClass]) return null;
|
163
172
|
injectedDarkSchemeStylesMap[darkSchemeClass] = true;
|
164
173
|
return <DarkSchemeStyles className={darkSchemeClass} />;
|
165
|
-
}, [darkSchemeClass]);
|
174
|
+
}, [darkSchemeClass, disableStyleCache]);
|
166
175
|
|
167
176
|
return (
|
168
177
|
// injectFirst 会影响 makeStyles 自定义样式和 mui styles 覆盖问题
|
@@ -180,7 +189,6 @@ interface ColorSchemeProviderProps extends BaseThemeProviderProps {
|
|
180
189
|
prefer?: Prefer;
|
181
190
|
disableBlockletTheme?: boolean;
|
182
191
|
}
|
183
|
-
|
184
192
|
/** 配置带颜色模式切换功能的 MUI 主题 */
|
185
193
|
function ColorSchemeProvider({
|
186
194
|
children = null,
|
@@ -349,7 +357,6 @@ export interface ThemeProviderProps extends ColorSchemeProviderProps {
|
|
349
357
|
*/
|
350
358
|
enableColorScheme?: boolean;
|
351
359
|
}
|
352
|
-
|
353
360
|
export default function ThemeProvider({
|
354
361
|
children = null,
|
355
362
|
prefer = undefined,
|