'$refresh', ]; public function getMaxContentWidth(): MaxWidth | string | null { return MaxWidth::SixExtraLarge; } protected function getHeaderActions(): array { return [ Actions\ActionGroup::make([ Actions\EditAction::make(), Actions\DeleteAction::make(), Invoice::getApproveDraftAction(), Invoice::getMarkAsSentAction(), Invoice::getReplicateAction(), ]) ->label('Actions') ->button() ->outlined() ->dropdownPlacement('bottom-end') ->icon('heroicon-c-chevron-down') ->iconSize(IconSize::Small) ->iconPosition(IconPosition::After), ]; } public function infolist(Infolist $infolist): Infolist { return $infolist ->schema([ Section::make('Invoice Details') ->columns(4) ->schema([ Grid::make(1) ->schema([ TextEntry::make('invoice_number') ->label('Invoice #'), TextEntry::make('status') ->badge(), TextEntry::make('client.name') ->label('Client') ->color('primary') ->weight(FontWeight::SemiBold) ->url(static fn (Invoice $record) => ClientResource::getUrl('edit', ['record' => $record->client_id])), TextEntry::make('amount_due') ->label('Amount Due') ->currency(static fn (Invoice $record) => $record->currency_code), TextEntry::make('due_date') ->label('Due') ->asRelativeDay(), TextEntry::make('approved_at') ->label('Approved At') ->placeholder('Not Approved') ->date(), TextEntry::make('last_sent') ->label('Last Sent') ->placeholder('Never') ->date(), TextEntry::make('paid_at') ->label('Paid At') ->placeholder('Not Paid') ->date(), ])->columnSpan(1), Grid::make() ->schema([ ViewEntry::make('invoice-view') ->label('View Invoice') ->columnSpan(3) ->view('filament.company.resources.sales.invoices.components.invoice-view') ->viewData([ 'invoice' => $this->record, ]), ]) ->columnSpan(3), ]), ]); } }