[PULSE-4] Goals & Events dashboard block and settings UI #5

Merged
uz1mani merged 8 commits from staging into main 2026-02-04 15:04:10 +00:00
7 changed files with 383 additions and 2 deletions
Showing only changes of commit c780d3a119 - Show all commits

View File

@@ -1001,6 +1001,7 @@ export default function SiteSettingsPage() {
className="w-full px-4 py-2 border border-neutral-200 dark:border-neutral-800 rounded-xl bg-white dark:bg-neutral-900 text-neutral-900 dark:text-white" className="w-full px-4 py-2 border border-neutral-200 dark:border-neutral-800 rounded-xl bg-white dark:bg-neutral-900 text-neutral-900 dark:text-white"
required required
/> />
<p className="mt-1 text-xs text-neutral-500 dark:text-neutral-400">Spaces become underscores; max 64 characters after formatting.</p>
</div> </div>
<div className="flex justify-end gap-2 pt-2"> <div className="flex justify-end gap-2 pt-2">
<Button type="button" variant="secondary" onClick={() => setGoalModalOpen(false)}> <Button type="button" variant="secondary" onClick={() => setGoalModalOpen(false)}>

View File

@@ -33,7 +33,7 @@ export default function GoalStats({ goalCounts, siteId, dateRange }: GoalStatsPr
className="flex items-center justify-between py-2 px-3 rounded-lg bg-neutral-50 dark:bg-neutral-800/50 hover:bg-neutral-100 dark:hover:bg-neutral-800 transition-colors" className="flex items-center justify-between py-2 px-3 rounded-lg bg-neutral-50 dark:bg-neutral-800/50 hover:bg-neutral-100 dark:hover:bg-neutral-800 transition-colors"
> >
<span className="text-sm font-medium text-neutral-900 dark:text-white truncate"> <span className="text-sm font-medium text-neutral-900 dark:text-white truncate">
{row.event_name.replace(/_/g, ' ')} {row.display_name ?? row.event_name.replace(/_/g, ' ')}
</span> </span>
<span className="text-sm font-semibold text-brand-orange tabular-nums"> <span className="text-sm font-semibold text-brand-orange tabular-nums">
{formatNumber(row.count)} {formatNumber(row.count)}

View File

@@ -36,6 +36,7 @@ export interface PerformanceByPageStat {
export interface GoalCountStat { export interface GoalCountStat {
event_name: string event_name: string
count: number count: number
display_name?: string | null
} }
export interface TopReferrer { export interface TopReferrer {