Add Events-style heroes to Storefronts and Products index pages.
Deploy Ladill Merchant / deploy (push) Successful in 42s

Surface wallet balance and key counts in gradient hero sections so Merchant list pages match the Events pattern.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-04 16:55:16 +00:00
co-authored by Cursor
parent 742592ab0d
commit 30ec8943dc
4 changed files with 204 additions and 95 deletions
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Merchant;
use App\Http\Controllers\Controller;
use App\Services\Crm\CrmClient;
use App\Services\Qr\QrCodeManagerService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
@@ -14,6 +15,8 @@ use Illuminate\View\View;
*/
class ProductController extends Controller
{
public function __construct(private QrCodeManagerService $manager) {}
private function crm(): CrmClient
{
return CrmClient::for((string) ladill_account()->public_id);
@@ -29,9 +32,15 @@ class ProductController extends Controller
'search' => $search !== '' ? $search : null,
]);
$products = (array) ($response['data'] ?? []);
$wallet = $this->manager->walletFor(ladill_account());
return view('merchant.products.index', [
'products' => (array) ($response['data'] ?? []),
'products' => $products,
'search' => $search,
'wallet' => $wallet,
'productCount' => count($products),
'activeCount' => collect($products)->filter(fn ($p) => ($p['active'] ?? true))->count(),
]);
}
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Merchant;
use App\Http\Controllers\Controller;
use App\Models\QrCode;
use App\Models\QrWallet;
use App\Services\Crm\CrmClient;
use App\Services\Qr\QrCodeManagerService;
use App\Services\Qr\QrImageGeneratorService;
@@ -39,9 +40,15 @@ class StorefrontController extends Controller
return [$qr->id => $this->imageGenerator->previewDataUri($qr)];
});
$wallet = $this->manager->walletFor($account);
return view('merchant.storefronts.index', [
'qrCodes' => $qrCodes,
'previewDataUris' => $previewDataUris,
'wallet' => $wallet,
'activeCount' => $qrCodes->where('is_active', true)->count(),
'pricePerQr' => QrWallet::pricePerQr(),
'topupUrl' => 'https://'.config('app.account_domain').'/wallet',
]);
}