Skip to content

Commit 715ce44

Browse files
feat: Implement dark mode for create index modal in early journey variant CLOUDP-313986 (#6972)
* Add dark mode styles for covered queries * Add light mode style to code editor * Add light mode styles for skeleton loader * Fix subtitle color * Fix border styling --------- Co-authored-by: Walter Tan <walter.tan@mongodb.com>
1 parent 3a5196d commit 715ce44

File tree

3 files changed

+57
-10
lines changed

3 files changed

+57
-10
lines changed

packages/compass-indexes/src/components/create-index-form/index-flow-section.tsx

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
fontFamilies,
1212
InfoSprinkle,
1313
Tooltip,
14+
useDarkMode,
1415
} from '@mongodb-js/compass-components';
1516
import React, { useState, useCallback, useEffect } from 'react';
1617
import {
@@ -41,6 +42,10 @@ const indexFieldsCalloutStyles = css({
4142
marginBottom: spacing[600],
4243
});
4344

45+
const indexFieldsCalloutDarkStyles = css({
46+
border: `1px solid ${palette.gray.base}`,
47+
});
48+
4449
const codeEquivalentToggleLabelStyles = css({
4550
marginRight: spacing[100],
4651
fontWeight: 'normal',
@@ -51,13 +56,20 @@ const coveredQueriesHeaderContainerStyles = css({
5156
});
5257

5358
const coveredQueriesCalloutStyles = css({
54-
border: `1px solid ${palette.gray.light2}`,
55-
background: palette.gray.light3,
5659
borderRadius: '12px',
5760
padding: spacing[600],
5861
marginBottom: spacing[600],
5962
});
6063

64+
const lightModeCoveredQueriesCalloutStyles = css({
65+
border: `1px solid ${palette.gray.light2}`,
66+
background: palette.gray.light3,
67+
});
68+
69+
const darkModeCoveredQueriesCalloutStyles = css({
70+
border: `1px solid ${palette.gray.dark2}`,
71+
background: palette.black,
72+
});
6173
const buttonContainerStyles = css({
6274
display: 'flex',
6375
justifyContent: 'right',
@@ -171,6 +183,7 @@ const IndexFlowSection = ({
171183
onErrorEncountered,
172184
onErrorCleared,
173185
}: IndexFlowSectionProps) => {
186+
const darkMode = useDarkMode();
174187
const [isCodeEquivalentToggleChecked, setIsCodeEquivalentToggleChecked] =
175188
useState(false);
176189
const [hasFieldChanges, setHasFieldChanges] = useState(false);
@@ -266,7 +279,12 @@ const IndexFlowSection = ({
266279
/>
267280
</div>
268281
</div>
269-
<div className={indexFieldsCalloutStyles}>
282+
<div
283+
className={cx(
284+
indexFieldsCalloutStyles,
285+
darkMode && indexFieldsCalloutDarkStyles
286+
)}
287+
>
270288
{isCodeEquivalentToggleChecked ? (
271289
<MDBCodeViewer
272290
dbName={dbName}
@@ -321,7 +339,14 @@ const IndexFlowSection = ({
321339
</InfoSprinkle>
322340
</div>
323341

324-
<div className={coveredQueriesCalloutStyles}>
342+
<div
343+
className={cx(
344+
coveredQueriesCalloutStyles,
345+
darkMode
346+
? darkModeCoveredQueriesCalloutStyles
347+
: lightModeCoveredQueriesCalloutStyles
348+
)}
349+
>
325350
{/* Covered Queries */}
326351
<Body
327352
className={codeStyles}

packages/compass-indexes/src/components/create-index-form/query-flow-section.tsx

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
cx,
77
useFocusRing,
88
ParagraphSkeleton,
9+
useDarkMode,
910
} from '@mongodb-js/compass-components';
1011
import type { Document } from 'mongodb';
1112
import React, { useMemo, useCallback } from 'react';
@@ -62,7 +63,6 @@ const codeEditorContainerStyles = css({
6263
const codeEditorStyles = css({
6364
borderRadius: editorContainerRadius,
6465
'& .cm-editor': {
65-
background: `${palette.white} !important`,
6666
borderRadius: editorContainerRadius,
6767
},
6868
'& .cm-content': {
@@ -71,12 +71,21 @@ const codeEditorStyles = css({
7171
},
7272
});
7373

74+
const lightModeCodeEditorStyles = css({
75+
'& .cm-editor': {
76+
background: `${palette.white} !important`,
77+
},
78+
});
79+
7480
const indexSuggestionsLoaderStyles = css({
7581
marginBottom: spacing[600],
7682
padding: spacing[600],
83+
borderRadius: editorContainerRadius,
84+
});
85+
86+
const indexSuggestionsLoaderLightStyles = css({
7787
background: palette.gray.light3,
7888
border: `1px solid ${palette.gray.light2}`,
79-
borderRadius: editorContainerRadius,
8089
});
8190

8291
const insightStyles = css({
@@ -111,6 +120,7 @@ const QueryFlowSection = ({
111120
initialQuery: Document | null;
112121
}) => {
113122
const track = useTelemetry();
123+
const darkMode = useDarkMode();
114124
const [inputQuery, setInputQuery] = React.useState(
115125
initialQuery ? JSON.stringify(initialQuery, null, 2) : ''
116126
);
@@ -205,7 +215,10 @@ const QueryFlowSection = ({
205215
onChangeText={(text) => handleQueryInputChange(text)}
206216
placeholder="Type a query: { field: 'value' }"
207217
completer={completer}
208-
className={codeEditorStyles}
218+
className={cx(
219+
codeEditorStyles,
220+
!darkMode && lightModeCodeEditorStyles
221+
)}
209222
/>
210223
</div>
211224

@@ -230,7 +243,10 @@ const QueryFlowSection = ({
230243
{isFetchingIndexSuggestions ? (
231244
<ParagraphSkeleton
232245
data-testid="query-flow-section-code-loader"
233-
className={indexSuggestionsLoaderStyles}
246+
className={cx(
247+
indexSuggestionsLoaderStyles,
248+
!darkMode && indexSuggestionsLoaderLightStyles
249+
)}
234250
/>
235251
) : (
236252
indexSuggestions && (

packages/compass-indexes/src/components/create-index-modal/create-index-modal-header.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
css,
66
palette,
77
Link,
8+
useDarkMode,
89
} from '@mongodb-js/compass-components';
910
import React from 'react';
1011

@@ -13,18 +14,23 @@ const headerStyle = css({
1314
paddingBottom: 0,
1415
});
1516

16-
const subtitleStyle = css({
17+
const subtitleLightStyle = css({
1718
color: palette.gray.dark1,
1819
});
1920

21+
const subtitleDarkStyle = css({
22+
color: palette.gray.light1,
23+
});
24+
2025
const CreateIndexModalHeader = () => {
26+
const darkMode = useDarkMode();
2127
return (
2228
<div className={headerStyle}>
2329
<H3 data-testid="create-index-modal-header-title">Create Index</H3>
2430

2531
<Body
2632
data-testid="create-index-modal-header-subtitle"
27-
className={subtitleStyle}
33+
className={darkMode ? subtitleDarkStyle : subtitleLightStyle}
2834
>
2935
The best indexes for your application should consider a number of
3036
factors, such as your data model, and the queries you use most often. To

0 commit comments

Comments
 (0)