components([ Tabs::make('Tabs') ->tabs([ Tab::make('Kontaktperson') ->icon('lucide-contact') ->inlineLabel() ->schema([ TextInput::make('company') ->label('Firma') ->belowContent([ 'Kann als Platzhalter "###AUFTRAGGEBER###" im Gutachten verwendet werden.', ]) ->required(), TextInput::make('title') ->label('Titel'), Select::make('gender') ->label('Geschlecht') ->options([ 'Herr' => 'Herr', 'Frau' => 'Frau', 'Non-binary' => 'Non-binary', ]), TextInput::make('name') ->label('Name'), TextInput::make('email') ->label('E-Mail') ->prefixIcon(Heroicon::Envelope), PhoneInput::make('phone') ->label('Telefon') ->defaultCountry('AT'), ]), Tab::make('Name am Deckblatt') ->icon('lucide-contact') ->schema([ Checkbox::make('text_anzeigen') ->label('Diesen Text am Deckblatt des Gutachtens verwenden'), RichEditor::make('referenz_formatting') ->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto; white-wrap: pre-wrap;']) ->json() ->toolbarButtons([ ['bold', 'italic', 'underline', 'clearFormatting'], ]) ->label('Firmenname mit Adresse') ->required(), ]), Tab::make('Logo') ->icon('phosphor-image') ->schema([ Checkbox::make('logo_anzeigen') ->label('Das Logo im Gutachten verwenden'), FileUpload::make('logo') ->image() ->disk('public') ->maxSize(3072) // 3MB limit ->acceptedFileTypes(['image/jpeg', 'image/png', 'image/webp']) ->directory('auftraggeber-logo') ->visibility('public') ->label('Logo') ->columnSpanFull(), ])->columns(2), ])->columnSpanFull(), ]); } }