'$refresh', ]; public function infolist(Infolist $infolist): Infolist { return $infolist ->schema([ Section::make('Invoice Details') ->columns(3) ->schema([ TextEntry::make('invoice_number') ->label('Invoice #'), TextEntry::make('status') ->badge(), TextEntry::make('client.name') ->label('Client') ->color('primary') ->weight(FontWeight::SemiBold) ->url(fn (Invoice $record) => ClientResource::getUrl('edit', ['record' => $record->client_id])), TextEntry::make('amount_due') ->label('Amount Due') ->money(), TextEntry::make('due_date') ->label('Due Date') ->formatStateUsing(function (TextEntry $entry, mixed $state) { if (blank($state)) { return null; } $date = Carbon::parse($state) ->setTimezone($timezone ?? $entry->getTimezone()); if ($date->isToday()) { return 'Today'; } return $date->diffForHumans([ 'options' => CarbonInterface::ONE_DAY_WORDS, ]); }), ]), ]); } public function approveDraft(): void { $this->record->update([ 'status' => InvoiceStatus::Unsent, ]); } public function markAsSent(): void { $this->record->update([ 'status' => InvoiceStatus::Sent, ]); } }