@@ -23,8 +23,32 @@ interface ConversionData {
2323 conversion_rate : number
2424}
2525
26+ interface SummaryMetrics {
27+ total_users : number
28+ total_applications : number
29+ total_apis : number
30+ total_connections : number
31+ }
32+
33+ interface UsersResult {
34+ data : {
35+ total_users : number
36+ total_signups : number
37+ total_active_users : number
38+ total_failed_users : number
39+ first_seen : string
40+ last_seen : string
41+ } [ ]
42+ }
43+
2644export default function Auth0Dashboard ( ) {
2745 const [ token ] = useQueryState ( 'token' )
46+ const [ summaryMetrics , setSummaryMetrics ] = useState < SummaryMetrics > ( {
47+ total_users : 0 ,
48+ total_applications : 0 ,
49+ total_apis : 0 ,
50+ total_connections : 0
51+ } )
2852 const [ monthlySignUps , setMonthlySignUps ] = useState < number > ( 0 )
2953 const [ monthlyMau , setMonthlyMau ] = useState < number > ( 0 )
3054 const [ conversionRate , setConversionRate ] = useState < number > ( 0 )
@@ -36,14 +60,34 @@ export default function Auth0Dashboard() {
3660 if ( ! token ) return
3761
3862 try {
39- const [ monthlySignUpsResult , monthlyMauResult , dauResult , authMechResult , conversionResult ] = await Promise . all ( [
63+ const [
64+ usersResult ,
65+ applicationsResult ,
66+ apisResult ,
67+ connectionsResult ,
68+ monthlySignUpsResult ,
69+ monthlyMauResult ,
70+ dauResult ,
71+ authMechResult ,
72+ conversionResult
73+ ] = await Promise . all ( [
74+ pipe < UsersResult > ( token , 'auth0_users_total' ) ,
75+ pipe ( token , 'auth0_applications' ) ,
76+ pipe ( token , 'auth0_apis' ) ,
77+ pipe ( token , 'auth0_connections' ) ,
4078 pipe ( token , 'auth0_signups' ) ,
4179 pipe ( token , 'auth0_mau' ) ,
4280 pipe < { data : DauDataPoint [ ] } > ( token , 'auth0_dau_ts' ) ,
4381 pipe < { data : AuthMechData [ ] } > ( token , 'auth0_mech_usage' ) ,
4482 pipe < { data : ConversionData [ ] } > ( token , 'auth0_conversion_rate' )
4583 ] )
4684
85+ setSummaryMetrics ( {
86+ total_users : usersResult ?. data ?. [ 0 ] ?. total_users || 0 ,
87+ total_applications : applicationsResult ?. data ?. length || 0 ,
88+ total_apis : apisResult ?. data ?. length || 0 ,
89+ total_connections : connectionsResult ?. data ?. length || 0
90+ } )
4791 setMonthlySignUps ( monthlySignUpsResult . data [ 0 ] ?. total || 0 )
4892 setMonthlyMau ( monthlyMauResult . data [ 0 ] ?. active || 0 )
4993 setConversionRate ( conversionResult . data [ 0 ] ?. conversion_rate || 0 )
@@ -59,6 +103,26 @@ export default function Auth0Dashboard() {
59103
60104 return (
61105 < div className = "space-y-8" >
106+ { /* Summary Card */ }
107+ < div className = "grid grid-cols-4 gap-4 p-6 rounded-lg border bg-card text-card-foreground shadow-sm" >
108+ < div >
109+ < p className = "text-sm font-medium text-muted-foreground" > Total Users</ p >
110+ < p className = "text-2xl font-bold" > { summaryMetrics . total_users . toLocaleString ( ) } </ p >
111+ </ div >
112+ < div >
113+ < p className = "text-sm font-medium text-muted-foreground" > Applications</ p >
114+ < p className = "text-2xl font-bold" > { summaryMetrics . total_applications . toLocaleString ( ) } </ p >
115+ </ div >
116+ < div >
117+ < p className = "text-sm font-medium text-muted-foreground" > APIs</ p >
118+ < p className = "text-2xl font-bold" > { summaryMetrics . total_apis . toLocaleString ( ) } </ p >
119+ </ div >
120+ < div >
121+ < p className = "text-sm font-medium text-muted-foreground" > Connections</ p >
122+ < p className = "text-2xl font-bold" > { summaryMetrics . total_connections . toLocaleString ( ) } </ p >
123+ </ div >
124+ </ div >
125+
62126 { /* Metrics Row */ }
63127 < div className = "grid gap-4 md:grid-cols-3" >
64128 < MetricCard
0 commit comments