import { z } from "zod"; import type { ModuleManifest, WidgetContext } from "../_core/module"; import { getBangStats } from "./server/queries"; import { BangWidget } from "./components/bang-widget"; const bangWidgetConfigSchema = z.object({ maxRecentBangs: z.number().int().min(1).max(20).default(5), }); async function BangWidgetServer({ config, ctx }: { config: unknown; ctx: WidgetContext }) { const parsed = bangWidgetConfigSchema.parse(config); const stats = await getBangStats(ctx.householdId, parsed.maxRecentBangs); return ; } const bangsManifest: ModuleManifest = { id: "bangs", name: "Bangs", entities: [ { type: "bangs.event", label: { singular: "Bang", plural: "Bangs" }, resolveUrl: () => "/", renderActivity: (entry) => { const date = entry.payload?.occurredOn as string | undefined; return date ? `Recorded a bang on ${date}` : "Recorded a bang"; }, }, ], dashboardWidgets: [ { id: "bangs.counter", title: "Bang Counter", description: "Track and celebrate bangs with your household.", category: "Fun", defaultSize: { w: 3, h: 3 }, minSize: { w: 2, h: 2 }, defaultPriority: 60, configSchema: bangWidgetConfigSchema, defaultConfig: { maxRecentBangs: 5 }, render: (props) => , }, ], }; export default bangsManifest;