Skip to content

Commit 6ce44ba

Browse files
authored
chore(data-modeling): update zero state styles and text COMPASS-9416 (#6974)
1 parent 3abe649 commit 6ce44ba

File tree

3 files changed

+55
-90
lines changed

3 files changed

+55
-90
lines changed

packages/compass-data-modeling/src/components/icons/insight.tsx

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

packages/compass-data-modeling/src/components/saved-diagrams-list.spec.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,7 @@ describe('SavedDiagramsList', function () {
139139
});
140140

141141
it('shows the empty state', function () {
142-
expect(
143-
screen.getByText('Design, Visualize, and Evolve your Data Model')
144-
).to.be.visible;
142+
expect(screen.getByText('Visualize your Data Model')).to.be.visible;
145143
});
146144

147145
it('allows to start adding diagrams', function () {

packages/compass-data-modeling/src/components/saved-diagrams-list.tsx

Lines changed: 54 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
VirtualGrid,
1212
Link,
1313
WorkspaceContainer,
14+
Body,
1415
} from '@mongodb-js/compass-components';
1516
import { useDataModelSavedItems } from '../provider';
1617
import {
@@ -23,7 +24,6 @@ import type { MongoDBDataModelDescription } from '../services/data-model-storage
2324
import CollaborateIcon from './icons/collaborate';
2425
import SchemaVisualizationIcon from './icons/schema-visualization';
2526
import FlexibilityIcon from './icons/flexibility';
26-
import InsightIcon from './icons/insight';
2727
import { CARD_HEIGHT, CARD_WIDTH, DiagramCard } from './diagram-card';
2828
import { DiagramListToolbar } from './diagram-list-toolbar';
2929
import toNS from 'mongodb-ns';
@@ -69,27 +69,35 @@ const subTitleStyles = css({
6969

7070
const featuresListStyles = css({
7171
display: 'flex',
72+
flexDirection: 'row',
7273
justifyContent: 'center',
74+
alignItems: 'flex-start',
7375
gap: spacing[600],
7476
marginTop: spacing[400],
77+
marginBottom: spacing[400],
78+
});
79+
80+
const featureItemTitleStyles = css({
81+
fontWeight: 'bold',
7582
});
7683

7784
const featureItemStyles = css({
78-
display: 'flex',
79-
flexDirection: 'column',
80-
alignItems: 'center',
85+
display: 'grid',
86+
gridTemplateRows: `${spacing[1800]}px 1fr 1fr`,
87+
justifyItems: 'center',
8188
gap: spacing[400],
89+
width: spacing[1400] * 3,
8290
});
8391

84-
type Feature = 'visualization' | 'collaboration' | 'interactive' | 'insights';
92+
type Feature = 'visualization' | 'collaboration' | 'interactive';
8593
const featureDescription: Record<
8694
Feature,
8795
{ icon: React.FunctionComponent; title: string; subtitle: string }
8896
> = {
8997
visualization: {
9098
icon: SchemaVisualizationIcon,
91-
title: 'Quick Visualization & Refactoring',
92-
subtitle: 'Instantly visualize and refactor data models',
99+
title: 'Quick Visualization',
100+
subtitle: 'Instantly visualize your data models',
93101
},
94102
collaboration: {
95103
icon: CollaborateIcon,
@@ -101,11 +109,6 @@ const featureDescription: Record<
101109
title: 'Interactive Diagram Analysis',
102110
subtitle: 'Explore and annotate interactive diagrams',
103111
},
104-
insights: {
105-
icon: InsightIcon,
106-
title: 'Performance Insights & Optimization',
107-
subtitle: 'Uncover performance insights & best practices',
108-
},
109112
};
110113

111114
const FeaturesList: React.FunctionComponent<{ features: Feature[] }> = ({
@@ -118,15 +121,51 @@ const FeaturesList: React.FunctionComponent<{ features: Feature[] }> = ({
118121
return (
119122
<div key={key} className={featureItemStyles}>
120123
<Icon />
121-
<h3>{title}</h3>
122-
<p>{subtitle}</p>
124+
<Body className={featureItemTitleStyles}>{title}</Body>
125+
<Body>{subtitle}</Body>
123126
</div>
124127
);
125128
})}
126129
</div>
127130
);
128131
};
129132

133+
const DiagramListEmptyContent: React.FunctionComponent<{
134+
onCreateDiagramClick: () => void;
135+
}> = ({ onCreateDiagramClick }) => {
136+
return (
137+
<WorkspaceContainer>
138+
<EmptyContent
139+
title="Visualize your Data Model"
140+
subTitle={
141+
<>
142+
Your data model is the foundation of application performance. As
143+
applications evolve, so must your schema—intelligently and
144+
strategically. Minimize complexity, prevent performance bottlenecks,
145+
and keep your development agile.
146+
<FeaturesList
147+
features={['visualization', 'collaboration', 'interactive']}
148+
/>
149+
<Link href="https://www.mongodb.com/docs/compass/current/data-modeling/">
150+
Data modeling documentation
151+
</Link>
152+
</>
153+
}
154+
subTitleClassName={subTitleStyles}
155+
callToAction={
156+
<Button
157+
onClick={onCreateDiagramClick}
158+
variant="primary"
159+
data-testid="create-diagram-button"
160+
>
161+
Generate diagram
162+
</Button>
163+
}
164+
></EmptyContent>
165+
</WorkspaceContainer>
166+
);
167+
};
168+
130169
export const SavedDiagramsList: React.FunctionComponent<{
131170
onCreateDiagramClick: () => void;
132171
onOpenDiagramClick: (diagram: MongoDBDataModelDescription) => void;
@@ -173,40 +212,7 @@ export const SavedDiagramsList: React.FunctionComponent<{
173212
}
174213
if (items.length === 0) {
175214
return (
176-
<WorkspaceContainer>
177-
<EmptyContent
178-
title="Design, Visualize, and Evolve your Data Model"
179-
subTitle={
180-
<>
181-
Your data model is the foundation of application performance. As
182-
applications evolve, so must your schema—intelligently and
183-
strategically. Minimize complexity, prevent performance
184-
bottlenecks, and keep your development agile.
185-
<FeaturesList
186-
features={[
187-
'visualization',
188-
'collaboration',
189-
'interactive',
190-
'insights',
191-
]}
192-
/>
193-
<Link href="https://www.mongodb.com/docs/compass/current/data-modeling/">
194-
Data Modeling Documentation
195-
</Link>
196-
</>
197-
}
198-
subTitleClassName={subTitleStyles}
199-
callToAction={
200-
<Button
201-
onClick={onCreateDiagramClick}
202-
variant="primary"
203-
data-testid="create-diagram-button"
204-
>
205-
Generate diagram
206-
</Button>
207-
}
208-
></EmptyContent>
209-
</WorkspaceContainer>
215+
<DiagramListEmptyContent onCreateDiagramClick={onCreateDiagramClick} />
210216
);
211217
}
212218

0 commit comments

Comments
 (0)