@@ -11,6 +11,7 @@ import {
11
11
VirtualGrid ,
12
12
Link ,
13
13
WorkspaceContainer ,
14
+ Body ,
14
15
} from '@mongodb-js/compass-components' ;
15
16
import { useDataModelSavedItems } from '../provider' ;
16
17
import {
@@ -23,7 +24,6 @@ import type { MongoDBDataModelDescription } from '../services/data-model-storage
23
24
import CollaborateIcon from './icons/collaborate' ;
24
25
import SchemaVisualizationIcon from './icons/schema-visualization' ;
25
26
import FlexibilityIcon from './icons/flexibility' ;
26
- import InsightIcon from './icons/insight' ;
27
27
import { CARD_HEIGHT , CARD_WIDTH , DiagramCard } from './diagram-card' ;
28
28
import { DiagramListToolbar } from './diagram-list-toolbar' ;
29
29
import toNS from 'mongodb-ns' ;
@@ -69,27 +69,35 @@ const subTitleStyles = css({
69
69
70
70
const featuresListStyles = css ( {
71
71
display : 'flex' ,
72
+ flexDirection : 'row' ,
72
73
justifyContent : 'center' ,
74
+ alignItems : 'flex-start' ,
73
75
gap : spacing [ 600 ] ,
74
76
marginTop : spacing [ 400 ] ,
77
+ marginBottom : spacing [ 400 ] ,
78
+ } ) ;
79
+
80
+ const featureItemTitleStyles = css ( {
81
+ fontWeight : 'bold' ,
75
82
} ) ;
76
83
77
84
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' ,
81
88
gap : spacing [ 400 ] ,
89
+ width : spacing [ 1400 ] * 3 ,
82
90
} ) ;
83
91
84
- type Feature = 'visualization' | 'collaboration' | 'interactive' | 'insights' ;
92
+ type Feature = 'visualization' | 'collaboration' | 'interactive' ;
85
93
const featureDescription : Record <
86
94
Feature ,
87
95
{ icon : React . FunctionComponent ; title : string ; subtitle : string }
88
96
> = {
89
97
visualization : {
90
98
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' ,
93
101
} ,
94
102
collaboration : {
95
103
icon : CollaborateIcon ,
@@ -101,11 +109,6 @@ const featureDescription: Record<
101
109
title : 'Interactive Diagram Analysis' ,
102
110
subtitle : 'Explore and annotate interactive diagrams' ,
103
111
} ,
104
- insights : {
105
- icon : InsightIcon ,
106
- title : 'Performance Insights & Optimization' ,
107
- subtitle : 'Uncover performance insights & best practices' ,
108
- } ,
109
112
} ;
110
113
111
114
const FeaturesList : React . FunctionComponent < { features : Feature [ ] } > = ( {
@@ -118,15 +121,51 @@ const FeaturesList: React.FunctionComponent<{ features: Feature[] }> = ({
118
121
return (
119
122
< div key = { key } className = { featureItemStyles } >
120
123
< Icon />
121
- < h3 > { title } </ h3 >
122
- < p > { subtitle } </ p >
124
+ < Body className = { featureItemTitleStyles } > { title } </ Body >
125
+ < Body > { subtitle } </ Body >
123
126
</ div >
124
127
) ;
125
128
} ) }
126
129
</ div >
127
130
) ;
128
131
} ;
129
132
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
+
130
169
export const SavedDiagramsList : React . FunctionComponent < {
131
170
onCreateDiagramClick : ( ) => void ;
132
171
onOpenDiagramClick : ( diagram : MongoDBDataModelDescription ) => void ;
@@ -173,40 +212,7 @@ export const SavedDiagramsList: React.FunctionComponent<{
173
212
}
174
213
if ( items . length === 0 ) {
175
214
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 } />
210
216
) ;
211
217
}
212
218
0 commit comments