lacodix/laravel-metric-cards
Work-in-progress Laravel package for metric “cards” (dashboard-style metrics). Not ready for production use yet; APIs and features may change.
## Getting Started
Install via Composer:
```bash
composer require lacodix/laravel-metric-cards
Publish the package config (if needed):
php artisan vendor:publish --provider="Lacodix\MetricCards\MetricCardsServiceProvider"
First Use Case: Display a basic metric card in a Blade template:
@metricCard('users', 'Total Users', 1500)
Key files to inspect:
config/metric-cards.php (configuration)app/Providers/MetricCardsServiceProvider.php (service binding)resources/views/vendor/metric-cards/ (default templates)config/metric-cards.php or via service provider:
MetricCards::register('users', function () {
return User::count();
});
@metricCard directive with optional parameters:
@metricCard('users', 'Active Users', 1500, ['icon' => 'users', 'color' => 'green'])
v0.10.0 feature to fetch multiple metrics at once:
$metrics = MetricCards::query(['users', 'orders', 'revenue']);
allow_initial_invisible config to preload metrics without rendering them immediately:
'allow_initial_invisible' => true,
Then render later via JavaScript or conditional Blade logic.MetricCards::register('users', function () {
return Cache::remember('metric-users', now()->addHours(1), fn() => User::count());
});
resources/views/vendor/metric-cards/.Route::get('/metrics', [MetricCardsController::class, 'index']);
register() have access to required models/services (e.g., inject User via constructor or use app binding).php artisan view:clear).dd(MetricCards::getRegisteredMetrics());
@metricCard is used within a Blade template context (not in plain PHP files).class CustomMetric extends MetricCards\Metric
{
public function render()
{
return view('custom.metric', ['value' => $this->value]);
}
}
Register via:
MetricCards::extend('custom', CustomMetric::class);
metric.calculated events to modify values dynamically:
event(new MetricCalculated('users', 1500));
allow_initial_invisible flag (v0.10.0) requires explicit rendering via:
@if(MetricCards::has('users'))
@metricCard('users')
@endif
How can I help you explore Laravel packages today?