{{-- Reusable project card (PRD §10.1): name, category, role, short description, timeline, key contribution, outcome, tools, image, "View Case Study". Organisation shown only via OrganisationPresenter (PRD §31). `source` tags project_card_click by section (homepage / listing / related; PRD §29). --}} @props(['project', 'source' => 'listing', 'featured' => false, 'headingLevel' => 3]) @inject('ctaSettings', 'App\Domain\Site\Settings\CtaSettings') @php $thumbnail = $project->getFirstMedia(\App\Domain\Media\MediaCollection::Thumbnail->value); $organisation = \App\Domain\Portfolio\Support\OrganisationPresenter::name($project); $url = route('projects.show', $project->slug); @endphp class(['flex h-full flex-col overflow-hidden', 'shadow-[var(--shadow-card-hover)]' => $featured]) }} data-filter-item data-categories="{{ $project->categories->pluck('slug')->implode(' ') }}" data-tools="{{ $project->tools->pluck('slug')->implode(' ') }}"> @if ($thumbnail) @endif
@if ($featured) {{ __('portfolio.ui.featured') }} @endif @foreach ($project->categories as $category) {{ $category->name }} @endforeach
{{ $project->title }}

{{ collect([$project->role, $organisation, $project->timeline_label])->filter()->implode(' · ') }}

@if ($project->summary)

{{ $project->summary }}

@endif @if ($project->key_contribution || $project->outcome_summary)
@if ($project->key_contribution)
{{ __('portfolio.ui.key_contribution') }}:
{{ $project->key_contribution }}
@endif @if ($project->outcome_summary)
{{ __('portfolio.ui.outcome') }}:
{{ $project->outcome_summary }}
@endif
@endif @if ($project->tools->isNotEmpty())
    @foreach ($project->tools as $tool)
  • {{ $tool->name }}
  • @endforeach
@endif