components([ Select::make('category_id') ->label('دسته‌بندی') ->options(fn (): array => Category::query()->pluck('name', 'id')->all()) ->searchable() ->required(), TextInput::make('title') ->label('عنوان') ->required() ->maxLength(255), TextInput::make('slug') ->label('شناسه') ->required() ->unique(ignoreRecord: true) ->maxLength(255), Textarea::make('description') ->label('توضیحات') ->maxLength(1000) ->rows(3), FileUpload::make('file_path') ->label('فایل پاورپوینت') ->disk('local') ->directory('templates/sources') ->acceptedFileTypes(['application/vnd.openxmlformats-officedocument.presentationml.presentation']) ->required() ->visibility('private'), FileUpload::make('thumbnail_path') ->label('تصویر بندانگشتی') ->disk('public') ->directory('templates/thumbnails') ->image(), Toggle::make('is_active') ->label('فعال') ->default(true), Toggle::make('is_ai_enabled') ->label('امکان ساخت با هوش مصنوعی از متن') ->helperText('در صورت فعال بودن، این قالب در فرم «ساخت پاورپوینت از متن» به کاربران پیشنهاد داده می‌شود.') ->default(false) ->live(), TextInput::make('ai_repeatable_slide_number') ->label('شماره اسلاید تکرارشونده') ->helperText('شماره اسلایدی از فایل پاورپوینت که برای هر بخش محتوای تولیدشده با هوش مصنوعی شبیه‌سازی می‌شود (مثلاً 2).') ->numeric() ->integer() ->minValue(1) ->visible(fn (Get $get): bool => (bool) $get('is_ai_enabled')) ->required(fn (Get $get): bool => (bool) $get('is_ai_enabled')), ]); } }