67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package pages
|
|
|
|
import (
|
|
g "maragu.dev/gomponents"
|
|
h "maragu.dev/gomponents/html"
|
|
"reichard.io/antholume/database"
|
|
"reichard.io/antholume/web/components/stats"
|
|
)
|
|
|
|
var _ Page = (*Home)(nil)
|
|
|
|
type Home struct {
|
|
Leaderboard []stats.LeaderboardData
|
|
Streaks []database.UserStreak
|
|
DailyStats []database.GetDailyReadStatsRow
|
|
RecordInfo *database.GetDatabaseInfoRow
|
|
}
|
|
|
|
func (Home) Route() PageRoute { return HomePage }
|
|
|
|
func (p Home) Render() g.Node {
|
|
return h.Div(
|
|
g.Attr("class", "flex flex-col gap-4"),
|
|
h.Div(
|
|
g.Attr("class", "w-full"),
|
|
h.Div(
|
|
g.Attr("class", "relative w-full bg-white shadow-lg dark:bg-gray-700 rounded"),
|
|
h.P(
|
|
g.Attr("class", "absolute top-3 left-5 text-sm font-semibold border-b border-gray-200 w-max dark:border-gray-500"),
|
|
g.Text("Daily Read Totals"),
|
|
),
|
|
stats.MonthlyChart(p.DailyStats),
|
|
),
|
|
),
|
|
h.Div(
|
|
g.Attr("class", "grid grid-cols-2 gap-4 md:grid-cols-4"),
|
|
stats.InfoCard(stats.InfoCardData{
|
|
Title: "Documents",
|
|
Size: p.RecordInfo.DocumentsSize,
|
|
Link: "./documents",
|
|
}),
|
|
stats.InfoCard(stats.InfoCardData{
|
|
Title: "Activity Records",
|
|
Size: p.RecordInfo.ActivitySize,
|
|
Link: "./activity",
|
|
}),
|
|
stats.InfoCard(stats.InfoCardData{
|
|
Title: "Progress Records",
|
|
Size: p.RecordInfo.ProgressSize,
|
|
Link: "./progress",
|
|
}),
|
|
stats.InfoCard(stats.InfoCardData{
|
|
Title: "Devices",
|
|
Size: p.RecordInfo.DevicesSize,
|
|
}),
|
|
),
|
|
h.Div(
|
|
g.Attr("class", "grid grid-cols-1 gap-4 md:grid-cols-2"),
|
|
g.Map(p.Streaks, stats.StreakCard),
|
|
),
|
|
h.Div(
|
|
g.Attr("class", "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3"),
|
|
g.Map(p.Leaderboard, stats.LeaderboardCard),
|
|
),
|
|
)
|
|
}
|