components([ TextInput::make('key') ->label('کلید') ->helperText('فقط نام کلید را وارد کنید، بدون آکولاد. مثلاً اگر داخل پاورپوینت نوشته‌اید {Main Title}، اینجا فقط Main Title را وارد کنید؛ آکولاد را خود سیستم موقع جایگزینی اضافه می‌کند. برای عکس/چارت به‌جای این، نام شکل (shape name) را در فیلد پایین وارد کنید.') ->required() ->maxLength(255), TextInput::make('label') ->label('برچسب') ->required() ->maxLength(255), Select::make('type') ->label('نوع') ->options([ TemplateKeyType::Text->value => TemplateKeyType::Text->label(), TemplateKeyType::Image->value => TemplateKeyType::Image->label(), TemplateKeyType::Chart->value => TemplateKeyType::Chart->label(), ]) ->required() ->live(), TextInput::make('shape_name') ->label('نام شکل (Shape Name)') ->helperText('نام شکل تعیین‌شده در Selection Pane نرم‌افزار PowerPoint') ->visible(fn (Get $get): bool => $get('type') !== TemplateKeyType::Text->value) ->maxLength(255), TextInput::make('description') ->label('راهنما') ->helperText('توضیحی که برای مصرف‌کننده API نمایش داده می‌شود') ->maxLength(255), Toggle::make('is_required') ->label('اجباری') ->default(true), Toggle::make('is_repeatable') ->label('تکرارشونده (برای ساخت با هوش مصنوعی)') ->helperText('اگر فعال باشد، این کلید در اسلاید تکرارشونده قرار دارد و برای هر اسلاید تولیدشده با هوش مصنوعی مقدار جداگانه دریافت می‌کند.') ->default(false) ->visible(fn (Get $get): bool => $get('type') === TemplateKeyType::Text->value), TextInput::make('sort_order') ->label('ترتیب نمایش') ->numeric() ->integer() ->default(0), ]); } public function table(Table $table): Table { return $table ->recordTitleAttribute('key') ->columns([ TextColumn::make('key') ->label('کلید') ->searchable() ->sortable(), TextColumn::make('label') ->label('برچسب') ->searchable(), TextColumn::make('type') ->label('نوع') ->badge() ->formatStateUsing(fn (TemplateKeyType $state): string => $state->label()), TextColumn::make('shape_name') ->label('نام شکل') ->placeholder('—'), IconColumn::make('is_required') ->label('اجباری') ->boolean(), IconColumn::make('is_repeatable') ->label('تکرارشونده') ->boolean(), TextColumn::make('sort_order') ->label('ترتیب') ->sortable(), ]) ->defaultSort('sort_order') ->headerActions([ CreateAction::make(), ]) ->recordActions([ EditAction::make(), DeleteAction::make(), ]); } }