From f73035593e962e46ecafacbec4ee63e809cb3c3f Mon Sep 17 00:00:00 2001 From: Mekan1206 Date: Sat, 6 Jun 2026 13:20:16 +0500 Subject: [PATCH] Enhance category and timeline entry forms with icon selection options; update image display settings for hero slides, products, and signature items to use circular images. Improve welcome page layout for better responsiveness and add autoplay functionality to the hero carousel. --- .../Resources/Categories/CategoryResource.php | 20 ++++++++++++++++--- .../HeroSlides/HeroSlideResource.php | 3 ++- .../Resources/Products/ProductResource.php | 4 +++- .../SignatureItems/SignatureItemResource.php | 3 ++- .../TimelineEntries/TimelineEntryResource.php | 20 ++++++++++++++++--- resources/views/welcome.blade.php | 15 ++++++++++++-- 6 files changed, 54 insertions(+), 11 deletions(-) diff --git a/app/Filament/Resources/Categories/CategoryResource.php b/app/Filament/Resources/Categories/CategoryResource.php index 644a464..94bf3dd 100644 --- a/app/Filament/Resources/Categories/CategoryResource.php +++ b/app/Filament/Resources/Categories/CategoryResource.php @@ -9,6 +9,7 @@ use Filament\Actions\BulkActionGroup; use Filament\Actions\DeleteAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; +use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\Toggle; use Filament\Resources\Resource; @@ -42,11 +43,24 @@ class CategoryResource extends Resource ->label('Slug') ->required() ->unique(ignoreRecord: true), - TextInput::make('icon') - ->label('Material Symbol ikony') + Select::make('icon') + ->label('Ikony (Material Symbol)') ->required() ->default('category') - ->placeholder('set_meal'), + ->options([ + 'set_meal' => 'set_meal — Nahar toplum', + 'cruelty_free' => 'cruelty_free — Goýun eti', + 'kebab_dining' => 'kebab_dining — Kebab / Goş', + 'egg' => 'egg — Guş eti', + 'local_pizza' => 'local_pizza — Kolbasalar', + 'lunch_dining' => 'lunch_dining — Et tagamy', + 'outdoor_grill' => 'outdoor_grill — Grill', + 'restaurant_menu' => 'restaurant_menu — Menýu', + 'food_bank' => 'food_bank — Azyk ammar', + 'category' => 'category — Kategoriýa', + 'bakery_dining' => 'bakery_dining — Çörek', + 'fastfood' => 'fastfood — Çalt nahar', + ]), TextInput::make('sort_order') ->label('Tertip') ->required() diff --git a/app/Filament/Resources/HeroSlides/HeroSlideResource.php b/app/Filament/Resources/HeroSlides/HeroSlideResource.php index b6e0fb9..bd1c1b9 100644 --- a/app/Filament/Resources/HeroSlides/HeroSlideResource.php +++ b/app/Filament/Resources/HeroSlides/HeroSlideResource.php @@ -73,7 +73,8 @@ class HeroSlideResource extends Resource ->columns([ ImageColumn::make('image') ->label('Surat') - ->square(), + ->disk('public') + ->circular(), TextColumn::make('headline') ->label('Sözbaşy') ->searchable() diff --git a/app/Filament/Resources/Products/ProductResource.php b/app/Filament/Resources/Products/ProductResource.php index fa903cd..f595c30 100644 --- a/app/Filament/Resources/Products/ProductResource.php +++ b/app/Filament/Resources/Products/ProductResource.php @@ -98,7 +98,9 @@ class ProductResource extends Resource ->columns([ ImageColumn::make('image') ->label('Surat') - ->square(), + ->disk('public') + ->circular(), + TextColumn::make('name') ->label('Ady') ->searchable(), diff --git a/app/Filament/Resources/SignatureItems/SignatureItemResource.php b/app/Filament/Resources/SignatureItems/SignatureItemResource.php index 2030641..9d02645 100644 --- a/app/Filament/Resources/SignatureItems/SignatureItemResource.php +++ b/app/Filament/Resources/SignatureItems/SignatureItemResource.php @@ -76,7 +76,8 @@ class SignatureItemResource extends Resource ->columns([ ImageColumn::make('image') ->label('Surat') - ->square(), + ->disk('public') + ->circular(), TextColumn::make('name') ->label('Ady') ->searchable(), diff --git a/app/Filament/Resources/TimelineEntries/TimelineEntryResource.php b/app/Filament/Resources/TimelineEntries/TimelineEntryResource.php index cad2ceb..5e5ceaf 100644 --- a/app/Filament/Resources/TimelineEntries/TimelineEntryResource.php +++ b/app/Filament/Resources/TimelineEntries/TimelineEntryResource.php @@ -9,6 +9,7 @@ use Filament\Actions\BulkActionGroup; use Filament\Actions\DeleteAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; +use Filament\Forms\Components\Select; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Resources\Resource; @@ -42,11 +43,24 @@ class TimelineEntryResource extends Resource TextInput::make('title') ->label('Başlyk') ->required(), - TextInput::make('icon') - ->label('Material Symbol ikony') + Select::make('icon') + ->label('Ikony (Material Symbol)') ->required() ->default('history') - ->placeholder('storefront'), + ->options([ + 'storefront' => 'storefront — Dükançasy', + 'outdoor_grill' => 'outdoor_grill — Tüsse otagy', + 'local_shipping' => 'local_shipping — Eltip bermek', + 'menu_book' => 'menu_book — Resept kitaby', + 'history' => 'history — Taryh', + 'star' => 'star — Ýyldyz', + 'emoji_events' => 'emoji_events — Baýrak', + 'workspace_premium' => 'workspace_premium — Premium', + 'factory' => 'factory — Zawod', + 'engineering' => 'engineering — Inžinerlik', + 'handyman' => 'handyman — Usta', + 'lightbulb' => 'lightbulb — Täze pikir', + ]), TextInput::make('sort_order') ->label('Tertip') ->required() diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index d5cb3de..43ca6a1 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -193,9 +193,9 @@ Biziň aýratynlyklarymyz
-
+
@foreach($signatureItems as $item) -
+
@if($item->image) {{ $item->name }} @@ -360,11 +360,22 @@ }); } + // Autoplay — advances every 5 seconds, stops on manual interaction + let heroAutoplay = setInterval(() => { + currentSlide = (currentSlide + 1) % totalSlides; + updateCarousel(); + }, 5000); + + [prevBtn, nextBtn].forEach((btn) => { + btn?.addEventListener('click', () => clearInterval(heroAutoplay)); + }); + // Swipe logic for hero let startX; if (heroCarousel) { heroCarousel.addEventListener('touchstart', (e) => { startX = e.touches[0].clientX; + clearInterval(heroAutoplay); }, { passive: true }); heroCarousel.addEventListener('touchend', (e) => {