schema([ Tabs::make('Tabs') ->columns([ 'default' => 2, 'sm' => 3, 'md' => 3, 'lg' => 4, ]) ->persistTabInQueryString() ->columnSpanFull() ->tabs([ Tabs\Tab::make('Basic Settings') ->icon('tabler-server') ->schema((new CreateNode())->form($form)->getComponents()), // Tabs\Tab::make('Advanced Settings') // ->icon('tabler-server-cog') // ->schema([ // Forms\Components\Placeholder::make('Coming soon!'), // ]), Tabs\Tab::make('Configuration') ->icon('tabler-code') ->schema([ Forms\Components\Placeholder::make('instructions') ->columnSpanFull() ->content(new HtmlString(' Save this file to your daemon\'s root directory, named config.yml ')), Forms\Components\Textarea::make('config') ->label('/etc/pelican/config.yml') ->disabled() ->rows(19) ->hintAction(CopyAction::make()) ->columnSpanFull(), ]), ]), ]); } protected function mutateFormDataBeforeFill(array $data): array { $node = Node::findOrFail($data['id']); $data['config'] = $node->getYamlConfiguration(); return $data; } protected function getSteps(): array { return [ ]; } protected function getHeaderActions(): array { return [ Actions\DeleteAction::make() ->disabled(fn (Node $node) => $node->servers()->count() > 0) ->label(fn (Node $node) => $node->servers()->count() > 0 ? 'Node Has Servers' : 'Delete'), ]; } }