+ // 2. New Addition Request
+ if (empty($old)) {
+ $rows = collect($new)
+ ->map(function ($value, $key) use ($renderValue) {
+ return sprintf(
+ "
",
- e($key),
- $renderValue($value)
- );
- })
- ->implode('');
+ e($key),
+ $renderValue($value)
+ );
+ })
+ ->implode('');
- return "
+ return "
{$rows}
";
+ }
+
+ // 3. Standard Comparison (Update)
+ return collect($new)
+ ->map(function ($newValue, $key) use ($old, $renderValue) {
+ $oldValue = $old[$key] ?? null;
+
+ if ($oldValue === $newValue) {
+ return null;
}
- // 3. Standard Comparison (Update)
- return collect($new)
- ->map(function ($newValue, $key) use ($old, $renderValue) {
- $oldValue = $old[$key] ?? null;
-
- if ($oldValue === $newValue) {
- return null;
- }
-
- return sprintf(
- "
+ return sprintf(
+ "
%s
@@ -176,16 +173,15 @@ public static function infolist(Schema $schema): Schema
",
- e($key),
- $renderValue($oldValue),
- $renderValue($newValue)
- );
- })
- ->filter()
- ->implode('');
+ e($key),
+ $renderValue($oldValue),
+ $renderValue($newValue)
+ );
})
- ->columnSpanFull(),
- ]),
+ ->filter()
+ ->implode('');
+ })
+ ->columnSpanFull(),
])
->columns(1);
}
diff --git a/app/Filament/Resources/Manage/Journalists/JournalistResource.php b/app/Filament/Resources/Manage/Journalists/JournalistResource.php
index 3f28989..00cc2c2 100644
--- a/app/Filament/Resources/Manage/Journalists/JournalistResource.php
+++ b/app/Filament/Resources/Manage/Journalists/JournalistResource.php
@@ -20,11 +20,10 @@
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\ForceDeleteBulkAction;
use Filament\Actions\RestoreBulkAction;
+use Filament\Forms\Components\Group;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Resources\Resource;
-use Filament\Schemas\Components\Group;
-use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn;
@@ -78,7 +77,7 @@ public static function form(Schema $schema): Schema
return $schema
->components([
TextInput::make('name')
- ->label('Nama')
+ ->label('Nama Lengkap')
->placeholder('John Doe')
->autocomplete(false)
->autofocus()
@@ -91,7 +90,8 @@ public static function form(Schema $schema): Schema
->autocomplete(false)
->required()
->maxLength(254)
- ->email(),
+ ->email()
+ ->prefixIcon('heroicon-o-envelope'),
TextInput::make('phone_number')
->label('Nomor Telepon')
@@ -99,41 +99,39 @@ public static function form(Schema $schema): Schema
->autocomplete(false)
->required()
->maxLength(20)
- ->tel(),
+ ->tel()
+ ->prefixIcon('heroicon-o-phone'),
Group::make()
->schema(
collect($documents)
- ->map(function (array $doc): Section {
- return Section::make($doc['title'])
- ->schema([
- TextInput::make($doc['text_name'])
- ->hiddenLabel()
- ->placeholder($doc['placeholder'])
- ->autocomplete(false)
- ->required()
- ->maxLength($doc['max']),
+ ->map(function (array $doc): array {
+ return [
+ TextInput::make($doc['text_name'])
+ ->label('Nomor Identitas ('.$doc['title'].')')
+ ->placeholder($doc['placeholder'])
+ ->autocomplete(false)
+ ->required()
+ ->maxLength($doc['max']),
- AdvancedFileUpload::make($doc['file_name'])
- ->hiddenLabel()
- ->disk(config('filesystems.default'))
- ->acceptedFileTypes($doc['accept'])
- ->directory(fn (): string => 'journalists/'.$doc['folder'].now()->toDateString())
- ->maxSize($doc['max_size'])
- ->required(),
- ]);
+ AdvancedFileUpload::make($doc['file_name'])
+ ->label('File Pendukung ('.$doc['title'].') (PDF)')
+ ->disk(config('filesystems.default'))
+ ->acceptedFileTypes($doc['accept'])
+ ->directory(fn (): string => 'journalists/'.$doc['folder'].now()->toDateString())
+ ->maxSize($doc['max_size'])
+ ->required(),
+ ];
})
+ ->flatten()
->toArray()
),
- Section::make('Alasan Perubahan')
- ->schema([
- Textarea::make('change_reason')
- ->label('Alasan')
- ->placeholder('Jelaskan alasan perubahan data ini...')
- ->rows(3)
- ->required(),
- ])
+ Textarea::make('change_reason')
+ ->label('Alasan Perubahan')
+ ->placeholder('Jelaskan alasan perubahan data ini...')
+ ->rows(3)
+ ->required()
->visible(fn () => auth()->user()->company?->verificationRequest?->status === VerificationStatus::APPROVED && auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)),
])
->columns(1);
diff --git a/app/Filament/Resources/Master/Categories/CategoryResource.php b/app/Filament/Resources/Master/Categories/CategoryResource.php
index 978ce4d..778256c 100644
--- a/app/Filament/Resources/Master/Categories/CategoryResource.php
+++ b/app/Filament/Resources/Master/Categories/CategoryResource.php
@@ -51,7 +51,7 @@ public static function form(Schema $schema): Schema
return $schema
->components([
TextInput::make('name')
- ->label('Nama')
+ ->label('Nama Kategori')
->placeholder('Ekonomi')
->autocomplete(false)
->autofocus()
diff --git a/app/Filament/Resources/Master/Classifications/ClassificationResource.php b/app/Filament/Resources/Master/Classifications/ClassificationResource.php
index ca5e0b7..1375960 100644
--- a/app/Filament/Resources/Master/Classifications/ClassificationResource.php
+++ b/app/Filament/Resources/Master/Classifications/ClassificationResource.php
@@ -51,7 +51,7 @@ public static function form(Schema $schema): Schema
return $schema
->components([
TextInput::make('name')
- ->label('Nama')
+ ->label('Nama Klasifikasi')
->placeholder('Pelaporan')
->autocomplete(false)
->autofocus()
diff --git a/app/Filament/Resources/Master/Departments/DepartmentResource.php b/app/Filament/Resources/Master/Departments/DepartmentResource.php
index 12076f3..5f9b976 100644
--- a/app/Filament/Resources/Master/Departments/DepartmentResource.php
+++ b/app/Filament/Resources/Master/Departments/DepartmentResource.php
@@ -51,7 +51,7 @@ public static function form(Schema $schema): Schema
return $schema
->components([
TextInput::make('name')
- ->label('Nama')
+ ->label('Nama OPD')
->placeholder('Dinas Komunikasi dan Informatika')
->autocomplete(false)
->autofocus()
@@ -59,6 +59,7 @@ public static function form(Schema $schema): Schema
->maxLength(100),
TextInput::make('alias')
+ ->label('Alias')
->placeholder('Diskominfo')
->autocomplete(false)
->required()
diff --git a/app/Filament/Resources/Master/Locations/LocationResource.php b/app/Filament/Resources/Master/Locations/LocationResource.php
index 61a6b1e..f9e0391 100644
--- a/app/Filament/Resources/Master/Locations/LocationResource.php
+++ b/app/Filament/Resources/Master/Locations/LocationResource.php
@@ -51,7 +51,7 @@ public static function form(Schema $schema): Schema
return $schema
->components([
TextInput::make('name')
- ->label('Nama')
+ ->label('Nama Lokus')
->placeholder('Purwakarta')
->autocomplete(false)
->autofocus()
diff --git a/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php b/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php
index 7933693..d8230ef 100644
--- a/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php
+++ b/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php
@@ -54,7 +54,7 @@ public static function form(Schema $schema): Schema
return $schema
->components([
Select::make('classification_id')
- ->label('Klasifikasi')
+ ->label('Klasifikasi Utama')
->options(Classification::query()->active()->pluck('name', 'id'))
->searchable()
->native(false)
@@ -63,7 +63,7 @@ public static function form(Schema $schema): Schema
->autofocus(),
TextInput::make('name')
- ->label('Nama')
+ ->label('Nama Sub-Klasifikasi')
->placeholder('Korupsi')
->autocomplete(false)
->required()
diff --git a/app/Filament/Resources/Master/SubLocations/SubLocationResource.php b/app/Filament/Resources/Master/SubLocations/SubLocationResource.php
index 0806ea7..3d0c75b 100644
--- a/app/Filament/Resources/Master/SubLocations/SubLocationResource.php
+++ b/app/Filament/Resources/Master/SubLocations/SubLocationResource.php
@@ -54,7 +54,7 @@ public static function form(Schema $schema): Schema
return $schema
->components([
Select::make('location_id')
- ->label('Lokus')
+ ->label('Lokus Utama')
->options(Location::query()->pluck('name', 'id'))
->searchable()
->native(false)
@@ -63,8 +63,8 @@ public static function form(Schema $schema): Schema
->autofocus(),
TextInput::make('name')
- ->label('Nama')
- ->placeholder('Nagri Kaler')
+ ->label('Nama Sub-Lokus')
+ ->placeholder('Kecamatan Purwakarta')
->autocomplete(false)
->required()
->maxLength(50),
diff --git a/app/Filament/Resources/Master/Themes/ThemeResource.php b/app/Filament/Resources/Master/Themes/ThemeResource.php
index cbe2747..55c5aa3 100644
--- a/app/Filament/Resources/Master/Themes/ThemeResource.php
+++ b/app/Filament/Resources/Master/Themes/ThemeResource.php
@@ -50,7 +50,7 @@ public static function form(Schema $schema): Schema
return $schema
->components([
TextInput::make('name')
- ->label('Nama')
+ ->label('Nama Tema')
->placeholder('Pendidikan')
->autocomplete(false)
->autofocus()
diff --git a/app/Filament/Resources/Master/Users/UserResource.php b/app/Filament/Resources/Master/Users/UserResource.php
index 7c95612..9e2824e 100644
--- a/app/Filament/Resources/Master/Users/UserResource.php
+++ b/app/Filament/Resources/Master/Users/UserResource.php
@@ -21,6 +21,7 @@
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Resources\Resource;
+use Filament\Schemas\Components\Grid;
use Filament\Schemas\Schema;
use Filament\Support\Enums\Width;
use Filament\Support\Icons\Heroicon;
@@ -55,45 +56,50 @@ public static function form(Schema $schema): Schema
return $schema
->components([
TextInput::make('name')
- ->label('Nama')
+ ->label('Nama Lengkap')
->placeholder('John Doe')
->autocomplete(false)
->autofocus()
->required()
->maxLength(100),
- TextInput::make('email')
- ->label('Alamat Surel')
- ->placeholder('johndoe@example.com')
- ->autocomplete(false)
- ->required()
- ->maxLength(254)
- ->email()
- ->unique(ignoreRecord: true),
+ Grid::make(1)
+ ->schema([
+ TextInput::make('email')
+ ->label('Alamat Surel')
+ ->placeholder('johndoe@example.com')
+ ->autocomplete(false)
+ ->required()
+ ->maxLength(254)
+ ->email()
+ ->unique(ignoreRecord: true)
+ ->prefixIcon('heroicon-o-envelope'),
- TextInput::make('username')
- ->label('Nama Pengguna')
- ->placeholder('johndoe')
- ->autocomplete(false)
- ->required()
- ->minLength(5)
- ->maxLength(20)
- ->regex('/^[a-zA-Z0-9_.-]+$/')
- ->unique(ignoreRecord: true),
+ TextInput::make('username')
+ ->label('Nama Pengguna')
+ ->placeholder('johndoe')
+ ->autocomplete(false)
+ ->required()
+ ->minLength(5)
+ ->maxLength(20)
+ ->regex('/^[a-zA-Z0-9_.-]+$/')
+ ->unique(ignoreRecord: true)
+ ->prefixIcon('heroicon-o-at-symbol'),
- Select::make('roles')
- ->label('Peran')
- ->required()
- ->relationship('roles', 'name', function (Builder $query): Builder {
- return $query->whereNotIn('name', [RoleEnum::DEVELOPER, RoleEnum::PERUSAHAAN]);
- })
- ->multiple()
- ->preload()
- ->searchable(),
+ Select::make('roles')
+ ->label('Peran')
+ ->required()
+ ->relationship('roles', 'name', function (Builder $query): Builder {
+ return $query->whereNotIn('name', [RoleEnum::DEVELOPER, RoleEnum::PERUSAHAAN]);
+ })
+ ->multiple()
+ ->preload()
+ ->searchable(),
- Hidden::make('password')
- ->default(fn (): string => config('auth.password_default'))
- ->visibleOn('create'),
+ Hidden::make('password')
+ ->default(fn (): string => config('auth.password_default'))
+ ->visibleOn('create'),
+ ]),
])
->columns(1);
}
diff --git a/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php b/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php
index a63d02b..4fb8cb6 100644
--- a/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php
+++ b/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php
@@ -20,77 +20,84 @@ public static function configure(Schema $schema): Schema
{
return $schema
->components([
- Section::make([
- TextInput::make('title')
- ->label('Judul')
- ->placeholder('Reels Kerja Sama DPMPTSP')
- ->autocomplete(false)
- ->autofocus()
- ->required()
- ->maxLength(1000),
+ Section::make('Informasi Konten 📝')
+ ->description('Lengkapi detail judul, tautan, dan jenis konten Anda.')
+ ->icon('heroicon-o-document-text')
+ ->schema([
+ TextInput::make('title')
+ ->label('Judul Konten')
+ ->placeholder('Reels Kerja Sama DPMPTSP')
+ ->autocomplete(false)
+ ->autofocus()
+ ->required()
+ ->maxLength(1000),
- TextInput::make('link')
- ->label('Tautan')
- ->placeholder('https://www.pwknews.com')
- ->autocomplete(false)
- ->nullable()
- ->maxLength(255)
- ->url(),
+ TextInput::make('link')
+ ->label('Tautan (URL)')
+ ->placeholder('https://www.pwknews.com')
+ ->autocomplete(false)
+ ->nullable()
+ ->maxLength(255)
+ ->url(),
- Grid::make(2)
- ->schema([
- Select::make('type')
- ->label('Tipe')
- ->options(ContentType::options())
- ->native(false)
- ->in(implode(',', array_column(ContentType::cases(), 'value'))),
+ Grid::make(2)
+ ->schema([
+ Select::make('type')
+ ->label('Tipe Konten')
+ ->options(ContentType::options())
+ ->native(false)
+ ->required()
+ ->in(implode(',', array_column(ContentType::cases(), 'value'))),
- Select::make('channel')
- ->label('Kanal')
- ->options(Channel::options())
- ->native(false)
- ->required()
- ->in(implode(',', array_column(Channel::cases(), 'value'))),
+ Select::make('channel')
+ ->label('Kanal')
+ ->options(Channel::options())
+ ->native(false)
+ ->required()
+ ->in(implode(',', array_column(Channel::cases(), 'value'))),
- Select::make('social_media')
- ->label('Media Sosial')
- ->options(SocialMedia::options())
- ->native(false)
- ->required()
- ->in(implode(',', array_column(SocialMedia::cases(), 'value'))),
+ Select::make('social_media')
+ ->label('Media Sosial')
+ ->options(SocialMedia::options())
+ ->native(false)
+ ->required()
+ ->in(implode(',', array_column(SocialMedia::cases(), 'value'))),
- DatePicker::make('posting_date')
- ->label('Tanggal Posting')
- ->placeholder(fn (): string => now()->translatedFormat('l, d F Y'))
- ->native(false)
- ->displayFormat('l, d F Y')
- ->required(),
- ]),
- ])->columnSpan(2),
+ DatePicker::make('posting_date')
+ ->label('Tanggal Posting')
+ ->placeholder(fn (): string => now()->translatedFormat('l, d F Y'))
+ ->native(false)
+ ->displayFormat('l, d F Y')
+ ->required(),
+ ]),
+ ])->columnSpan(2),
- Section::make([
- Select::make('classification_id')
- ->label('Klasifikasi')
- ->relationship('classification', 'name', function (Builder $query): Builder {
- return $query->active();
- })
- ->native(false)
- ->preload()
- ->required(),
+ Section::make('Klasifikasi & Lampiran 📁')
+ ->description('Pilih klasifikasi yang sesuai dan unggah gambar pendukung.')
+ ->icon('heroicon-o-folder-open')
+ ->schema([
+ Select::make('classification_id')
+ ->label('Klasifikasi')
+ ->relationship('classification', 'name', function (Builder $query): Builder {
+ return $query->active();
+ })
+ ->native(false)
+ ->preload()
+ ->required(),
- SpatieMediaLibraryFileUpload::make('image')
- ->label('Gambar')
- ->disk(config('filesystems.default'))
- ->acceptedFileTypes(['image/*'])
- ->maxSize(1024 * 3)
- ->collection('content-recpaps')
- ->customProperties(fn (): array => [
- 'feature' => 'content-recaps',
- 'date' => now()->toDateString(),
- ])
- ->image()
- ->required(),
- ]),
+ SpatieMediaLibraryFileUpload::make('image')
+ ->label('Gambar Konten')
+ ->disk(config('filesystems.default'))
+ ->acceptedFileTypes(['image/*'])
+ ->maxSize(1024 * 3)
+ ->collection('content-recpaps')
+ ->customProperties(fn (): array => [
+ 'feature' => 'content-recaps',
+ 'date' => now()->toDateString(),
+ ])
+ ->image()
+ ->required(),
+ ])->columnSpan(1),
])
->columns(3);
}
diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php b/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php
index 0016606..8e7a35c 100644
--- a/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php
+++ b/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php
@@ -18,89 +18,95 @@ public static function configure(Schema $schema): Schema
{
return $schema
->components([
- Section::make([
- Select::make('media_monitoring_id')
- ->label('Monitoring Media')
- ->relationship(
- 'mediaMonitoring',
- 'title',
- fn (Builder $query): Builder => $query->whereDoesntHave('issueManagement')
- )
- ->searchable()
- ->preload()
- ->required()
- ->autofocus()
- ->helperText('Jika judul berita dari monitoring media tidak ada di opsi, silakan lakukan pencarian.'),
+ Section::make('Identifikasi Isu 🔍')
+ ->description('Hubungkan dengan berita monitoring dan tentukan lokasi isu.')
+ ->icon('heroicon-o-magnifying-glass')
+ ->schema([
+ Select::make('media_monitoring_id')
+ ->label('Monitoring Media')
+ ->relationship(
+ 'mediaMonitoring',
+ 'title',
+ fn (Builder $query): Builder => $query->whereDoesntHave('issueManagement')
+ )
+ ->searchable()
+ ->preload()
+ ->required()
+ ->autofocus()
+ ->helperText('Jika judul berita dari monitoring media tidak ada di opsi, silakan lakukan pencarian.'),
- Select::make('departments')
- ->label('Perangkat Daerah')
- ->relationship('departments', 'name', fn (Builder $query): Builder => $query->active())
- ->searchable()
- ->preload()
- ->multiple()
- ->required(),
+ Select::make('departments')
+ ->label('Perangkat Daerah Terkait')
+ ->relationship('departments', 'name', fn (Builder $query): Builder => $query->active())
+ ->searchable()
+ ->preload()
+ ->multiple()
+ ->required(),
- Grid::make(2)
- ->schema([
- Select::make('location_id')
- ->label('Lokus')
- ->relationship('location', 'name', fn (Builder $query): Builder => $query->active())
- ->searchable()
- ->preload()
- ->live()
- ->afterStateUpdated(function (Set $set): void {
- $set('sub_location_id', null);
- })
- ->required(),
+ Grid::make(2)
+ ->schema([
+ Select::make('location_id')
+ ->label('Lokus')
+ ->relationship('location', 'name', fn (Builder $query): Builder => $query->active())
+ ->searchable()
+ ->preload()
+ ->live()
+ ->afterStateUpdated(function (Set $set): void {
+ $set('sub_location_id', null);
+ })
+ ->required(),
- Select::make('sub_location_id')
- ->label('Sub Lokus')
- ->relationship('subLocation', 'name', fn (Builder $query, Get $get): Builder => $query->active()->where('location_id', $get('location_id')))
- ->searchable()
- ->preload()
- ->required(),
- ]),
+ Select::make('sub_location_id')
+ ->label('Sub Lokus')
+ ->relationship('subLocation', 'name', fn (Builder $query, Get $get): Builder => $query->active()->where('location_id', $get('location_id')))
+ ->searchable()
+ ->preload()
+ ->required(),
+ ]),
- RichEditor::make('description')
- ->label('Keterangan')
- ->placeholder('...')
- ->required()
- ->columnSpanFull(),
- ])->columnSpan(2),
+ RichEditor::make('description')
+ ->label('Keterangan Isu')
+ ->placeholder('Jelaskan detail isu yang berkembang...')
+ ->required()
+ ->columnSpanFull(),
+ ])->columnSpan(2),
- Section::make([
- Select::make('issue')
- ->label('Isu')
- ->options(IssueSentiment::options())
- ->required()
- ->native(false)
- ->in(implode(',', array_column(IssueSentiment::cases(), 'value'))),
+ Section::make('Sentimen & Klasifikasi 📊')
+ ->description('Tentukan sentimen isu, respon, dan kategori klasifikasinya.')
+ ->icon('heroicon-o-chart-bar')
+ ->schema([
+ Select::make('issue')
+ ->label('Sentimen Isu')
+ ->options(IssueSentiment::options())
+ ->required()
+ ->native(false)
+ ->in(implode(',', array_column(IssueSentiment::cases(), 'value'))),
- Select::make('response')
- ->label('Respon')
- ->options(IssueSentiment::options())
- ->required()
- ->native(false)
- ->in(implode(',', array_column(IssueSentiment::cases(), 'value'))),
+ Select::make('response')
+ ->label('Respon Pemerintah')
+ ->options(IssueSentiment::options())
+ ->required()
+ ->native(false)
+ ->in(implode(',', array_column(IssueSentiment::cases(), 'value'))),
- Select::make('classification_id')
- ->label('Klasifikasi')
- ->relationship('classification', 'name', fn (Builder $query): Builder => $query->active())
- ->searchable()
- ->preload()
- ->live()
- ->afterStateUpdated(function (Set $set): void {
- $set('sub_classification_id', null);
- })
- ->required(),
+ Select::make('classification_id')
+ ->label('Klasifikasi')
+ ->relationship('classification', 'name', fn (Builder $query): Builder => $query->active())
+ ->searchable()
+ ->preload()
+ ->live()
+ ->afterStateUpdated(function (Set $set): void {
+ $set('sub_classification_id', null);
+ })
+ ->required(),
- Select::make('sub_classification_id')
- ->label('Sub Klasifikasi')
- ->relationship('subClassification', 'name', fn (Builder $query, Get $get): Builder => $query->where('classification_id', $get('classification_id'))->active())
- ->searchable()
- ->preload()
- ->required(),
- ])->columnSpan(1),
+ Select::make('sub_classification_id')
+ ->label('Sub Klasifikasi')
+ ->relationship('subClassification', 'name', fn (Builder $query, Get $get): Builder => $query->where('classification_id', $get('location_id'))->active())
+ ->searchable()
+ ->preload()
+ ->required(),
+ ])->columnSpan(1),
])
->columns(3);
}
diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php
index d39f842..5c19f66 100644
--- a/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php
+++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php
@@ -19,109 +19,115 @@ public static function configure(Schema $schema): Schema
{
return $schema
->components([
- Section::make([
- TextInput::make('media_name')
- ->label('Nama Media')
- ->placeholder('PWK News')
- ->autocomplete(false)
- ->autofocus()
- ->required()
- ->maxLength(50),
+ Section::make('Detail Berita 📰')
+ ->description('Masukkan informasi lengkap mengenai pemberitaan media.')
+ ->icon('heroicon-o-newspaper')
+ ->schema([
+ TextInput::make('media_name')
+ ->label('Nama Media')
+ ->placeholder('PWK News')
+ ->autocomplete(false)
+ ->autofocus()
+ ->required()
+ ->maxLength(50),
- TextInput::make('title')
- ->label('Judul')
- ->placeholder('Berita Purwakarta Hari Ini')
- ->autocomplete(false)
- ->required()
- ->maxLength(255),
+ TextInput::make('title')
+ ->label('Judul Berita')
+ ->placeholder('Berita Purwakarta Hari Ini')
+ ->autocomplete(false)
+ ->required()
+ ->maxLength(255),
- Grid::make(2)
- ->schema([
- TextInput::make('writter')
- ->label('Penulis')
- ->placeholder('John Doe')
- ->autocomplete(false)
- ->required()
- ->maxLength(50),
+ Grid::make(2)
+ ->schema([
+ TextInput::make('writter')
+ ->label('Penulis')
+ ->placeholder('John Doe')
+ ->autocomplete(false)
+ ->required()
+ ->maxLength(50),
- TextInput::make('news_page')
- ->label('Halaman Berita')
- ->placeholder('Halaman 1 s/d 10')
- ->autocomplete(false)
- ->nullable()
- ->maxLength(20),
- ]),
+ TextInput::make('news_page')
+ ->label('Halaman Berita')
+ ->placeholder('Halaman 1 s/d 10')
+ ->autocomplete(false)
+ ->nullable()
+ ->maxLength(20),
+ ]),
- TextInput::make('link')
- ->label('Tautan')
- ->placeholder('https://www.pwknews.com')
- ->autocomplete(false)
- ->nullable()
- ->url(),
+ TextInput::make('link')
+ ->label('Tautan (URL)')
+ ->placeholder('https://www.pwknews.com')
+ ->autocomplete(false)
+ ->nullable()
+ ->url(),
- RichEditor::make('quote')
- ->label('Kutipan')
- ->placeholder('....')
- ->nullable(),
+ RichEditor::make('quote')
+ ->label('Kutipan Penting')
+ ->placeholder('Masukkan kutipan penting dari berita...')
+ ->nullable(),
- RichEditor::make('content')
- ->label('Konten')
- ->placeholder('....')
- ->required(),
- ])->columnSpan(2),
+ RichEditor::make('content')
+ ->label('Konten Berita')
+ ->placeholder('Tuliskan isi berita di sini...')
+ ->required(),
+ ])->columnSpan(2),
- Section::make([
- Select::make('channel')
- ->label('Kanal')
- ->options(Channel::options())
- ->native(false)
- ->required()
- ->in(implode(',', array_column(Channel::cases(), 'value'))),
+ Section::make('Kategori & Metadata 🏷️')
+ ->description('Tentukan kategori berita dan informasi tambahan lainnya.')
+ ->icon('heroicon-o-tag')
+ ->schema([
+ Select::make('channel')
+ ->label('Kanal')
+ ->options(Channel::options())
+ ->native(false)
+ ->required()
+ ->in(implode(',', array_column(Channel::cases(), 'value'))),
- Select::make('themes')
- ->label('Tema')
- ->relationship('themes', 'name', function (Builder $query): Builder {
- return $query->active();
- })
- ->native(false)
- ->multiple()
- ->preload()
- ->required(),
+ Select::make('themes')
+ ->label('Tema')
+ ->relationship('themes', 'name', function (Builder $query): Builder {
+ return $query->active();
+ })
+ ->native(false)
+ ->multiple()
+ ->preload()
+ ->required(),
- DatePicker::make('release_date')
- ->label('Tanggal Rilis')
- ->placeholder(fn (): string => now()->translatedFormat('l, d F Y'))
- ->native(false)
- ->displayFormat('l, d F Y')
- ->required(),
+ DatePicker::make('release_date')
+ ->label('Tanggal Rilis')
+ ->placeholder(fn (): string => now()->translatedFormat('l, d F Y'))
+ ->native(false)
+ ->displayFormat('l, d F Y')
+ ->required(),
- TextInput::make('influencer')
- ->label('Influencer')
- ->placeholder('Sekretariat Daerah')
- ->autocomplete(false)
- ->nullable()
- ->maxLength(50),
+ TextInput::make('influencer')
+ ->label('Influencer')
+ ->placeholder('Sekretariat Daerah')
+ ->autocomplete(false)
+ ->nullable()
+ ->maxLength(50),
- TextInput::make('keyword')
- ->label('Kata Kunci')
- ->placeholder('Purwakarta, Berita Terbaru, Hari Ini')
- ->autocomplete(false)
- ->required()
- ->maxLength(100),
+ TextInput::make('keyword')
+ ->label('Kata Kunci')
+ ->placeholder('Purwakarta, Berita Terbaru, Hari Ini')
+ ->autocomplete(false)
+ ->required()
+ ->maxLength(100),
- SpatieMediaLibraryFileUpload::make('image')
- ->label('Gambar')
- ->disk(config('filesystems.default'))
- ->acceptedFileTypes(['image/*'])
- ->maxSize(1024 * 3)
- ->collection('media-monitorings')
- ->customProperties(fn (): array => [
- 'feature' => 'media-monitorings',
- 'date' => now()->toDateString(),
- ])
- ->image()
- ->required(),
- ]),
+ SpatieMediaLibraryFileUpload::make('image')
+ ->label('Gambar Utama')
+ ->disk(config('filesystems.default'))
+ ->acceptedFileTypes(['image/*'])
+ ->maxSize(1024 * 3)
+ ->collection('media-monitorings')
+ ->customProperties(fn (): array => [
+ 'feature' => 'media-monitorings',
+ 'date' => now()->toDateString(),
+ ])
+ ->image()
+ ->required(),
+ ])->columnSpan(1),
])
->columns(3);
}
diff --git a/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php b/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php
index 0519dd2..79dd28f 100644
--- a/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php
+++ b/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php
@@ -54,22 +54,21 @@ public static function form(Schema $schema): Schema
return $schema
->components([
TextInput::make('title')
- ->label('Judul')
+ ->label('Judul Pengumuman')
->placeholder('Pencairan Dana Kerja Sama Media')
->autocomplete(false)
->autofocus()
->required()
- ->maxLength(200)
->columnSpanFull(),
RichEditor::make('content')
- ->label('Konten')
- ->placeholder('...')
+ ->label('Isi Pengumuman')
+ ->placeholder('Tuliskan detail pengumuman di sini...')
->required()
->columnSpanFull(),
Radio::make('type')
- ->label('Tipe')
+ ->label('Tipe Pengumuman')
->options(AnnouncementType::class)
->required()
->default(AnnouncementType::PUBLIC->value)
@@ -77,20 +76,19 @@ public static function form(Schema $schema): Schema
->inline(),
CheckboxList::make('partnerMedia')
- ->label('Kirim Kepada')
+ ->label('Penerima Khusus')
->relationship('partnerMedia', 'name', fn (Builder $query): Builder => $query->verified())
->visible(fn (Get $get): bool => in_array($get('type'), [AnnouncementType::COMPANY, AnnouncementType::COMPANY->value]))
->required(fn (Get $get): bool => in_array($get('type'), [AnnouncementType::COMPANY, AnnouncementType::COMPANY->value]))
->searchable()
->noSearchResultsMessage('Tidak ada media yang ditemukan.')
- ->helperText('Pilih media yang akan menerima pengumuman ini')
+ ->helperText('Pilih media yang akan menerima pengumuman ini.')
->columnSpanFull()
->bulkToggleable()
->selectAllAction(
fn (Action $action): Action => $action->label('Pilih Semua Media'),
)
->dehydrated(),
-
])
->columns(1);
}
diff --git a/app/Filament/Resources/Publication/News/Schemas/NewsForm.php b/app/Filament/Resources/Publication/News/Schemas/NewsForm.php
index 44247b3..c91a1de 100644
--- a/app/Filament/Resources/Publication/News/Schemas/NewsForm.php
+++ b/app/Filament/Resources/Publication/News/Schemas/NewsForm.php
@@ -25,91 +25,95 @@ public static function configure(Schema $schema): Schema
Hidden::make('author_id')
->default(auth()->id()),
- Section::make([
- TextInput::make('title')
- ->label('Judul')
- ->placeholder('Berita Purwakarta Hari Ini')
- ->autocomplete(false)
- ->autofocus()
- ->required()
- ->maxLength(200),
+ Section::make('Konten Berita ✍️')
+ ->description('Tuliskan judul, ringkasan, dan isi lengkap berita Anda.')
+ ->icon('heroicon-o-pencil-square')
+ ->schema([
+ TextInput::make('title')
+ ->label('Judul Berita')
+ ->placeholder('Berita Purwakarta Hari Ini')
+ ->autocomplete(false)
+ ->autofocus()
+ ->required()
+ ->maxLength(200),
- RichEditor::make('content')
- ->label('Konten')
- ->placeholder('...')
- ->required()
- ->columnSpanFull(),
+ RichEditor::make('excerpt')
+ ->label('Ringkasan (Excerpt)')
+ ->placeholder('Berikan ringkasan singkat berita...')
+ ->required()
+ ->columnSpanFull(),
- RichEditor::make('excerpt')
- ->label('Ringkasan')
- ->placeholder('...')
- ->required()
- ->columnSpanFull(),
- ])->columnSpan(2),
+ RichEditor::make('content')
+ ->label('Isi Lengkap Berita')
+ ->placeholder('Tuliskan konten berita secara mendetail...')
+ ->required()
+ ->columnSpanFull(),
+ ])->columnSpan(2),
- Section::make([
- TextInput::make('link')
- ->label('Tautan')
- ->placeholder('https://www.pwknews.com')
- ->autocomplete(false)
- ->nullable()
- ->maxLength(255)
- ->url(),
+ Section::make('Kategori & Publikasi 🏷️')
+ ->description('Tentukan kategori, tautan media, dan status publikasi.')
+ ->icon('heroicon-o-tag')
+ ->schema([
+ TextInput::make('link')
+ ->label('Tautan Media (Opsional)')
+ ->placeholder('https://www.pwknews.com')
+ ->autocomplete(false)
+ ->nullable()
+ ->maxLength(255)
+ ->url(),
- Select::make('categories')
- ->label('Kategori')
- ->relationship('categories', 'name', function (Builder $query): Builder {
- return $query->active();
- })
- ->native(false)
- ->multiple()
- ->preload()
- ->required(),
+ Select::make('categories')
+ ->label('Kategori')
+ ->relationship('categories', 'name', function (Builder $query): Builder {
+ return $query->active();
+ })
+ ->native(false)
+ ->multiple()
+ ->preload()
+ ->required(),
- TagsInput::make('tags')
- ->reactive()
- ->afterStateHydrated(function ($component, $state, $record): void {
- if (! $record) {
- return;
- }
- $component->state(
- $record->tags->pluck('name')->toArray()
- );
- })
- ->helperText('Tekan enter untuk menambahkan tag.'),
+ TagsInput::make('tags')
+ ->label('Tag Berita')
+ ->reactive()
+ ->afterStateHydrated(function ($component, $state, $record): void {
+ if (! $record) {
+ return;
+ }
+ $component->state(
+ $record->tags->pluck('name')->toArray()
+ );
+ })
+ ->helperText('Tekan enter untuk menambahkan tag.'),
- Radio::make('status')
- ->label('Status')
- ->required()
- ->options(NewsStatus::options())
- ->default(NewsStatus::PUBLISHED->value)
- ->inline()
- ->live()
- ->afterStateUpdated(function (Set $set, ?string $state, ?News $news): void {
- if ($state == NewsStatus::PUBLISHED->value && ! $news?->published_at) {
- $set('published_at', now());
- } elseif ($state != NewsStatus::PUBLISHED->value && ! $news) {
- $set('published_at', null);
- }
- })
- ->rules(['in:'.implode(',', NewsStatus::values())]),
+ Radio::make('status')
+ ->label('Status Publikasi')
+ ->required()
+ ->options(NewsStatus::options())
+ ->default(NewsStatus::PUBLISHED->value)
+ ->inline()
+ ->live()
+ ->afterStateUpdated(function (Set $set, ?string $state, ?News $news): void {
+ if ($state == NewsStatus::PUBLISHED->value && ! $news?->published_at) {
+ $set('published_at', now());
+ } elseif ($state != NewsStatus::PUBLISHED->value && ! $news) {
+ $set('published_at', null);
+ }
+ })
+ ->rules(['in:'.implode(',', NewsStatus::values())]),
- Hidden::make('published_at')
- ->default(now()),
-
- SpatieMediaLibraryFileUpload::make('thumbnail')
- ->label('Thumbnail')
- ->disk(config('filesystems.default'))
- ->acceptedFileTypes(['image/*'])
- ->maxSize(1024 * 3)
- ->collection('news')
- ->customProperties(fn (): array => [
- 'feature' => 'news',
- 'date' => now()->toDateString(),
- ])
- ->image()
- ->required(),
- ]),
+ SpatieMediaLibraryFileUpload::make('thumbnail')
+ ->label('Thumbnail Utama')
+ ->disk(config('filesystems.default'))
+ ->acceptedFileTypes(['image/*'])
+ ->maxSize(1024 * 3)
+ ->collection('news')
+ ->customProperties(fn (): array => [
+ 'feature' => 'news',
+ 'date' => now()->toDateString(),
+ ])
+ ->image()
+ ->required(),
+ ])->columnSpan(1),
])
->columns(3);
}
diff --git a/resources/views/components/verification-card.blade.php b/resources/views/components/verification-card.blade.php
index 09d762a..009e792 100644
--- a/resources/views/components/verification-card.blade.php
+++ b/resources/views/components/verification-card.blade.php
@@ -69,7 +69,7 @@ class="p-4 rounded-xl bg-warning-50 dark:bg-warning-500/10 border border-warning
+ icon="heroicon-o-pencil-square">
Perbaiki Data
@@ -154,7 +154,7 @@ class="p-4 rounded-xl bg-success-50 dark:bg-success-500/10 border border-success
+ icon="heroicon-o-plus">
Lengkapi Data
@@ -220,7 +220,7 @@ class="w-full flex items-center justify-between p-4 bg-gray-50 dark:bg-gray-800
@if ($hasEntity && !$progress['isPending'] && !$progress['isApproved'])
+ icon="heroicon-o-pencil">
Edit Data
@endif
diff --git a/resources/views/filament/pages/admin-verification.blade.php b/resources/views/filament/pages/admin-verification.blade.php
index 9180ddf..96454ab 100644
--- a/resources/views/filament/pages/admin-verification.blade.php
+++ b/resources/views/filament/pages/admin-verification.blade.php
@@ -199,7 +199,7 @@ class="w-4 h-4 text-gray-500 transition-transform duration-200"
{{-- View Detail Button --}}
@if ($verification['company']['detailUrl'])
-
Detail