Skip to content

Commit 3d3d307

Browse files
authored
chore(compass-components): use darkMode with LeafyGreenProvider COMPASS-6331 (#3858)
1 parent 281a132 commit 3d3d307

File tree

58 files changed

+316
-630
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+316
-630
lines changed

packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-empty-results.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
11
import React, { useMemo } from 'react';
22
import {
3-
EmptyContent, palette, withTheme
3+
EmptyContent, palette, useDarkMode
44
} from '@mongodb-js/compass-components';
55

6-
type ZeroGraphicProps = {
7-
darkMode?: boolean;
8-
};
9-
10-
const UnthemedZeroGraphic: React.FunctionComponent<
11-
ZeroGraphicProps
12-
> = ({ darkMode }) => {
6+
const ZeroGraphic: React.FunctionComponent = () => {
7+
const darkMode = useDarkMode();
138
const fillColor = useMemo(
149
() => (darkMode ? palette.white : palette.black),
1510
[darkMode]
@@ -26,10 +21,6 @@ const UnthemedZeroGraphic: React.FunctionComponent<
2621
);
2722
};
2823

29-
const ZeroGraphic = withTheme(
30-
UnthemedZeroGraphic
31-
) as typeof UnthemedZeroGraphic;
32-
3324
export const PipelineEmptyResults: React.FunctionComponent = () => {
3425
return (
3526
<div data-testid="pipeline-empty-results">

packages/compass-aggregations/src/components/pipeline-toolbar/index.tsx

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useState } from 'react';
2-
import { css, cx, spacing, palette, withTheme } from '@mongodb-js/compass-components';
2+
import { css, cx, spacing, palette, useDarkMode } from '@mongodb-js/compass-components';
33
import { connect } from 'react-redux';
44

55
import PipelineHeader from './pipeline-header';
@@ -47,7 +47,6 @@ const optionsStyles = css({
4747
});
4848

4949
type PipelineToolbarProps = {
50-
darkMode?: boolean;
5150
isBuilderView: boolean;
5251
showRunButton: boolean;
5352
showExportButton: boolean;
@@ -57,14 +56,14 @@ type PipelineToolbarProps = {
5756
};
5857

5958
export const PipelineToolbar: React.FunctionComponent<PipelineToolbarProps> = ({
60-
darkMode,
6159
isBuilderView,
6260
showRunButton,
6361
showExportButton,
6462
showExplainButton,
6563
onChangePipelineOutputOption,
6664
pipelineOutputOption,
6765
}) => {
66+
const darkMode = useDarkMode();
6867
const [isOptionsVisible, setIsOptionsVisible] = useState(false);
6968
return (
7069
<div
@@ -74,44 +73,42 @@ export const PipelineToolbar: React.FunctionComponent<PipelineToolbarProps> = ({
7473
)}
7574
data-testid="pipeline-toolbar"
7675
>
77-
<>
78-
<div
79-
className={cx(
80-
headerAndOptionsRowStyles,
81-
darkMode && headerAndOptionsRowDarkStyles
82-
)}
83-
>
84-
<PipelineHeader
85-
isOptionsVisible={isOptionsVisible}
86-
onToggleOptions={() => setIsOptionsVisible(!isOptionsVisible)}
87-
showRunButton={showRunButton}
88-
showExportButton={showExportButton}
89-
showExplainButton={showExplainButton}
90-
/>
91-
{isOptionsVisible && (
92-
<div className={optionsStyles}>
93-
<PipelineOptions />
94-
</div>
95-
)}
96-
</div>
97-
{isBuilderView ? (
98-
<div className={settingsRowStyles}>
99-
<PipelineSettings />
100-
</div>
101-
) : (
102-
<div className={settingsRowStyles}>
103-
<PipelineResultsHeader
104-
onChangePipelineOutputOption={onChangePipelineOutputOption}
105-
pipelineOutputOption={pipelineOutputOption}
106-
/>
76+
<div
77+
className={cx(
78+
headerAndOptionsRowStyles,
79+
darkMode && headerAndOptionsRowDarkStyles
80+
)}
81+
>
82+
<PipelineHeader
83+
isOptionsVisible={isOptionsVisible}
84+
onToggleOptions={() => setIsOptionsVisible(!isOptionsVisible)}
85+
showRunButton={showRunButton}
86+
showExportButton={showExportButton}
87+
showExplainButton={showExplainButton}
88+
/>
89+
{isOptionsVisible && (
90+
<div className={optionsStyles}>
91+
<PipelineOptions />
10792
</div>
10893
)}
109-
</>
94+
</div>
95+
{isBuilderView ? (
96+
<div className={settingsRowStyles}>
97+
<PipelineSettings />
98+
</div>
99+
) : (
100+
<div className={settingsRowStyles}>
101+
<PipelineResultsHeader
102+
onChangePipelineOutputOption={onChangePipelineOutputOption}
103+
pipelineOutputOption={pipelineOutputOption}
104+
/>
105+
</div>
106+
)}
110107
</div>
111108
);
112109
};
113110

114111
const mapState = ({ workspace }: RootState) => ({
115112
isBuilderView: workspace === 'builder'
116113
});
117-
export default withTheme(connect(mapState)(PipelineToolbar));
114+
export default connect(mapState)(PipelineToolbar);

packages/compass-aggregations/src/components/saved-pipelines/saved-pipelines.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
spacing,
55
palette,
66
Body,
7-
withTheme
7+
useDarkMode
88
} from '@mongodb-js/compass-components';
99
import SavePipelineCard from './saved-pipeline-card';
1010

@@ -49,16 +49,15 @@ const emptyMessageStyles = css({
4949
});
5050

5151
type SavedPipelinesProps = {
52-
darkMode?: boolean;
5352
namespace: string;
5453
savedPipelines: { id: string; name: string }[];
5554
};
5655

57-
function UnthemedSavedPipelines({
58-
darkMode,
56+
function SavedPipelines({
5957
namespace,
6058
savedPipelines,
6159
}: SavedPipelinesProps) {
60+
const darkMode = useDarkMode();
6261
return (
6362
<div className={savedPipelinesStyles}>
6463
<div className={toolbarContentStyles}>
@@ -94,6 +93,4 @@ function UnthemedSavedPipelines({
9493
);
9594
};
9695

97-
const SavedPipelines = withTheme(UnthemedSavedPipelines);
98-
9996
export { SavedPipelines };

packages/compass-collection/src/components/collection-header-actions/view-information.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
Subtitle,
44
palette,
55
cx,
6-
withTheme,
6+
useDarkMode,
77
} from '@mongodb-js/compass-components';
88
import React from 'react';
99

@@ -24,14 +24,14 @@ const collectionHeaderActionsReadonlyDarkStyles = css({
2424
});
2525

2626
type ViewInformationProps = {
27-
darkMode?: boolean;
2827
sourceName: string;
2928
};
3029

3130
const ViewInformation: React.FunctionComponent<ViewInformationProps> = ({
32-
darkMode,
3331
sourceName,
3432
}: ViewInformationProps) => {
33+
const darkMode = useDarkMode();
34+
3535
return (
3636
<Subtitle
3737
data-testid="collection-view-on"
@@ -48,4 +48,4 @@ const ViewInformation: React.FunctionComponent<ViewInformationProps> = ({
4848
);
4949
};
5050

51-
export default withTheme(ViewInformation);
51+
export default ViewInformation;

packages/compass-collection/src/components/collection-header/collection-header.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type AppRegistry from 'hadron-app-registry';
22
import {
33
css,
44
palette,
5-
withTheme,
5+
withDarkMode,
66
Link,
77
spacing,
88
H3,
@@ -237,4 +237,4 @@ class CollectionHeader extends Component<CollectionHeaderProps> {
237237
}
238238
}
239239

240-
export default withTheme(CollectionHeader);
240+
export default withDarkMode(CollectionHeader);

packages/compass-collection/src/components/collection-stats-item/collection-stats-item.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
spacing,
66
Disclaimer,
77
H3,
8-
withTheme,
8+
useDarkMode,
99
} from '@mongodb-js/compass-components';
1010

1111
const collectionStatsItemStyles = css({
@@ -42,7 +42,6 @@ const lightThemeValueStyles = css({
4242
});
4343

4444
type CollectionStatsItemProps = {
45-
darkMode?: boolean;
4645
label: string;
4746
value: string;
4847
dataTestId: string;
@@ -53,7 +52,9 @@ type CollectionStatsItemProps = {
5352
*/
5453
const CollectionStatsItem: React.FunctionComponent<
5554
CollectionStatsItemProps
56-
> = ({ darkMode, dataTestId, label, value }: CollectionStatsItemProps) => {
55+
> = ({ dataTestId, label, value }: CollectionStatsItemProps) => {
56+
const darkMode = useDarkMode();
57+
5758
return (
5859
<div className={collectionStatsItemStyles} data-testid={dataTestId}>
5960
<H3
@@ -72,4 +73,4 @@ const CollectionStatsItem: React.FunctionComponent<
7273
);
7374
};
7475

75-
export default withTheme(CollectionStatsItem);
76+
export default CollectionStatsItem;

packages/compass-components/src/components/accordion.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { spacing } from '@leafygreen-ui/tokens';
33
import { css, cx } from '@leafygreen-ui/emotion';
44
import { palette } from '@leafygreen-ui/palette';
55
import { useId } from '@react-aria/utils';
6+
import { useDarkMode } from '../hooks/use-theme';
67

78
import { Description, Icon } from './leafygreen';
8-
import { withTheme } from '../hooks/use-theme';
99

1010
const buttonStyles = css({
1111
fontWeight: 'bold',
@@ -48,16 +48,15 @@ const buttonHintStyles = css({
4848
display: 'inline',
4949
});
5050
interface AccordionProps extends React.HTMLProps<HTMLButtonElement> {
51-
darkMode?: boolean;
5251
text: string | React.ReactNode;
5352
hintText?: string;
5453
}
55-
function UnthemedAccordion({
54+
function Accordion({
5655
text,
57-
darkMode,
5856
hintText,
5957
...props
6058
}: React.PropsWithChildren<AccordionProps>): React.ReactElement {
59+
const darkMode = useDarkMode();
6160
const [open, setOpen] = useState(false);
6261
const regionId = useId('region-');
6362
const labelId = useId('label-');
@@ -98,6 +97,4 @@ function UnthemedAccordion({
9897
);
9998
}
10099

101-
const Accordion = withTheme(UnthemedAccordion);
102-
103100
export { Accordion };

packages/compass-components/src/components/bson-value.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { variantColors } from '@leafygreen-ui/code';
77
import { Icon, Link } from './leafygreen';
88
import { spacing } from '@leafygreen-ui/tokens';
99
import { css, cx } from '@leafygreen-ui/emotion';
10-
import { Theme, useTheme } from '../hooks/use-theme';
10+
import { Theme, useDarkMode } from '../hooks/use-theme';
1111

1212
type ValueProps =
1313
| {
@@ -67,20 +67,23 @@ export const BSONValueContainer: React.FunctionComponent<
6767
chidren?: React.ReactChildren;
6868
}
6969
> = ({ type, children, className, ...props }) => {
70-
const { theme } = useTheme();
70+
const darkMode = useDarkMode();
7171
const textColorStyle = useMemo(() => {
7272
if (!type) {
7373
return '';
7474
}
7575

76-
const color = VALUE_COLOR_BY_THEME_AND_TYPE[theme]?.[type];
76+
const color =
77+
VALUE_COLOR_BY_THEME_AND_TYPE[darkMode ? Theme.Dark : Theme.Light]?.[
78+
type
79+
];
7780

7881
if (!color) {
7982
return '';
8083
}
8184

8285
return css({ color });
83-
}, [type, theme]);
86+
}, [type, darkMode]);
8487

8588
return (
8689
<div

packages/compass-components/src/components/checkbox.tsx

Lines changed: 0 additions & 16 deletions
This file was deleted.

packages/compass-components/src/components/file-input.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import path from 'path';
33
import { css, cx } from '@leafygreen-ui/emotion';
44
import { palette } from '@leafygreen-ui/palette';
55
import { spacing } from '@leafygreen-ui/tokens';
6-
import { withTheme } from '../hooks/use-theme';
6+
import { useDarkMode } from '../hooks/use-theme';
77

88
import {
99
Button,
@@ -128,7 +128,6 @@ function FileInput({
128128
id,
129129
label,
130130
dataTestId,
131-
darkMode,
132131
onChange,
133132
disabled,
134133
multi = false,
@@ -149,7 +148,6 @@ function FileInput({
149148
label: string;
150149
dataTestId?: string;
151150
onChange: (files: string[]) => void;
152-
darkMode?: boolean;
153151
disabled?: boolean;
154152
multi?: boolean;
155153
optional?: boolean;
@@ -165,6 +163,8 @@ function FileInput({
165163
accept?: string;
166164
backend?: FileInputBackend;
167165
}): React.ReactElement {
166+
const darkMode = useDarkMode();
167+
168168
const inputRef = React.useRef<HTMLInputElement>(null);
169169

170170
const buttonText = React.useMemo(() => {
@@ -312,7 +312,7 @@ function FileInput({
312312
);
313313
}
314314

315-
export default withTheme(FileInput);
315+
export default FileInput;
316316

317317
// Matches Electron's file dialog options
318318
export type ElectronFileDialogOptions = {

0 commit comments

Comments
 (0)