@props(['contact' => null, 'groups' => collect(), 'tags' => collect()]) @php $selectedTagIds = $contact?->tags->pluck('id')->all() ?? old('tags', []); @endphp
{{-- Primary fields --}}
{{-- Basic info --}} Basic information {{-- Photo upload --}}
Profile photo (DP)

JPG, PNG up to 2 MB

Phone / Number * @error('phone')

{{ $message }}

@enderror
Name * @error('name')

{{ $message }}

@enderror
Email @error('email')

{{ $message }}

@enderror
City
Address
{{-- Description (HTML editor) --}} Description Rich-text description for this contact. {{-- Toolbar --}}
{{-- Editor --}}
{!! old('description_html', $contact?->description_html) !!}
{{-- Notes (plain) --}} Quick notes {{ old('notes', $contact ? ($contact->getAttributes()['notes'] ?? '') : '') }} {{-- Custom fields --}} @php $initialCustom = old('custom_fields_keys') ? collect(old('custom_fields_keys'))->map(fn ($k, $i) => ['key' => $k, 'value' => old('custom_fields_values')[$i] ?? ''])->all() : collect($contact?->custom_fields ?? [])->map(fn ($v, $k) => ['key' => (string) $k, 'value' => is_scalar($v) ? (string) $v : json_encode($v)])->values()->all(); @endphp
Custom fields Extra data that doesn't fit standard fields.
No custom fields.
{{-- Social --}}
Social media Optional links and handles.
X / Twitter
LinkedIn
Facebook
{{-- Side metadata --}}
{{-- Star rating --}} Rating Rate this contact out of 5.
{{-- Organize --}} Organize
Group
{{-- Tags with AI suggestion --}} Tags @if ($tags->isNotEmpty()) @endif @if ($tags->isEmpty())

No tags yet. Create some first.

@else
@foreach ($tags as $tag) @endforeach
@endif
Cancel {{ $contact ? 'Save changes' : 'Create contact' }}
@push('scripts') @endpush