Skip to content

Commit 3029aa2

Browse files
authored
[docs-app] Wrap docs in ThemeProvider and expose isDarkTheme through context (#7539)
1 parent 82c77c0 commit 3029aa2

File tree

3 files changed

+39
-12
lines changed

3 files changed

+39
-12
lines changed

packages/docs-app/src/components/blueprintDocs.tsx

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {
2626
type DocumentationProps,
2727
NavMenuItem,
2828
type NavMenuItemProps,
29+
ThemeProvider,
2930
} from "@blueprintjs/docs-theme";
3031

3132
import { highlightCodeBlocks } from "../styles/syntaxHighlighting";
@@ -97,20 +98,27 @@ export class BlueprintDocs extends Component<BlueprintDocsProps, { themeName: st
9798
packageInfo={this.getNpmPackage("@blueprintjs/core")}
9899
/>
99100
);
101+
const themeContextValue = {
102+
isDarkTheme: this.state.themeName === DARK_THEME,
103+
toggleTheme: this.handleToggleDark,
104+
};
105+
100106
return (
101107
<BlueprintProvider>
102-
<Documentation
103-
{...this.props}
104-
className={this.state.themeName}
105-
banner={banner}
106-
footer={footer}
107-
header={header}
108-
navigatorExclude={isNavSection}
109-
onComponentUpdate={this.handleComponentUpdate}
110-
renderNavMenuItem={this.renderNavMenuItem}
111-
renderPageActions={this.renderPageActions}
112-
renderViewSourceLinkText={this.renderViewSourceLinkText}
113-
/>
108+
<ThemeProvider value={themeContextValue}>
109+
<Documentation
110+
{...this.props}
111+
className={this.state.themeName}
112+
banner={banner}
113+
footer={footer}
114+
header={header}
115+
navigatorExclude={isNavSection}
116+
onComponentUpdate={this.handleComponentUpdate}
117+
renderNavMenuItem={this.renderNavMenuItem}
118+
renderPageActions={this.renderPageActions}
119+
renderViewSourceLinkText={this.renderViewSourceLinkText}
120+
/>
121+
</ThemeProvider>
114122
</BlueprintProvider>
115123
);
116124
}

packages/docs-theme/src/common/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ export * from "./constants";
2121
export * from "./documentalistUtils";
2222
export * from "./eventHandlerUtils";
2323
export * from "./stringUtils";
24+
export * from "./themeContext";
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/* !
2+
* (c) Copyright 2025 Palantir Technologies Inc. All rights reserved.
3+
*/
4+
5+
import { createContext, useContext } from "react";
6+
7+
export interface ThemeContextValue {
8+
isDarkTheme: boolean;
9+
toggleTheme?: (useDark: boolean) => void;
10+
}
11+
12+
export const ThemeContext = createContext<ThemeContextValue>({
13+
isDarkTheme: false,
14+
});
15+
16+
export const useTheme = () => useContext(ThemeContext);
17+
18+
export const ThemeProvider = ThemeContext.Provider;

0 commit comments

Comments
 (0)