<div> @if (Gate::check('addTeamMember', $team)) <x-section-border /> <!-- Add Team Member --> <div class="mt-10 sm:mt-0"> <x-form-section submit="addTeamMember"> <x-slot name="title"> {{ __('Add Team Member') }} </x-slot> <x-slot name="description"> {{ __('Add a new team member to your team, allowing them to collaborate with you.') }} </x-slot> <x-slot name="form"> <div class="col-span-6"> <div class="max-w-xl text-sm text-gray-600"> {{ __('Please provide the email address of the person you would like to add to this team.') }} </div> </div> <!-- Member Email --> <div class="col-span-6 sm:col-span-4"> <x-label for="email" value="{{ __('Email') }}" /> <x-input id="email" type="email" class="mt-1 block w-full" wire:model="addTeamMemberForm.email" /> <x-input-error for="email" class="mt-2" /> </div> <!-- Role --> @if (count($this->roles) > 0) <div class="col-span-6 lg:col-span-4"> <x-label for="role" value="{{ __('Role') }}" /> <x-input-error for="role" class="mt-2" /> <div class="relative z-0 mt-1 border border-gray-200 rounded-lg cursor-pointer"> @foreach ($this->roles as $index => $role) <button type="button" class="relative px-4 py-3 inline-flex w-full rounded-lg focus:z-10 focus:outline-none focus:border-indigo-500 focus:ring-2 focus:ring-indigo-500 {{ $index > 0 ? 'border-t border-gray-200 focus:border-none rounded-t-none' : '' }} {{ ! $loop->last ? 'rounded-b-none' : '' }}" wire:click="$set('addTeamMemberForm.role', '{{ $role->key }}')"> <div class="{{ isset($addTeamMemberForm['role']) && $addTeamMemberForm['role'] !== $role->key ? 'opacity-50' : '' }}"> <!-- Role Name --> <div class="flex items-center"> <div class="text-sm text-gray-600 {{ $addTeamMemberForm['role'] == $role->key ? 'font-semibold' : '' }}"> {{ $role->name }} </div> @if ($addTeamMemberForm['role'] == $role->key) <svg class="ms-2 h-5 w-5 text-green-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /> </svg> @endif </div> <!-- Role Description --> <div class="mt-2 text-xs text-gray-600 text-start"> {{ $role->description }} </div> </div> </button> @endforeach </div> </div> @endif </x-slot> <x-slot name="actions"> <x-action-message class="me-3" on="saved"> {{ __('Added.') }} </x-action-message> <x-button> {{ __('Add') }} </x-button> </x-slot> </x-form-section> </div> @endif @if ($team->teamInvitations->isNotEmpty() && Gate::check('addTeamMember', $team)) <x-section-border /> <!-- Team Member Invitations --> <div class="mt-10 sm:mt-0"> <x-action-section> <x-slot name="title"> {{ __('Pending Team Invitations') }} </x-slot> <x-slot name="description"> {{ __('These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.') }} </x-slot> <x-slot name="content"> <div class="space-y-6"> @foreach ($team->teamInvitations as $invitation) <div class="flex items-center justify-between"> <div class="text-gray-600">{{ $invitation->email }}</div> <div class="flex items-center"> @if (Gate::check('removeTeamMember', $team)) <!-- Cancel Team Invitation --> <button class="cursor-pointer ms-6 text-sm text-red-500 focus:outline-none" wire:click="cancelTeamInvitation({{ $invitation->id }})"> {{ __('Cancel') }} </button> @endif </div> </div> @endforeach </div> </x-slot> </x-action-section> </div> @endif @if ($team->users->isNotEmpty()) <x-section-border /> <!-- Manage Team Members --> <div class="mt-10 sm:mt-0"> <x-action-section> <x-slot name="title"> {{ __('Team Members') }} </x-slot> <x-slot name="description"> {{ __('All of the people that are part of this team.') }} </x-slot> <!-- Team Member List --> <x-slot name="content"> <div class="space-y-6"> @foreach ($team->users->sortBy('name') as $user) <div class="flex items-center justify-between"> <div class="flex items-center"> <img class="w-8 h-8 rounded-full object-cover" src="{{ $user->profile_photo_url }}" alt="{{ $user->name }}"> <div class="ms-4">{{ $user->name }}</div> </div> <div class="flex items-center"> <!-- Manage Team Member Role --> @if (Gate::check('updateTeamMember', $team) && Laravel\Jetstream\Jetstream::hasRoles()) <button class="ms-2 text-sm text-gray-400 underline" wire:click="manageRole('{{ $user->id }}')"> {{ Laravel\Jetstream\Jetstream::findRole($user->membership->role)->name }} </button> @elseif (Laravel\Jetstream\Jetstream::hasRoles()) <div class="ms-2 text-sm text-gray-400"> {{ Laravel\Jetstream\Jetstream::findRole($user->membership->role)->name }} </div> @endif <!-- Leave Team --> @if ($this->user->id === $user->id) <button class="cursor-pointer ms-6 text-sm text-red-500" wire:click="$toggle('confirmingLeavingTeam')"> {{ __('Leave') }} </button> <!-- Remove Team Member --> @elseif (Gate::check('removeTeamMember', $team)) <button class="cursor-pointer ms-6 text-sm text-red-500" wire:click="confirmTeamMemberRemoval('{{ $user->id }}')"> {{ __('Remove') }} </button> @endif </div> </div> @endforeach </div> </x-slot> </x-action-section> </div> @endif <!-- Role Management Modal --> <x-dialog-modal wire:model.live="currentlyManagingRole"> <x-slot name="title"> {{ __('Manage Role') }} </x-slot> <x-slot name="content"> <div class="relative z-0 mt-1 border border-gray-200 rounded-lg cursor-pointer"> @foreach ($this->roles as $index => $role) <button type="button" class="relative px-4 py-3 inline-flex w-full rounded-lg focus:z-10 focus:outline-none focus:border-indigo-500 focus:ring-2 focus:ring-indigo-500 {{ $index > 0 ? 'border-t border-gray-200 focus:border-none rounded-t-none' : '' }} {{ ! $loop->last ? 'rounded-b-none' : '' }}" wire:click="$set('currentRole', '{{ $role->key }}')"> <div class="{{ $currentRole !== $role->key ? 'opacity-50' : '' }}"> <!-- Role Name --> <div class="flex items-center"> <div class="text-sm text-gray-600 {{ $currentRole == $role->key ? 'font-semibold' : '' }}"> {{ $role->name }} </div> @if ($currentRole == $role->key) <svg class="ms-2 h-5 w-5 text-green-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /> </svg> @endif </div> <!-- Role Description --> <div class="mt-2 text-xs text-gray-600"> {{ $role->description }} </div> </div> </button> @endforeach </div> </x-slot> <x-slot name="footer"> <x-secondary-button wire:click="stopManagingRole" wire:loading.attr="disabled"> {{ __('Cancel') }} </x-secondary-button> <x-button class="ms-3" wire:click="updateRole" wire:loading.attr="disabled"> {{ __('Save') }} </x-button> </x-slot> </x-dialog-modal> <!-- Leave Team Confirmation Modal --> <x-confirmation-modal wire:model.live="confirmingLeavingTeam"> <x-slot name="title"> {{ __('Leave Team') }} </x-slot> <x-slot name="content"> {{ __('Are you sure you would like to leave this team?') }} </x-slot> <x-slot name="footer"> <x-secondary-button wire:click="$toggle('confirmingLeavingTeam')" wire:loading.attr="disabled"> {{ __('Cancel') }} </x-secondary-button> <x-danger-button class="ms-3" wire:click="leaveTeam" wire:loading.attr="disabled"> {{ __('Leave') }} </x-danger-button> </x-slot> </x-confirmation-modal> <!-- Remove Team Member Confirmation Modal --> <x-confirmation-modal wire:model.live="confirmingTeamMemberRemoval"> <x-slot name="title"> {{ __('Remove Team Member') }} </x-slot> <x-slot name="content"> {{ __('Are you sure you would like to remove this person from the team?') }} </x-slot> <x-slot name="footer"> <x-secondary-button wire:click="$toggle('confirmingTeamMemberRemoval')" wire:loading.attr="disabled"> {{ __('Cancel') }} </x-secondary-button> <x-danger-button class="ms-3" wire:click="removeTeamMember" wire:loading.attr="disabled"> {{ __('Remove') }} </x-danger-button> </x-slot> </x-confirmation-modal> </div>