Best way to format money or date with default string value

Hello,
I am wondering if exists an easy way to both use
default()
and
money()
or
format()
for dates when the default value is a string.
If the value is null and so it is replaced with a string I get Filament\Support\format_money(): Argument #1 ($money) must be of type int|float, string given.
The solution that I have found it uses
formatStateUsing
, for example:
use function Filament\Support\format_money;

// ...

Components\TextEntry::make('initial_cost')
    ->money('eur')
    ->label(__('Initial Cost')),

Components\TextEntry::make('final_cost')
    ->default(__('N/A'))
    ->formatStateUsing(fn (int|float|string $state): string => $state == __('N/A')
        ? $state
        : format_money($state, 'eur'))
//      : $state->money('eur')) this also gives the same error
    ->label(__('Final Cost')),

Is there a better way to achieve this with using
money()
directly without
formatStateUsing
?
Was this page helpful?