@@ -15,8 +15,32 @@ interface ConversionData {
1515 conversion_rate : number
1616}
1717
18+ interface SummaryMetrics {
19+ total_users : number
20+ total_applications : number
21+ total_apis : number
22+ total_connections : number
23+ }
24+
25+ interface UsersResult {
26+ data : {
27+ total_users : number
28+ total_signups : number
29+ total_active_users : number
30+ total_failed_users : number
31+ first_seen : string
32+ last_seen : string
33+ } [ ]
34+ }
35+
1836export default function Auth0Dashboard ( ) {
1937 const [ token ] = useQueryState ( 'token' )
38+ const [ summaryMetrics , setSummaryMetrics ] = useState < SummaryMetrics > ( {
39+ total_users : 0 ,
40+ total_applications : 0 ,
41+ total_apis : 0 ,
42+ total_connections : 0
43+ } )
2044 const [ monthlySignUps , setMonthlySignUps ] = useState < number > ( 0 )
2145 const [ monthlyMau , setMonthlyMau ] = useState < number > ( 0 )
2246 const [ conversionRate , setConversionRate ] = useState < number > ( 0 )
@@ -31,7 +55,23 @@ export default function Auth0Dashboard() {
3155 if ( ! token ) return
3256
3357 try {
34- const [ monthlySignUpsResult , monthlyMauResult , dauResult , authMechResult , conversionResult , dailySignupsResult , dailyLoginFailsResult ] = await Promise . all ( [
58+ const [
59+ usersResult ,
60+ applicationsResult ,
61+ apisResult ,
62+ connectionsResult ,
63+ monthlySignUpsResult ,
64+ monthlyMauResult ,
65+ dauResult ,
66+ authMechResult ,
67+ conversionResult ,
68+ dailySignupsResult ,
69+ dailyLoginFailsResult
70+ ] = await Promise . all ( [
71+ pipe < UsersResult > ( token , 'auth0_users_total' ) ,
72+ pipe ( token , 'auth0_applications' ) ,
73+ pipe ( token , 'auth0_apis' ) ,
74+ pipe ( token , 'auth0_connections' ) ,
3575 pipe ( token , 'auth0_signups' ) ,
3676 pipe ( token , 'auth0_mau' ) ,
3777 pipe < { data : DauDataPoint [ ] } > ( token , 'auth0_dau_ts' ) ,
@@ -41,6 +81,12 @@ export default function Auth0Dashboard() {
4181 pipe < { data : DailyLoginFailsDataPoint [ ] } > ( token , 'auth0_daily_login_fails' )
4282 ] )
4383
84+ setSummaryMetrics ( {
85+ total_users : usersResult ?. data ?. [ 0 ] ?. total_users || 0 ,
86+ total_applications : applicationsResult ?. data ?. length || 0 ,
87+ total_apis : apisResult ?. data ?. length || 0 ,
88+ total_connections : connectionsResult ?. data ?. length || 0
89+ } )
4490 setMonthlySignUps ( monthlySignUpsResult . data [ 0 ] ?. total || 0 )
4591 setMonthlyMau ( monthlyMauResult . data [ 0 ] ?. active || 0 )
4692 setConversionRate ( conversionResult . data [ 0 ] ?. conversion_rate || 0 )
@@ -58,6 +104,26 @@ export default function Auth0Dashboard() {
58104
59105 return (
60106 < div className = "space-y-8" >
107+ { /* Summary Card */ }
108+ < div className = "grid grid-cols-4 gap-4 p-6 rounded-lg border bg-card text-card-foreground shadow-sm" >
109+ < div >
110+ < p className = "text-sm font-medium text-muted-foreground" > Total Users</ p >
111+ < p className = "text-2xl font-bold" > { summaryMetrics . total_users . toLocaleString ( ) } </ p >
112+ </ div >
113+ < div >
114+ < p className = "text-sm font-medium text-muted-foreground" > Applications</ p >
115+ < p className = "text-2xl font-bold" > { summaryMetrics . total_applications . toLocaleString ( ) } </ p >
116+ </ div >
117+ < div >
118+ < p className = "text-sm font-medium text-muted-foreground" > APIs</ p >
119+ < p className = "text-2xl font-bold" > { summaryMetrics . total_apis . toLocaleString ( ) } </ p >
120+ </ div >
121+ < div >
122+ < p className = "text-sm font-medium text-muted-foreground" > Connections</ p >
123+ < p className = "text-2xl font-bold" > { summaryMetrics . total_connections . toLocaleString ( ) } </ p >
124+ </ div >
125+ </ div >
126+
61127 { /* Metrics Row */ }
62128 < div className = "grid gap-4 md:grid-cols-3" >
63129 < MetricCard
0 commit comments