@extends('layouts.portal.app') @section('title', 'Data Sources — InsightsReady') @push('styles') @endpush @section('content')
{{-- Toast (optional) --}} @if(session('toast'))
{{ session('toast') }}
@endif

Data Sources

+ Add Source

Total connections

18
+2 this week

Healthy

15
no issues detected

Needs attention

3
2 failed syncs today

Rows (24h)

12.7M
processed
@php // Dummy data if none provided $sources = $sources ?? collect([ (object)['display_name'=>'Shopify','provider'=>'shopify','status'=>'connected','last_sync_at'=>now()->subMinutes(18),'avg_ms'=>320,'pct'=>78,'targets'=>['Power BI','Snowflake']], (object)['display_name'=>'Google Analytics 4','provider'=>'ga4','status'=>'connected','last_sync_at'=>now()->subHours(2),'avg_ms'=>410,'pct'=>60,'targets'=>['Power BI']], (object)['display_name'=>'Meta Ads','provider'=>'meta_ads','status'=>'warning','last_sync_at'=>now()->subHours(6),'avg_ms'=>680,'pct'=>32,'targets'=>['BigQuery']], (object)['display_name'=>'S3 (Data Lake)','provider'=>'s3','status'=>'error','last_sync_at'=>null,'avg_ms'=>0,'pct'=>0,'targets'=>['—']], (object)['display_name'=>'PostgreSQL – Prod','provider'=>'postgres','status'=>'connected','last_sync_at'=>now()->subMinutes(5),'avg_ms'=>210,'pct'=>91,'targets'=>['Warehouse']], (object)['display_name'=>'Salesforce','provider'=>'salesforce','status'=>'idle','last_sync_at'=>now()->subDays(1),'avg_ms'=>540,'pct'=>15,'targets'=>['Power BI','Tableau']], ]); $initials = fn($name)=>collect(explode(' ', preg_replace('/[^A-Za-z0-9 ]/','',$name)))->map(fn($p)=>mb_substr($p,0,1))->take(2)->implode(''); $statusChip = function($s){ return match($s){ 'connected' => 'status ok', 'warning' => 'status warn', 'error' => 'status err', 'idle' => 'status idle', default => 'status' }; }; $statusLabel = fn($s)=>match($s){ 'connected' => 'Connected', 'warning' => 'Warning', 'error' => 'Error', 'idle' => 'Idle', default => ucfirst($s ?? '—') }; @endphp @if($sources->isEmpty())
No sources yet. Click + Add Source to connect your first data source.
@else
@foreach($sources as $s)
{{ $s->display_name }}
{{ \Illuminate\Support\Str::headline($s->provider) }} • Last sync: {{ $s->last_sync_at ? $s->last_sync_at->diffForHumans() : 'never' }}
{{ $statusLabel($s->status) }}
@foreach(($s->targets ?? []) as $t) → {{ $t }} @endforeach
@endforeach
@endif
@endsection @push('scripts') @endpush