@@ -11,6 +11,7 @@ import {
1111 VirtualGrid ,
1212 Link ,
1313 WorkspaceContainer ,
14+ Body ,
1415} from '@mongodb-js/compass-components' ;
1516import { useDataModelSavedItems } from '../provider' ;
1617import {
@@ -23,7 +24,6 @@ import type { MongoDBDataModelDescription } from '../services/data-model-storage
2324import CollaborateIcon from './icons/collaborate' ;
2425import SchemaVisualizationIcon from './icons/schema-visualization' ;
2526import FlexibilityIcon from './icons/flexibility' ;
26- import InsightIcon from './icons/insight' ;
2727import { CARD_HEIGHT , CARD_WIDTH , DiagramCard } from './diagram-card' ;
2828import { DiagramListToolbar } from './diagram-list-toolbar' ;
2929import toNS from 'mongodb-ns' ;
@@ -69,27 +69,35 @@ const subTitleStyles = css({
6969
7070const 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
7784const 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' ;
8593const 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
111114const 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+
130169export 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