Analytics - v1.2.1
React Components
Since 1.1.0
Pre-built React dashboard components for displaying analytics data via Inertia.js. All components are written in TypeScript and designed to work with the InertiaDashboardController page props.
Installation
php artisan analytics:install-frontend --stack=react
npm install && npm run dev
Components are published to resources/js/vendor/artisanpack-analytics/react/.
Importing Components
// Individual imports
import { StatsCards, VisitorsChart, TopPages } from '@/vendor/artisanpack-analytics/react';
// Or import specific components
import { AnalyticsDashboard } from '@/vendor/artisanpack-analytics/react';
Dashboard Pages
AnalyticsDashboard
The main dashboard page component. Receives data as Inertia page props from the InertiaDashboardController::index() method.
import { AnalyticsDashboard } from '@/vendor/artisanpack-analytics/react';
export default function Dashboard() {
return <AnalyticsDashboard {...usePage().props} />;
}
Props:
| Prop | Type | Description |
|---|---|---|
stats |
StatsCardsProps['stats'] |
Key metrics object |
chartData |
ChartDataPoint[] |
Time series data for the visitors chart |
topPages |
TopPageItem[] |
Most viewed pages |
trafficSources |
TrafficSourceItem[] |
Traffic source breakdown |
dateRange |
DateRange |
Current date range |
dateRangePreset |
string |
Active preset (e.g., '30d') |
dateRangePresets |
Record<string, string> |
Available presets |
filters |
Record<string, unknown> |
Active filters |
PageAnalytics
Per-page analytics detail view.
import { PageAnalytics } from '@/vendor/artisanpack-analytics/react';
Props:
| Prop | Type | Description |
|---|---|---|
path |
string |
The page path being analyzed |
analytics |
PageAnalyticsData |
Pageviews, visitors, bounce rate |
viewsOverTime |
PageViewOverTimeItem[] |
Time series for this page |
showChart |
boolean |
Whether to show the chart |
compact |
boolean |
Compact display mode |
MultiTenantDashboard
Dashboard view for multi-site management.
import { MultiTenantDashboard } from '@/vendor/artisanpack-analytics/react';
Props:
| Prop | Type | Description |
|---|---|---|
siteId |
number |
Current site ID |
dateRangePreset |
string |
Active date range preset |
multiTenantEnabled |
boolean |
Whether multi-tenancy is enabled |
currentSite |
Site |
Current site model |
showSiteSelector |
boolean |
Whether to show the site selector |
Widget Components
StatsCards
Displays key analytics metrics in a card grid.
import { StatsCards } from '@/vendor/artisanpack-analytics/react';
<StatsCards
stats={{
pageviews: 12500,
visitors: 3200,
sessions: 4100,
bounce_rate: 45.2,
avg_session_duration: 185,
pages_per_session: 3.2,
realtime_visitors: 42,
comparison: null,
}}
className="my-4"
/>
Props:
| Prop | Type | Description |
|---|---|---|
stats.pageviews |
number |
Total page views |
stats.visitors |
number |
Unique visitors |
stats.sessions |
number |
Total sessions |
stats.bounce_rate |
number |
Bounce rate percentage |
stats.avg_session_duration |
number |
Average duration in seconds |
stats.pages_per_session |
number |
Average pages per session (optional) |
stats.realtime_visitors |
number |
Current live visitors (optional) |
stats.comparison |
StatsComparison | null |
Period comparison data |
className |
string |
Additional CSS classes |
VisitorsChart
Line chart displaying visitors and pageviews over time.
import { VisitorsChart } from '@/vendor/artisanpack-analytics/react';
<VisitorsChart data={chartData} />
TopPages
Table of most viewed pages with view counts.
import { TopPages } from '@/vendor/artisanpack-analytics/react';
<TopPages pages={topPages} />
TrafficSources
Traffic source breakdown showing source, medium, sessions, and visitors.
import { TrafficSources } from '@/vendor/artisanpack-analytics/react';
<TrafficSources sources={trafficSources} />
RealtimeVisitors
Live visitor count with automatic polling.
import { RealtimeVisitors } from '@/vendor/artisanpack-analytics/react';
<RealtimeVisitors />
SiteSelector
Site picker dropdown for multi-tenant setups.
import { SiteSelector } from '@/vendor/artisanpack-analytics/react';
<SiteSelector />
Customization
All components are published to your application's resources/js/ directory, so you can modify them directly. The components use standard React patterns and can be styled with Tailwind CSS classes.
Overriding a Component
Since components are published as source files, you can:
- Edit the published component directly
- Create a wrapper component that adds custom behavior
- Build your own components using the
useAnalyticsApihook for data fetching
Using the Hook Directly
Build custom dashboards using the useAnalyticsApi hook:
import { useAnalyticsApi } from '@/vendor/artisanpack-analytics/react';
function CustomWidget() {
const { data, loading, error, refresh } = useAnalyticsApi({
endpoint: '/api/analytics/stats',
params: { period: '30d' },
pollInterval: 30000,
});
if (loading) return <div>Loading...</div>;
if (error) return <div>Error: {error}</div>;
return <div>{data?.pageviews} pageviews</div>;
}
See Hooks & Composables for the full API reference.