@@ -0,0 +1,229 @@
|
||||
# Trunçgil Teknoloji Web Sitesi Kurulum Kılavuzu
|
||||
|
||||
## 🎉 Web sitesi başarıyla oluşturuldu!
|
||||
|
||||
Modern, responsive ve dark mode destekli bir web sitesi hazır.
|
||||
|
||||
## 📋 Özellikler
|
||||
|
||||
✅ **Dinamik Menü Sistemi**
|
||||
- Admin panelinden yönetilebilir
|
||||
- `show_in_menu` işaretli sayfalar otomatik görünür
|
||||
- `parent_page` ile hiyerarşik menü yapısı
|
||||
- `sort_order` ile sıralama desteği
|
||||
- Dropdown menüler
|
||||
|
||||
✅ **Dark/Light Mode**
|
||||
- Otomatik tema algılama
|
||||
- Local storage ile tercih kaydetme
|
||||
- Smooth transitions
|
||||
- Her sayfada erişilebilir toggle buton
|
||||
|
||||
✅ **Modern Tasarım**
|
||||
- Tailwind CSS ile responsive design
|
||||
- Gradient backgrounds
|
||||
- Smooth animations
|
||||
- Custom scrollbar
|
||||
- Modern tipografi (Inter font)
|
||||
|
||||
✅ **SEO Friendly**
|
||||
- Meta title ve description desteği
|
||||
- Semantic HTML
|
||||
- Clean URLs
|
||||
- Open Graph hazır
|
||||
|
||||
## 🚀 Kurulum Adımları
|
||||
|
||||
### 1. NPM Paketlerini Kur ve Build Et
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 2. Veritabanını Kontrol Et
|
||||
|
||||
Eğer henüz migration'ları çalıştırmadıysanız:
|
||||
|
||||
```bash
|
||||
php artisan migrate
|
||||
```
|
||||
|
||||
### 3. Storage Link Oluştur
|
||||
|
||||
Featured image'ların görünmesi için:
|
||||
|
||||
```bash
|
||||
php artisan storage:link
|
||||
```
|
||||
|
||||
### 4. İlk Kullanıcı ve Sayfa Oluştur
|
||||
|
||||
Admin paneline giriş yapın:
|
||||
```
|
||||
https://citrus.truncgil.com/admin
|
||||
```
|
||||
|
||||
**İlk Sayfa Oluşturma:**
|
||||
1. Pages > Create New Page
|
||||
2. Başlık ve içerik girin
|
||||
3. "Homepage" checkbox'ını işaretleyin (anasayfa için)
|
||||
4. "Show in Menu" işaretleyin (menüde görünsün)
|
||||
5. Status: Published
|
||||
6. Save
|
||||
|
||||
**Menü Yapısı:**
|
||||
- Ana sayfa: `parent_page` boş, `sort_order: 0`
|
||||
- Alt sayfa: `parent_page` seçili, `sort_order: 1, 2, 3...`
|
||||
|
||||
## 📁 Oluşturulan Dosyalar
|
||||
|
||||
### Controllers
|
||||
- `app/Http/Controllers/PageController.php` - Sayfa kontrolcüsü
|
||||
|
||||
### Routes
|
||||
- `routes/web.php` - Web route'ları
|
||||
|
||||
### Views
|
||||
- `resources/views/layouts/app.blade.php` - Ana layout
|
||||
- `resources/views/components/navigation.blade.php` - Dinamik menü
|
||||
- `resources/views/components/footer.blade.php` - Footer
|
||||
- `resources/views/home.blade.php` - Anasayfa
|
||||
- `resources/views/page.blade.php` - Sayfa detay
|
||||
|
||||
### Assets
|
||||
- `resources/css/app.css` - Güncellenmiş CSS
|
||||
- `resources/js/app.js` - Dark mode JavaScript
|
||||
|
||||
## 🎨 Tasarım Özellikleri
|
||||
|
||||
### Renkler
|
||||
- **Primary:** Red (#DC2626)
|
||||
- **Secondary:** Orange (#EA580C)
|
||||
- **Dark Mode:** Gray scale
|
||||
|
||||
### Logo Kullanımı
|
||||
- Light mode: `truncgil-yatay.svg` / `truncgil-dikey.svg`
|
||||
- Dark mode: `truncgil-yatay-dark.svg` / `truncgil-dikey-dark.svg`
|
||||
|
||||
### Responsive Breakpoints
|
||||
- Mobile: < 768px
|
||||
- Tablet: 768px - 1024px
|
||||
- Desktop: > 1024px
|
||||
|
||||
## 📖 Kullanım
|
||||
|
||||
### Yeni Sayfa Ekleme
|
||||
|
||||
1. Admin Panel > Pages > Create
|
||||
2. Form alanlarını doldurun:
|
||||
- **Title:** Sayfa başlığı
|
||||
- **Slug:** URL (otomatik oluşur)
|
||||
- **Content:** Sayfa içeriği (Rich Editor)
|
||||
- **Excerpt:** Kısa açıklama
|
||||
- **Featured Image:** Öne çıkan görsel
|
||||
- **Status:** published (yayında olması için)
|
||||
- **Parent Page:** Boş = Ana menü, Dolu = Alt menü
|
||||
- **Sort Order:** Menüde sıralama (0, 1, 2...)
|
||||
- **Show in Menu:** ✅ İşaretli olmalı
|
||||
- **Is Homepage:** Sadece anasayfa için ✅
|
||||
|
||||
### Menü Yapısı Örneği
|
||||
|
||||
```
|
||||
Ana Sayfa (parent_id: null, sort_order: 0)
|
||||
Hakkımızda (parent_id: null, sort_order: 1)
|
||||
├─ Ekibimiz (parent_id: Hakkımızda, sort_order: 0)
|
||||
└─ Tarihçe (parent_id: Hakkımızda, sort_order: 1)
|
||||
Hizmetler (parent_id: null, sort_order: 2)
|
||||
├─ Web Yazılım (parent_id: Hizmetler, sort_order: 0)
|
||||
└─ Mobil Uygulama (parent_id: Hizmetler, sort_order: 1)
|
||||
İletişim (parent_id: null, sort_order: 3)
|
||||
```
|
||||
|
||||
## 🔧 Geliştirme
|
||||
|
||||
### Development Mode
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### Build for Production
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Clear Cache
|
||||
```bash
|
||||
php artisan cache:clear
|
||||
php artisan view:clear
|
||||
php artisan config:clear
|
||||
```
|
||||
|
||||
## 🎯 SEO Optimizasyonu
|
||||
|
||||
Her sayfa için:
|
||||
1. **Meta Title:** 60 karakter max
|
||||
2. **Meta Description:** 160 karakter max
|
||||
3. **Slug:** URL-friendly (otomatik oluşur)
|
||||
4. **Alt Text:** Görsellere açıklayıcı text
|
||||
|
||||
## 🌐 Tarayıcı Desteği
|
||||
|
||||
- ✅ Chrome (son 2 versiyon)
|
||||
- ✅ Firefox (son 2 versiyon)
|
||||
- ✅ Safari (son 2 versiyon)
|
||||
- ✅ Edge (son 2 versiyon)
|
||||
|
||||
## 📱 Mobil Responsive
|
||||
|
||||
Tüm sayfalar mobil uyumlu:
|
||||
- Touch-friendly menü
|
||||
- Responsive images
|
||||
- Mobile-optimized typography
|
||||
- Hamburger menu
|
||||
|
||||
## 🎨 Özelleştirme
|
||||
|
||||
### Logo Değiştirme
|
||||
Logolar `public/logos/` klasöründe. Değiştirmek için:
|
||||
1. Aynı isimde yeni logo yükleyin
|
||||
2. Cache'i temizleyin
|
||||
|
||||
### Renk Değiştirme
|
||||
`resources/css/app.css` dosyasında Tailwind theme ayarları
|
||||
|
||||
### İletişim Bilgileri
|
||||
`resources/views/components/footer.blade.php` dosyasında düzenleyin
|
||||
|
||||
## 🐛 Sorun Giderme
|
||||
|
||||
### Stiller Yüklenmiyorsa
|
||||
```bash
|
||||
npm run build
|
||||
php artisan cache:clear
|
||||
```
|
||||
|
||||
### Dark Mode Çalışmıyorsa
|
||||
Browser console'da:
|
||||
```javascript
|
||||
localStorage.clear()
|
||||
```
|
||||
Sayfayı yenileyin.
|
||||
|
||||
### Menü Görünmüyorsa
|
||||
Kontrol edin:
|
||||
- ✅ Status: published
|
||||
- ✅ Show in Menu: checked
|
||||
- ✅ Parent sayfalar da published
|
||||
|
||||
## 📞 Destek
|
||||
|
||||
Sorularınız için:
|
||||
- Email: info@truncgil.com
|
||||
- Admin Panel: /admin
|
||||
|
||||
## 🎉 Başarılar!
|
||||
|
||||
Web siteniz hazır! Citrus admin panelinden içerik yönetmeye başlayabilirsiniz.
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Admin\Resources\Settings\Pages;
|
||||
|
||||
use App\Filament\Admin\Resources\Settings\SettingResource;
|
||||
use Filament\Resources\Pages\CreateRecord;
|
||||
|
||||
class CreateSetting extends CreateRecord
|
||||
{
|
||||
protected static string $resource = SettingResource::class;
|
||||
|
||||
public function getTitle(): string
|
||||
{
|
||||
return __('settings.create');
|
||||
}
|
||||
|
||||
protected function getRedirectUrl(): string
|
||||
{
|
||||
return $this->getResource()::getUrl('index');
|
||||
}
|
||||
|
||||
protected function getCreatedNotificationTitle(): ?string
|
||||
{
|
||||
return __('settings.created_successfully');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Admin\Resources\Settings\Pages;
|
||||
|
||||
use App\Filament\Admin\Resources\Settings\SettingResource;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Actions\ForceDeleteAction;
|
||||
use Filament\Actions\RestoreAction;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
class EditSetting extends EditRecord
|
||||
{
|
||||
protected static string $resource = SettingResource::class;
|
||||
|
||||
public function getTitle(): string
|
||||
{
|
||||
return __('settings.edit');
|
||||
}
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
DeleteAction::make()
|
||||
->label(__('settings.delete')),
|
||||
RestoreAction::make()
|
||||
->label(__('settings.restore')),
|
||||
ForceDeleteAction::make()
|
||||
->label(__('settings.force_delete')),
|
||||
];
|
||||
}
|
||||
|
||||
protected function getRedirectUrl(): string
|
||||
{
|
||||
return $this->getResource()::getUrl('index');
|
||||
}
|
||||
|
||||
protected function getSavedNotificationTitle(): ?string
|
||||
{
|
||||
return __('settings.updated_successfully');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Admin\Resources\Settings\Pages;
|
||||
|
||||
use App\Filament\Admin\Resources\Settings\SettingResource;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
|
||||
class ListSettings extends ListRecords
|
||||
{
|
||||
protected static string $resource = SettingResource::class;
|
||||
|
||||
public function getTitle(): string
|
||||
{
|
||||
return __('settings.title');
|
||||
}
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
CreateAction::make()
|
||||
->label(__('settings.create')),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Admin\Resources\Settings\Schemas;
|
||||
|
||||
use Filament\Forms\Components\Select;
|
||||
use Filament\Forms\Components\Textarea;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Forms\Components\Toggle;
|
||||
use Filament\Schemas\Components\Section;
|
||||
use Filament\Schemas\Components\Utilities\Get;
|
||||
use Filament\Schemas\Components\Utilities\Set;
|
||||
use Filament\Schemas\Schema;
|
||||
|
||||
class SettingForm
|
||||
{
|
||||
public static function configure(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
->components([
|
||||
Section::make(__('settings.title'))
|
||||
->schema([
|
||||
TextInput::make('key')
|
||||
->label(__('settings.key'))
|
||||
->helperText(__('settings.key_helper'))
|
||||
->required()
|
||||
->unique(ignoreRecord: true)
|
||||
->regex('/^[a-z0-9_-]+$/')
|
||||
->maxLength(255)
|
||||
->disabled(fn ($record) => $record !== null)
|
||||
->columnSpanFull(),
|
||||
|
||||
TextInput::make('label')
|
||||
->label(__('settings.label'))
|
||||
->helperText(__('settings.label_helper'))
|
||||
->required()
|
||||
->maxLength(255)
|
||||
->columnSpanFull(),
|
||||
|
||||
Textarea::make('description')
|
||||
->label(__('settings.description'))
|
||||
->helperText(__('settings.description_helper'))
|
||||
->rows(3)
|
||||
->columnSpanFull(),
|
||||
|
||||
Select::make('type')
|
||||
->label(__('settings.type'))
|
||||
->helperText(__('settings.type_helper'))
|
||||
->required()
|
||||
->options([
|
||||
'string' => __('settings.type_string'),
|
||||
'text' => __('settings.type_text'),
|
||||
'boolean' => __('settings.type_boolean'),
|
||||
'integer' => __('settings.type_integer'),
|
||||
'float' => __('settings.type_float'),
|
||||
'array' => __('settings.type_array'),
|
||||
'json' => __('settings.type_json'),
|
||||
])
|
||||
->live()
|
||||
->afterStateUpdated(fn (Set $set) => $set('value', null)),
|
||||
|
||||
Select::make('group')
|
||||
->label(__('settings.group'))
|
||||
->helperText(__('settings.group_helper'))
|
||||
->required()
|
||||
->options([
|
||||
'general' => __('settings.group_general'),
|
||||
'email' => __('settings.group_email'),
|
||||
'seo' => __('settings.group_seo'),
|
||||
'social' => __('settings.group_social'),
|
||||
'security' => __('settings.group_security'),
|
||||
'payment' => __('settings.group_payment'),
|
||||
'notification' => __('settings.group_notification'),
|
||||
'other' => __('settings.group_other'),
|
||||
])
|
||||
->default('general'),
|
||||
|
||||
Textarea::make('value_text')
|
||||
->label(__('settings.value'))
|
||||
->helperText(__('settings.value_helper'))
|
||||
->required()
|
||||
->visible(fn (Get $get) => !in_array($get('type'), ['boolean']))
|
||||
->rows(fn (Get $get) => $get('type') === 'text' ? 5 : 3)
|
||||
->formatStateUsing(function ($state, $record) {
|
||||
if ($record && $record->type !== 'boolean') {
|
||||
return $record->value;
|
||||
}
|
||||
return $state;
|
||||
})
|
||||
->columnSpanFull(),
|
||||
|
||||
Toggle::make('value_boolean')
|
||||
->label(__('settings.value'))
|
||||
->helperText(__('settings.value_helper'))
|
||||
->required()
|
||||
->visible(fn (Get $get) => $get('type') === 'boolean')
|
||||
->formatStateUsing(function ($state, $record) {
|
||||
if ($record && $record->type === 'boolean') {
|
||||
return filter_var($record->value, FILTER_VALIDATE_BOOLEAN);
|
||||
}
|
||||
return false;
|
||||
})
|
||||
->columnSpanFull(),
|
||||
|
||||
Toggle::make('is_active')
|
||||
->label(__('settings.is_active'))
|
||||
->helperText(__('settings.is_active_helper'))
|
||||
->default(true)
|
||||
->columnSpan(1),
|
||||
|
||||
Toggle::make('is_public')
|
||||
->label(__('settings.is_public'))
|
||||
->helperText(__('settings.is_public_helper'))
|
||||
->default(false)
|
||||
->columnSpan(1),
|
||||
])
|
||||
->columns(2),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Admin\Resources\Settings;
|
||||
|
||||
use App\Filament\Admin\Resources\Settings\Pages\CreateSetting;
|
||||
use App\Filament\Admin\Resources\Settings\Pages\EditSetting;
|
||||
use App\Filament\Admin\Resources\Settings\Pages\ListSettings;
|
||||
use App\Filament\Admin\Resources\Settings\Schemas\SettingForm;
|
||||
use App\Filament\Admin\Resources\Settings\Tables\SettingsTable;
|
||||
use App\Models\Setting;
|
||||
use BackedEnum;
|
||||
use Filament\Resources\Resource;
|
||||
use UnitEnum;
|
||||
use Filament\Schemas\Schema;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\SoftDeletingScope;
|
||||
|
||||
class SettingResource extends Resource
|
||||
{
|
||||
protected static ?string $model = Setting::class;
|
||||
|
||||
protected static string|BackedEnum|null $navigationIcon = Heroicon::Cog6Tooth;
|
||||
|
||||
protected static UnitEnum|string|null $navigationGroup = 'System';
|
||||
|
||||
protected static ?int $navigationSort = 100;
|
||||
|
||||
public static function getNavigationLabel(): string
|
||||
{
|
||||
return __('settings.navigation_label');
|
||||
}
|
||||
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('settings.model_label');
|
||||
}
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('settings.plural_model_label');
|
||||
}
|
||||
|
||||
public static function form(Schema $schema): Schema
|
||||
{
|
||||
return SettingForm::configure($schema);
|
||||
}
|
||||
|
||||
public static function table(Table $table): Table
|
||||
{
|
||||
return SettingsTable::configure($table);
|
||||
}
|
||||
|
||||
public static function getRelations(): array
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
{
|
||||
return [
|
||||
'index' => ListSettings::route('/'),
|
||||
'create' => CreateSetting::route('/create'),
|
||||
'edit' => EditSetting::route('/{record}/edit'),
|
||||
];
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()
|
||||
->withoutGlobalScopes([
|
||||
SoftDeletingScope::class,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Admin\Resources\Settings\Tables;
|
||||
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Actions\ForceDeleteAction;
|
||||
use Filament\Actions\ForceDeleteBulkAction;
|
||||
use Filament\Actions\RestoreAction;
|
||||
use Filament\Actions\RestoreBulkAction;
|
||||
use Filament\Tables\Columns\IconColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Filters\SelectFilter;
|
||||
use Filament\Tables\Filters\TernaryFilter;
|
||||
use Filament\Tables\Filters\TrashedFilter;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class SettingsTable
|
||||
{
|
||||
public static function configure(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->columns([
|
||||
TextColumn::make('key')
|
||||
->label(__('settings.table_key'))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('label')
|
||||
->label(__('settings.table_label'))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('value')
|
||||
->label(__('settings.table_value'))
|
||||
->searchable()
|
||||
->limit(50)
|
||||
->wrap()
|
||||
->formatStateUsing(function ($state, $record) {
|
||||
// Boolean tipler için emoji göster
|
||||
if ($record->type === 'boolean') {
|
||||
return filter_var($state, FILTER_VALIDATE_BOOLEAN)
|
||||
? '✅'
|
||||
: '❌';
|
||||
}
|
||||
return $state;
|
||||
}),
|
||||
|
||||
TextColumn::make('type')
|
||||
->label(__('settings.table_type'))
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'boolean' => 'success',
|
||||
'integer', 'float' => 'info',
|
||||
'array', 'json' => 'warning',
|
||||
default => 'gray',
|
||||
})
|
||||
->formatStateUsing(fn (string $state): string => __("settings.type_{$state}")),
|
||||
|
||||
TextColumn::make('group')
|
||||
->label(__('settings.table_group'))
|
||||
->badge()
|
||||
->color('primary')
|
||||
->formatStateUsing(fn (string $state): string => __("settings.group_{$state}")),
|
||||
|
||||
IconColumn::make('is_active')
|
||||
->label(__('settings.table_active'))
|
||||
->boolean()
|
||||
->sortable(),
|
||||
|
||||
IconColumn::make('is_public')
|
||||
->label(__('settings.table_public'))
|
||||
->boolean()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('created_at')
|
||||
->label(__('settings.table_created_at'))
|
||||
->dateTime('d.m.Y H:i')
|
||||
->sortable()
|
||||
->toggleable(isToggledHiddenByDefault: true),
|
||||
|
||||
TextColumn::make('updated_at')
|
||||
->label(__('settings.table_updated_at'))
|
||||
->dateTime('d.m.Y H:i')
|
||||
->sortable()
|
||||
->toggleable(isToggledHiddenByDefault: true),
|
||||
])
|
||||
->filters([
|
||||
SelectFilter::make('group')
|
||||
->label(__('settings.filter_group'))
|
||||
->options([
|
||||
'general' => __('settings.group_general'),
|
||||
'email' => __('settings.group_email'),
|
||||
'seo' => __('settings.group_seo'),
|
||||
'social' => __('settings.group_social'),
|
||||
'security' => __('settings.group_security'),
|
||||
'payment' => __('settings.group_payment'),
|
||||
'notification' => __('settings.group_notification'),
|
||||
'other' => __('settings.group_other'),
|
||||
]),
|
||||
|
||||
SelectFilter::make('type')
|
||||
->label(__('settings.filter_type'))
|
||||
->options([
|
||||
'string' => __('settings.type_string'),
|
||||
'text' => __('settings.type_text'),
|
||||
'boolean' => __('settings.type_boolean'),
|
||||
'integer' => __('settings.type_integer'),
|
||||
'float' => __('settings.type_float'),
|
||||
'array' => __('settings.type_array'),
|
||||
'json' => __('settings.type_json'),
|
||||
]),
|
||||
|
||||
TernaryFilter::make('is_active')
|
||||
->label(__('settings.filter_active'))
|
||||
->boolean()
|
||||
->trueLabel(__('settings.is_active'))
|
||||
->falseLabel(__('settings.is_active') . ' (Hayır)'),
|
||||
|
||||
TernaryFilter::make('is_public')
|
||||
->label(__('settings.filter_public'))
|
||||
->boolean()
|
||||
->trueLabel(__('settings.is_public'))
|
||||
->falseLabel(__('settings.is_public') . ' (Hayır)'),
|
||||
|
||||
TrashedFilter::make(),
|
||||
])
|
||||
->recordActions([
|
||||
EditAction::make(),
|
||||
DeleteAction::make(),
|
||||
RestoreAction::make(),
|
||||
ForceDeleteAction::make(),
|
||||
])
|
||||
->toolbarActions([
|
||||
BulkActionGroup::make([
|
||||
DeleteBulkAction::make(),
|
||||
RestoreBulkAction::make(),
|
||||
ForceDeleteBulkAction::make(),
|
||||
]),
|
||||
])
|
||||
->defaultSort('created_at', 'desc');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Page;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class PageController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display the homepage or a specific page
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// Homepage'i bul
|
||||
$page = Page::where('is_homepage', true)
|
||||
->where('status', 'published')
|
||||
->first();
|
||||
|
||||
if (!$page) {
|
||||
// Homepage yoksa, view'e boş geçelim
|
||||
return view('home', [
|
||||
'page' => null,
|
||||
'menuItems' => $this->getMenuItems()
|
||||
]);
|
||||
}
|
||||
|
||||
return view('home', [
|
||||
'page' => $page,
|
||||
'menuItems' => $this->getMenuItems()
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a specific page by slug
|
||||
*/
|
||||
public function show($slug)
|
||||
{
|
||||
$page = Page::where('slug', $slug)
|
||||
->where('status', 'published')
|
||||
->firstOrFail();
|
||||
|
||||
return view('page', [
|
||||
'page' => $page,
|
||||
'menuItems' => $this->getMenuItems()
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get menu items for navigation
|
||||
*/
|
||||
private function getMenuItems()
|
||||
{
|
||||
return Page::with(['children' => function ($query) {
|
||||
$query->where('status', 'published')
|
||||
->where('show_in_menu', true)
|
||||
->orderBy('sort_order', 'asc')
|
||||
->orderBy('title', 'asc');
|
||||
}])
|
||||
->whereNull('parent_id')
|
||||
->where('status', 'published')
|
||||
->where('show_in_menu', true)
|
||||
->orderBy('sort_order', 'asc')
|
||||
->orderBy('title', 'asc')
|
||||
->get();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class Setting extends Model
|
||||
{
|
||||
use HasFactory, SoftDeletes;
|
||||
|
||||
protected $fillable = [
|
||||
'key',
|
||||
'value',
|
||||
'value_text',
|
||||
'value_boolean',
|
||||
'type',
|
||||
'group',
|
||||
'label',
|
||||
'description',
|
||||
'is_public',
|
||||
'is_active',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'is_public' => 'boolean',
|
||||
'is_active' => 'boolean',
|
||||
];
|
||||
|
||||
protected $dates = [
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'deleted_at',
|
||||
];
|
||||
|
||||
/**
|
||||
* Set value from different field names
|
||||
*/
|
||||
public function setValueTextAttribute($value)
|
||||
{
|
||||
$this->attributes['value'] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set value from different field names
|
||||
*/
|
||||
public function setValueBooleanAttribute($value)
|
||||
{
|
||||
$this->attributes['value'] = $value ? '1' : '0';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get setting by key
|
||||
*/
|
||||
public static function get(string $key, $default = null)
|
||||
{
|
||||
$setting = static::where('key', $key)
|
||||
->where('is_active', true)
|
||||
->first();
|
||||
|
||||
if (!$setting) {
|
||||
return $default;
|
||||
}
|
||||
|
||||
return static::castValue($setting->value, $setting->type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set setting value
|
||||
*/
|
||||
public static function set(string $key, $value, string $type = 'string'): void
|
||||
{
|
||||
static::updateOrCreate(
|
||||
['key' => $key],
|
||||
[
|
||||
'value' => $value,
|
||||
'type' => $type,
|
||||
'is_active' => true,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cast value based on type
|
||||
*/
|
||||
protected static function castValue($value, string $type)
|
||||
{
|
||||
return match($type) {
|
||||
'boolean' => filter_var($value, FILTER_VALIDATE_BOOLEAN),
|
||||
'integer' => (int) $value,
|
||||
'float' => (float) $value,
|
||||
'array', 'json' => json_decode($value, true),
|
||||
default => $value,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all settings by group
|
||||
*/
|
||||
public static function getGroup(string $group): array
|
||||
{
|
||||
return static::where('group', $group)
|
||||
->where('is_active', true)
|
||||
->pluck('value', 'key')
|
||||
->map(function ($value, $key) use ($group) {
|
||||
$setting = static::where('key', $key)->first();
|
||||
return static::castValue($value, $setting->type);
|
||||
})
|
||||
->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Setting>
|
||||
*/
|
||||
class SettingFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('settings', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('key')->unique();
|
||||
$table->text('value')->nullable();
|
||||
$table->enum('type', ['string', 'text', 'boolean', 'integer', 'float', 'array', 'json'])->default('string');
|
||||
$table->string('group')->default('general');
|
||||
$table->string('label');
|
||||
$table->text('description')->nullable();
|
||||
$table->boolean('is_public')->default(false);
|
||||
$table->boolean('is_active')->default(true);
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
|
||||
$table->index('key');
|
||||
$table->index('group');
|
||||
$table->index('is_active');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('settings');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,237 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class SettingSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$settings = [
|
||||
// Genel Ayarlar
|
||||
[
|
||||
'key' => 'site_name',
|
||||
'value' => 'Citrus Platform',
|
||||
'type' => 'string',
|
||||
'group' => 'general',
|
||||
'label' => 'Site Adı',
|
||||
'description' => 'Web sitesinin adı',
|
||||
'is_public' => true,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'site_description',
|
||||
'value' => 'Modern ve güvenilir web platformu',
|
||||
'type' => 'text',
|
||||
'group' => 'general',
|
||||
'label' => 'Site Açıklaması',
|
||||
'description' => 'Web sitesinin açıklaması',
|
||||
'is_public' => true,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'site_keywords',
|
||||
'value' => 'citrus, platform, web, modern',
|
||||
'type' => 'string',
|
||||
'group' => 'general',
|
||||
'label' => 'Site Anahtar Kelimeleri',
|
||||
'description' => 'SEO için anahtar kelimeler',
|
||||
'is_public' => true,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'maintenance_mode',
|
||||
'value' => '0',
|
||||
'type' => 'boolean',
|
||||
'group' => 'general',
|
||||
'label' => 'Bakım Modu',
|
||||
'description' => 'Site bakım modunda mı?',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
|
||||
// E-posta Ayarları
|
||||
[
|
||||
'key' => 'mail_from_address',
|
||||
'value' => 'noreply@citrus.truncgil.com',
|
||||
'type' => 'string',
|
||||
'group' => 'email',
|
||||
'label' => 'E-posta Gönderen Adres',
|
||||
'description' => 'Sistem e-postalarının gönderileceği adres',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'mail_from_name',
|
||||
'value' => 'Citrus Platform',
|
||||
'type' => 'string',
|
||||
'group' => 'email',
|
||||
'label' => 'E-posta Gönderen İsim',
|
||||
'description' => 'Sistem e-postalarının gönderen adı',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'mail_notifications_enabled',
|
||||
'value' => '1',
|
||||
'type' => 'boolean',
|
||||
'group' => 'email',
|
||||
'label' => 'E-posta Bildirimleri Aktif',
|
||||
'description' => 'E-posta bildirimleri gönderilsin mi?',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
|
||||
// SEO Ayarları
|
||||
[
|
||||
'key' => 'seo_meta_title',
|
||||
'value' => 'Citrus Platform - Modern Web Platformu',
|
||||
'type' => 'string',
|
||||
'group' => 'seo',
|
||||
'label' => 'SEO Meta Başlık',
|
||||
'description' => 'Varsayılan SEO meta başlığı',
|
||||
'is_public' => true,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'seo_meta_description',
|
||||
'value' => 'Modern ve güvenilir web platformu',
|
||||
'type' => 'text',
|
||||
'group' => 'seo',
|
||||
'label' => 'SEO Meta Açıklama',
|
||||
'description' => 'Varsayılan SEO meta açıklaması',
|
||||
'is_public' => true,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'seo_google_analytics',
|
||||
'value' => '',
|
||||
'type' => 'string',
|
||||
'group' => 'seo',
|
||||
'label' => 'Google Analytics ID',
|
||||
'description' => 'Google Analytics takip kodu',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
|
||||
// Sosyal Medya Ayarları
|
||||
[
|
||||
'key' => 'social_facebook',
|
||||
'value' => '',
|
||||
'type' => 'string',
|
||||
'group' => 'social',
|
||||
'label' => 'Facebook URL',
|
||||
'description' => 'Facebook sayfa URL\'si',
|
||||
'is_public' => true,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'social_twitter',
|
||||
'value' => '',
|
||||
'type' => 'string',
|
||||
'group' => 'social',
|
||||
'label' => 'Twitter URL',
|
||||
'description' => 'Twitter profil URL\'si',
|
||||
'is_public' => true,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'social_instagram',
|
||||
'value' => '',
|
||||
'type' => 'string',
|
||||
'group' => 'social',
|
||||
'label' => 'Instagram URL',
|
||||
'description' => 'Instagram profil URL\'si',
|
||||
'is_public' => true,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'social_linkedin',
|
||||
'value' => '',
|
||||
'type' => 'string',
|
||||
'group' => 'social',
|
||||
'label' => 'LinkedIn URL',
|
||||
'description' => 'LinkedIn profil URL\'si',
|
||||
'is_public' => true,
|
||||
'is_active' => true,
|
||||
],
|
||||
|
||||
// Güvenlik Ayarları
|
||||
[
|
||||
'key' => 'security_max_login_attempts',
|
||||
'value' => '5',
|
||||
'type' => 'integer',
|
||||
'group' => 'security',
|
||||
'label' => 'Maksimum Giriş Denemesi',
|
||||
'description' => 'Kullanıcı hesabının kilitlenmesi için maksimum giriş denemesi',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'security_session_timeout',
|
||||
'value' => '120',
|
||||
'type' => 'integer',
|
||||
'group' => 'security',
|
||||
'label' => 'Oturum Zaman Aşımı (dakika)',
|
||||
'description' => 'Kullanıcı oturumunun zaman aşımına uğrayacağı süre',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'security_2fa_enabled',
|
||||
'value' => '0',
|
||||
'type' => 'boolean',
|
||||
'group' => 'security',
|
||||
'label' => 'İki Faktörlü Doğrulama',
|
||||
'description' => 'İki faktörlü doğrulama aktif mi?',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
|
||||
// Bildirim Ayarları
|
||||
[
|
||||
'key' => 'notification_email_enabled',
|
||||
'value' => '1',
|
||||
'type' => 'boolean',
|
||||
'group' => 'notification',
|
||||
'label' => 'E-posta Bildirimleri',
|
||||
'description' => 'E-posta bildirimleri gönderilsin mi?',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'notification_sms_enabled',
|
||||
'value' => '0',
|
||||
'type' => 'boolean',
|
||||
'group' => 'notification',
|
||||
'label' => 'SMS Bildirimleri',
|
||||
'description' => 'SMS bildirimleri gönderilsin mi?',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'notification_push_enabled',
|
||||
'value' => '0',
|
||||
'type' => 'boolean',
|
||||
'group' => 'notification',
|
||||
'label' => 'Push Bildirimleri',
|
||||
'description' => 'Push bildirimleri gönderilsin mi?',
|
||||
'is_public' => false,
|
||||
'is_active' => true,
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($settings as $setting) {
|
||||
Setting::updateOrCreate(
|
||||
['key' => $setting['key']],
|
||||
$setting
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Settings',
|
||||
'navigation_label' => 'Settings',
|
||||
'model_label' => 'Setting',
|
||||
'plural_model_label' => 'Settings',
|
||||
|
||||
// Actions
|
||||
'create' => 'Create New Setting',
|
||||
'edit' => 'Edit Setting',
|
||||
'delete' => 'Delete Setting',
|
||||
'restore' => 'Restore Setting',
|
||||
'force_delete' => 'Force Delete Setting',
|
||||
'save' => 'Save',
|
||||
'cancel' => 'Cancel',
|
||||
|
||||
// Form fields
|
||||
'key' => 'Key',
|
||||
'key_helper' => 'Setting key (e.g: site_name, site_email)',
|
||||
'value' => 'Value',
|
||||
'value_helper' => 'Setting value',
|
||||
'type' => 'Type',
|
||||
'type_helper' => 'Value type',
|
||||
'group' => 'Group',
|
||||
'group_helper' => 'Setting group (e.g: general, email, seo)',
|
||||
'label' => 'Label',
|
||||
'label_helper' => 'User-friendly label',
|
||||
'description' => 'Description',
|
||||
'description_helper' => 'Setting description',
|
||||
'is_public' => 'Public',
|
||||
'is_public_helper' => 'Is this setting public?',
|
||||
'is_active' => 'Active',
|
||||
'is_active_helper' => 'Is this setting active?',
|
||||
|
||||
// Messages
|
||||
'created_successfully' => 'Setting created successfully.',
|
||||
'updated_successfully' => 'Setting updated successfully.',
|
||||
'deleted_successfully' => 'Setting deleted successfully.',
|
||||
'restored_successfully' => 'Setting restored successfully.',
|
||||
'force_deleted_successfully' => 'Setting permanently deleted.',
|
||||
|
||||
// Table columns
|
||||
'table_key' => 'Key',
|
||||
'table_value' => 'Value',
|
||||
'table_type' => 'Type',
|
||||
'table_group' => 'Group',
|
||||
'table_label' => 'Label',
|
||||
'table_public' => 'Public',
|
||||
'table_active' => 'Active',
|
||||
'table_created_at' => 'Created At',
|
||||
'table_updated_at' => 'Updated At',
|
||||
|
||||
// Types
|
||||
'type_string' => 'String',
|
||||
'type_text' => 'Text',
|
||||
'type_boolean' => 'Boolean',
|
||||
'type_integer' => 'Integer',
|
||||
'type_float' => 'Float',
|
||||
'type_array' => 'Array',
|
||||
'type_json' => 'JSON',
|
||||
|
||||
// Groups
|
||||
'group_general' => 'General',
|
||||
'group_email' => 'Email',
|
||||
'group_seo' => 'SEO',
|
||||
'group_social' => 'Social Media',
|
||||
'group_security' => 'Security',
|
||||
'group_payment' => 'Payment',
|
||||
'group_notification' => 'Notification',
|
||||
'group_other' => 'Other',
|
||||
|
||||
// Validation messages
|
||||
'key_required' => 'Key field is required.',
|
||||
'key_unique' => 'This key is already in use.',
|
||||
'key_regex' => 'Key can only contain letters, numbers, underscores and hyphens.',
|
||||
'value_required' => 'Value field is required.',
|
||||
'type_required' => 'Type field is required.',
|
||||
'label_required' => 'Label field is required.',
|
||||
|
||||
// Filters
|
||||
'filter_group' => 'By Group',
|
||||
'filter_type' => 'By Type',
|
||||
'filter_active' => 'Active',
|
||||
'filter_public' => 'Public',
|
||||
];
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Ayarlar',
|
||||
'navigation_label' => 'Ayarlar',
|
||||
'model_label' => 'Ayar',
|
||||
'plural_model_label' => 'Ayarlar',
|
||||
|
||||
// Actions
|
||||
'create' => 'Yeni Ayar Oluştur',
|
||||
'edit' => 'Ayarı Düzenle',
|
||||
'delete' => 'Ayarı Sil',
|
||||
'restore' => 'Ayarı Geri Yükle',
|
||||
'force_delete' => 'Ayarı Kalıcı Olarak Sil',
|
||||
'save' => 'Kaydet',
|
||||
'cancel' => 'İptal',
|
||||
|
||||
// Form fields
|
||||
'key' => 'Anahtar',
|
||||
'key_helper' => 'Ayar anahtarı (örn: site_name, site_email)',
|
||||
'value' => 'Değer',
|
||||
'value_helper' => 'Ayar değeri',
|
||||
'type' => 'Tip',
|
||||
'type_helper' => 'Değer tipi',
|
||||
'group' => 'Grup',
|
||||
'group_helper' => 'Ayar grubu (örn: general, email, seo)',
|
||||
'label' => 'Etiket',
|
||||
'label_helper' => 'Kullanıcı dostu etiket',
|
||||
'description' => 'Açıklama',
|
||||
'description_helper' => 'Ayar açıklaması',
|
||||
'is_public' => 'Herkese Açık',
|
||||
'is_public_helper' => 'Bu ayar herkese açık mı?',
|
||||
'is_active' => 'Aktif',
|
||||
'is_active_helper' => 'Bu ayar aktif mi?',
|
||||
|
||||
// Messages
|
||||
'created_successfully' => 'Ayar başarıyla oluşturuldu.',
|
||||
'updated_successfully' => 'Ayar başarıyla güncellendi.',
|
||||
'deleted_successfully' => 'Ayar başarıyla silindi.',
|
||||
'restored_successfully' => 'Ayar başarıyla geri yüklendi.',
|
||||
'force_deleted_successfully' => 'Ayar kalıcı olarak silindi.',
|
||||
|
||||
// Table columns
|
||||
'table_key' => 'Anahtar',
|
||||
'table_value' => 'Değer',
|
||||
'table_type' => 'Tip',
|
||||
'table_group' => 'Grup',
|
||||
'table_label' => 'Etiket',
|
||||
'table_public' => 'Herkese Açık',
|
||||
'table_active' => 'Aktif',
|
||||
'table_created_at' => 'Oluşturulma',
|
||||
'table_updated_at' => 'Güncellenme',
|
||||
|
||||
// Types
|
||||
'type_string' => 'Metin',
|
||||
'type_text' => 'Uzun Metin',
|
||||
'type_boolean' => 'Evet/Hayır',
|
||||
'type_integer' => 'Tam Sayı',
|
||||
'type_float' => 'Ondalıklı Sayı',
|
||||
'type_array' => 'Dizi',
|
||||
'type_json' => 'JSON',
|
||||
|
||||
// Groups
|
||||
'group_general' => 'Genel',
|
||||
'group_email' => 'E-posta',
|
||||
'group_seo' => 'SEO',
|
||||
'group_social' => 'Sosyal Medya',
|
||||
'group_security' => 'Güvenlik',
|
||||
'group_payment' => 'Ödeme',
|
||||
'group_notification' => 'Bildirim',
|
||||
'group_other' => 'Diğer',
|
||||
|
||||
// Validation messages
|
||||
'key_required' => 'Anahtar alanı zorunludur.',
|
||||
'key_unique' => 'Bu anahtar zaten kullanılıyor.',
|
||||
'key_regex' => 'Anahtar sadece harf, rakam, alt çizgi ve tire içerebilir.',
|
||||
'value_required' => 'Değer alanı zorunludur.',
|
||||
'type_required' => 'Tip alanı zorunludur.',
|
||||
'label_required' => 'Etiket alanı zorunludur.',
|
||||
|
||||
// Filters
|
||||
'filter_group' => 'Gruba Göre',
|
||||
'filter_type' => 'Tipe Göre',
|
||||
'filter_active' => 'Aktif',
|
||||
'filter_public' => 'Herkese Açık',
|
||||
];
|
||||
|
||||
Generated
+2307
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Creator: CorelDRAW X7 -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1100px" height="1572px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
|
||||
viewBox="0 0 1100 1571"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.fil1 {fill:#FEFEFE}
|
||||
.fil0 {fill:#FEFEFE;fill-rule:nonzero}
|
||||
]]>
|
||||
</style>
|
||||
</defs>
|
||||
<g id="Layer_x0020_1">
|
||||
<metadata id="CorelCorpID_0Corel-Layer"/>
|
||||
<g id="_2301881982320">
|
||||
<g>
|
||||
<path class="fil0" d="M114 1461l30 -30 0 17 26 0 0 14 -26 0 0 40c0,10 4,14 12,14 6,0 12,-2 18,-5l0 15c-6,3 -13,5 -20,5 -8,0 -14,-2 -19,-7 -1,-1 -3,-2 -4,-4 -1,-2 -1,-4 -2,-6 -1,-3 -1,-8 -1,-15l0 -37 -14 0 0 -1zm128 29l-58 0c1,8 3,14 8,19 5,4 11,7 19,7 10,0 20,-4 29,-10l0 16c-5,3 -10,5 -15,7 -5,1 -10,2 -17,2 -9,0 -16,-2 -22,-6 -5,-4 -10,-9 -13,-15 -3,-6 -5,-14 -5,-22 0,-12 3,-23 11,-30 7,-8 16,-12 27,-12 11,0 19,4 26,11 6,8 10,18 10,31l0 2zm-58 -10l42 0c-1,-6 -3,-11 -6,-15 -4,-3 -8,-5 -14,-5 -6,0 -11,2 -14,5 -4,4 -6,9 -8,15zm114 -32l20 0 -35 40 42 41 -22 0 -41 -41 36 -40zm-53 -43l16 0 0 124 -16 0 0 -124zm90 43l0 10c7,-8 15,-12 24,-12 5,0 10,1 15,4 4,3 7,6 10,11 2,4 3,12 3,22l0 46 -16 0 0 -46c0,-9 -1,-15 -4,-18 -3,-4 -7,-6 -13,-6 -7,0 -14,4 -19,12l0 58 -17 0 0 -81 17 0zm100 0c12,0 23,4 31,12 8,8 12,18 12,30 0,12 -4,21 -12,29 -9,8 -19,12 -32,12 -12,0 -22,-4 -31,-12 -8,-8 -12,-18 -12,-30 0,-12 4,-21 12,-29 9,-8 19,-12 32,-12zm-1 14c-8,0 -14,3 -19,8 -5,5 -8,11 -8,19 0,8 3,14 8,19 5,5 12,8 20,8 8,0 14,-3 19,-8 5,-5 8,-11 8,-19 0,-8 -3,-14 -8,-19 -5,-5 -12,-8 -20,-8zm49 -57l16 0 0 124 -16 0 0 -124zm64 43c13,0 23,4 31,12 9,8 13,18 13,30 0,12 -4,21 -13,29 -8,8 -19,12 -31,12 -13,0 -23,-4 -31,-12 -8,-8 -12,-18 -12,-30 0,-12 4,-21 12,-29 8,-8 19,-12 31,-12zm0 14c-8,0 -15,3 -20,8 -5,5 -7,11 -7,19 0,8 3,14 8,19 5,5 11,8 19,8 8,0 15,-3 20,-8 5,-5 7,-11 7,-19 0,-8 -2,-14 -8,-19 -5,-5 -11,-8 -19,-8zm55 -49c3,0 5,1 7,3 2,2 3,4 3,7 0,3 -1,5 -3,7 -1,2 -4,2 -6,2 -3,0 -5,0 -7,-2 -2,-2 -3,-5 -3,-7 0,-3 1,-5 3,-7 2,-2 4,-3 6,-3zm-7 35l16 0 0 93c0,14 -6,24 -16,30l-12 -11c3,-2 6,-4 8,-7 3,-4 4,-7 4,-12l0 -93zm34 -35c3,0 5,1 7,3 2,2 3,4 3,7 0,2 -1,5 -3,7 -2,2 -4,2 -7,2 -2,0 -4,0 -6,-2 -2,-2 -3,-5 -3,-7 0,-3 1,-5 3,-7 2,-2 4,-3 6,-3zm-8 35l17 0 0 81 -17 0 0 -81z"/>
|
||||
<path class="fil0" d="M0 1060l314 0 0 43 -153 0 0 290 -47 0 0 -290 -114 0 0 -43zm232 114l0 50 3 -4c21,-33 42,-46 63,-46 16,0 33,4 51,21l-23 38c-15,-15 -29,-22 -42,-22 -14,0 -26,7 -36,20 -10,13 -16,29 -16,47l0 115 -43 0 0 -219 43 0zm222 219l0 -28c-9,10 -20,18 -32,23 -12,6 -23,8 -35,8 -14,0 -26,-3 -38,-10 -12,-7 -21,-16 -26,-28 -6,-12 -9,-31 -9,-59l0 -125 43 0 0 125c0,23 3,39 10,48 6,9 18,13 34,13 21,0 38,-10 53,-30l0 -156 43 0 0 219 -43 0zm44 -219l0 28c19,-21 41,-28 66,-28 13,0 26,-1 38,6 11,7 20,17 26,29 6,13 10,32 10,59l0 125 -44 0 0 -125c0,-22 -3,-38 -10,-48 -7,-9 -18,-14 -34,-14 -21,0 -38,10 -52,31l0 156 -44 0 0 -219 44 0zm247 222l-1 4c9,2 15,6 20,12 5,6 7,13 7,20 0,12 -4,23 -14,31 -10,8 -25,13 -46,13 -6,0 -11,-1 -16,-1l0 -27c8,0 13,1 15,1 9,0 17,-2 22,-6 3,-2 4,-4 4,-8 0,-4 -2,-7 -5,-9 -3,-3 -9,-4 -18,-4 -1,0 -3,0 -5,1l10 -29c-20,-5 -39,-16 -56,-33 -17,-17 -26,-42 -26,-76 0,-35 10,-63 30,-84 20,-21 46,-27 78,-27 29,0 35,-2 63,11l0 46c-22,-14 -42,-21 -60,-21 -20,0 -36,7 -48,21 -13,13 -19,31 -19,52 0,22 7,40 20,53 14,13 32,20 55,20 16,0 36,-5 57,-14l0 42c-22,8 -43,12 -64,12l-3 0z"/>
|
||||
<path class="fil0" d="M810 1250c0,-24 9,-42 26,-56 17,-13 40,-20 69,-20l90 0 0 34 -44 0c9,9 15,16 18,24 3,7 5,15 5,24 0,11 -3,23 -10,34 -6,11 -15,19 -25,25 -10,6 -27,10 -50,14 -16,2 -24,8 -24,17 0,5 3,9 9,12 6,4 17,7 33,10 27,6 44,11 52,14 7,3 14,8 20,14 11,11 16,24 16,40 0,21 -9,37 -28,49 -18,13 -43,19 -74,19 -31,0 -56,-6 -74,-19 -19,-12 -28,-29 -28,-50 0,-29 18,-48 55,-57 -15,-9 -22,-18 -22,-28 0,-7 3,-13 9,-19 6,-5 15,-10 25,-12 -32,-15 -48,-38 -48,-69zm81 -38c-11,0 -21,4 -29,12 -9,7 -13,17 -13,28 0,11 4,21 12,28 8,7 19,11 31,11 12,0 1,-4 9,-11 8,-8 12,-17 12,-28 0,-12 -4,-21 -12,-29 -9,-8 3,-11 -10,-11zm-10 191c-14,0 -26,3 -36,9 -9,6 -13,14 -13,24 0,22 20,34 60,34 20,0 34,-3 45,-9 10,-6 16,-13 16,-24 0,-10 -7,-18 -20,-25 -14,-6 -31,-9 -52,-9zm130 -321c8,0 14,3 19,8 5,4 7,10 7,18 0,7 -2,13 -7,18 -5,5 -11,7 -19,7 -6,0 -12,-2 -17,-7 -5,-6 -8,-12 -8,-18 0,-7 3,-13 8,-18 5,-5 11,-8 17,-8zm-21 92l43 0 0 219 -43 0 0 -219zm67 -113l43 0 0 332 -43 0 0 -332z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="fil1" d="M595 765c-79,-165 -156,-328 -234,-494 -173,-246 -478,33 -314,242 152,120 278,225 430,345 78,-15 109,-52 118,-93z"/>
|
||||
<path class="fil1" d="M724 725c-15,-137 -61,-409 -66,-511 -24,-346 -411,-236 -266,67 76,151 133,318 217,479 47,13 105,-8 115,-35z"/>
|
||||
<path class="fil1" d="M832 739c32,-134 83,-324 112,-422 25,-231 -230,-332 -258,-190 -5,53 2,134 13,228 12,113 31,241 40,365 26,35 73,38 93,19z"/>
|
||||
<path class="fil1" d="M920 815l157 -227c70,-121 -39,-406 -100,-241 -5,9 -109,330 -130,394 1,65 54,85 73,74z"/>
|
||||
<path class="fil1" d="M606 771c52,7 106,-2 126,-42 30,40 84,40 105,17 -1,50 24,79 71,86 -22,34 -61,74 -81,10 -22,108 -43,180 -64,289 -23,11 -41,13 -64,0 -12,-101 -25,-166 -37,-267 -40,74 -100,69 -173,3 20,-9 97,-12 117,-96z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Creator: CorelDRAW X7 -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1100px" height="1572px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
|
||||
viewBox="0 0 1100 1571"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.fil4 {fill:#2B2A29}
|
||||
.fil3 {fill:#E84F28}
|
||||
.fil2 {fill:#E31E24}
|
||||
.fil1 {fill:#434242;fill-rule:nonzero}
|
||||
.fil0 {fill:#2B2A29;fill-rule:nonzero}
|
||||
]]>
|
||||
</style>
|
||||
</defs>
|
||||
<g id="Layer_x0020_1">
|
||||
<metadata id="CorelCorpID_0Corel-Layer"/>
|
||||
<g id="_2301880119328">
|
||||
<g>
|
||||
<path class="fil0" d="M114 1461l30 -30 0 17 26 0 0 14 -26 0 0 40c0,10 4,14 12,14 6,0 12,-2 18,-5l0 15c-6,3 -13,5 -20,5 -8,0 -14,-2 -19,-7 -1,-1 -3,-2 -4,-4 -1,-2 -1,-4 -2,-6 -1,-3 -1,-8 -1,-15l0 -37 -14 0 0 -1zm128 29l-58 0c1,8 3,14 8,19 5,4 11,7 19,7 10,0 20,-4 29,-10l0 16c-5,3 -10,5 -15,7 -5,1 -10,2 -17,2 -9,0 -16,-2 -22,-6 -5,-4 -10,-9 -13,-15 -3,-6 -5,-14 -5,-22 0,-12 3,-23 11,-30 7,-8 16,-12 27,-12 11,0 19,4 26,11 6,8 10,18 10,31l0 2zm-58 -10l42 0c-1,-6 -3,-11 -6,-15 -4,-3 -8,-5 -14,-5 -6,0 -11,2 -14,5 -4,4 -6,9 -8,15zm114 -32l20 0 -35 40 42 41 -22 0 -41 -41 36 -40zm-53 -43l16 0 0 124 -16 0 0 -124zm90 43l0 10c7,-8 15,-12 24,-12 5,0 10,1 15,4 4,3 7,6 10,11 2,4 3,12 3,22l0 46 -16 0 0 -46c0,-9 -1,-15 -4,-18 -3,-4 -7,-6 -13,-6 -7,0 -14,4 -19,12l0 58 -17 0 0 -81 17 0zm100 0c12,0 23,4 31,12 8,8 12,18 12,30 0,12 -4,21 -12,29 -9,8 -19,12 -32,12 -12,0 -22,-4 -31,-12 -8,-8 -12,-18 -12,-30 0,-12 4,-21 12,-29 9,-8 19,-12 32,-12zm-1 14c-8,0 -14,3 -19,8 -5,5 -8,11 -8,19 0,8 3,14 8,19 5,5 12,8 20,8 8,0 14,-3 19,-8 5,-5 8,-11 8,-19 0,-8 -3,-14 -8,-19 -5,-5 -12,-8 -20,-8zm49 -57l16 0 0 124 -16 0 0 -124zm64 43c13,0 23,4 31,12 9,8 13,18 13,30 0,12 -4,21 -13,29 -8,8 -19,12 -31,12 -13,0 -23,-4 -31,-12 -8,-8 -12,-18 -12,-30 0,-12 4,-21 12,-29 8,-8 19,-12 31,-12zm0 14c-8,0 -15,3 -20,8 -5,5 -7,11 -7,19 0,8 3,14 8,19 5,5 11,8 19,8 8,0 15,-3 20,-8 5,-5 7,-11 7,-19 0,-8 -2,-14 -8,-19 -5,-5 -11,-8 -19,-8zm55 -49c3,0 5,1 7,3 2,2 3,4 3,7 0,3 -1,5 -3,7 -1,2 -4,2 -6,2 -3,0 -5,0 -7,-2 -2,-2 -3,-5 -3,-7 0,-3 1,-5 3,-7 2,-2 4,-3 6,-3zm-7 35l16 0 0 93c0,14 -6,24 -16,30l-12 -11c3,-2 6,-4 8,-7 3,-4 4,-7 4,-12l0 -93zm34 -35c3,0 5,1 7,3 2,2 3,4 3,7 0,2 -1,5 -3,7 -2,2 -4,2 -7,2 -2,0 -4,0 -6,-2 -2,-2 -3,-5 -3,-7 0,-3 1,-5 3,-7 2,-2 4,-3 6,-3zm-8 35l17 0 0 81 -17 0 0 -81z"/>
|
||||
<path class="fil0" d="M0 1060l314 0 0 43 -153 0 0 290 -47 0 0 -290 -114 0 0 -43zm232 114l0 50 3 -4c21,-33 42,-46 63,-46 16,0 33,4 51,21l-23 38c-15,-15 -29,-22 -42,-22 -14,0 -26,7 -36,20 -10,13 -16,29 -16,47l0 115 -43 0 0 -219 43 0zm222 219l0 -28c-9,10 -20,18 -32,23 -12,6 -23,8 -35,8 -14,0 -26,-3 -38,-10 -12,-7 -21,-16 -26,-28 -6,-12 -9,-31 -9,-59l0 -125 43 0 0 125c0,23 3,39 10,48 6,9 18,13 34,13 21,0 38,-10 53,-30l0 -156 43 0 0 219 -43 0zm44 -219l0 28c19,-21 41,-28 66,-28 13,0 26,-1 38,6 11,7 20,17 26,29 6,13 10,32 10,59l0 125 -44 0 0 -125c0,-22 -3,-38 -10,-48 -7,-9 -18,-14 -34,-14 -21,0 -38,10 -52,31l0 156 -44 0 0 -219 44 0zm247 222l-1 4c9,2 15,6 20,12 5,6 7,13 7,20 0,12 -4,23 -14,31 -10,8 -25,13 -46,13 -6,0 -11,-1 -16,-1l0 -27c8,0 13,1 15,1 9,0 17,-2 22,-6 3,-2 4,-4 4,-8 0,-4 -2,-7 -5,-9 -3,-3 -9,-4 -18,-4 -1,0 -3,0 -5,1l10 -29c-20,-5 -39,-16 -56,-33 -17,-17 -26,-42 -26,-76 0,-35 10,-63 30,-84 20,-21 46,-27 78,-27 29,0 35,-2 63,11l0 46c-22,-14 -42,-21 -60,-21 -20,0 -36,7 -48,21 -13,13 -19,31 -19,52 0,22 7,40 20,53 14,13 32,20 55,20 16,0 36,-5 57,-14l0 42c-22,8 -43,12 -64,12l-3 0z"/>
|
||||
<path class="fil1" d="M810 1250c0,-24 9,-42 26,-56 17,-13 40,-20 69,-20l90 0 0 34 -44 0c9,9 15,16 18,24 3,7 5,15 5,24 0,11 -3,23 -10,34 -6,11 -15,19 -25,25 -10,6 -27,10 -50,14 -16,2 -24,8 -24,17 0,5 3,9 9,12 6,4 17,7 33,10 27,6 44,11 52,14 7,3 14,8 20,14 11,11 16,24 16,40 0,21 -9,37 -28,49 -18,13 -43,19 -74,19 -31,0 -56,-6 -74,-19 -19,-12 -28,-29 -28,-50 0,-29 18,-48 55,-57 -15,-9 -22,-18 -22,-28 0,-7 3,-13 9,-19 6,-5 15,-10 25,-12 -32,-15 -48,-38 -48,-69zm81 -38c-11,0 -21,4 -29,12 -9,7 -13,17 -13,28 0,11 4,21 12,28 8,7 19,11 31,11 12,0 1,-4 9,-11 8,-8 12,-17 12,-28 0,-12 -4,-21 -12,-29 -9,-8 3,-11 -10,-11zm-10 191c-14,0 -26,3 -36,9 -9,6 -13,14 -13,24 0,22 20,34 60,34 20,0 34,-3 45,-9 10,-6 16,-13 16,-24 0,-10 -7,-18 -20,-25 -14,-6 -31,-9 -52,-9zm130 -321c8,0 14,3 19,8 5,4 7,10 7,18 0,7 -2,13 -7,18 -5,5 -11,7 -19,7 -6,0 -12,-2 -17,-7 -5,-6 -8,-12 -8,-18 0,-7 3,-13 8,-18 5,-5 11,-8 17,-8zm-21 92l43 0 0 219 -43 0 0 -219zm67 -113l43 0 0 332 -43 0 0 -332z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="fil2" d="M595 765c-79,-165 -156,-328 -234,-494 -173,-246 -478,33 -314,242 152,120 278,225 430,345 78,-15 109,-52 118,-93z"/>
|
||||
<path class="fil2" d="M724 725c-15,-137 -61,-409 -66,-511 -24,-346 -411,-236 -266,67 76,151 133,318 217,479 47,13 105,-8 115,-35z"/>
|
||||
<path class="fil3" d="M832 739c32,-134 83,-324 112,-422 25,-231 -230,-332 -258,-190 -5,53 2,134 13,228 12,113 31,241 40,365 26,35 73,38 93,19z"/>
|
||||
<path class="fil3" d="M920 815l157 -227c70,-121 -39,-406 -100,-241 -5,9 -109,330 -130,394 1,65 54,85 73,74z"/>
|
||||
<path class="fil4" d="M606 771c52,7 106,-2 126,-42 30,40 84,40 105,17 -1,50 24,79 71,86 -22,34 -61,74 -81,10 -22,108 -43,180 -64,289 -23,11 -41,13 -64,0 -12,-101 -25,-166 -37,-267 -40,74 -100,69 -173,3 20,-9 97,-12 117,-96z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Creator: CorelDRAW (OEM Sürümü) -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="416.782mm" height="135.264mm" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
|
||||
viewBox="0 0 66870.69 21702.46"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.fil1 {fill:#FEFEFE}
|
||||
.fil0 {fill:#FEFEFE;fill-rule:nonzero}
|
||||
]]>
|
||||
</style>
|
||||
</defs>
|
||||
<g id="Katman_x0020_1">
|
||||
<metadata id="CorelCorpID_0Corel-Layer"/>
|
||||
<g id="_1520962485408">
|
||||
<g id="_2301880134432">
|
||||
<g>
|
||||
<path class="fil0" d="M24971.45 16984.71l1315.99 -1231.08 0 721.67 1103.73 0 0 594.32 -1103.73 0 0 1698.04c0,382.07 169.8,594.32 509.41,594.32 212.25,0 466.96,-84.91 764.12,-254.71l0 636.77c-254.71,169.8 -551.87,254.71 -849.03,254.71 -339.61,0 -594.32,-84.91 -806.57,-297.16 -84.91,-42.45 -127.36,-127.36 -169.8,-169.8 -42.45,-84.91 -84.91,-169.8 -84.91,-297.16 -42.45,-84.91 -42.45,-297.16 -42.45,-636.77l0 -1528.24 -636.76 0 0 -84.91zm5433.75 1273.53l-2419.71 0c0,297.16 127.36,594.32 339.61,764.12 212.25,212.25 466.96,297.16 764.12,297.16 466.96,0 891.48,-127.36 1273.53,-382.07l0 636.77c-212.25,169.8 -424.51,254.71 -636.76,297.16 -212.25,84.91 -424.51,127.36 -721.67,127.36 -382.05,0 -679.21,-84.91 -933.92,-254.71 -212.25,-169.8 -424.51,-382.07 -551.87,-636.77 -169.8,-297.16 -212.25,-594.32 -212.25,-933.92 0,-551.87 127.36,-976.37 424.51,-1315.99 297.16,-297.16 679.21,-466.96 1188.63,-466.96 466.96,0 806.57,127.36 1103.73,466.96 254.71,339.61 382.07,764.12 382.07,1315.99l0 84.91 -0.03 -0.02zm-2419.72 -424.51l1740.49 0c0,-297.16 -84.91,-509.41 -212.25,-636.77 -169.8,-169.8 -339.61,-212.25 -594.32,-212.25 -254.71,0 -466.96,42.45 -594.32,212.25 -169.8,127.36 -297.16,339.61 -339.61,636.77l0.02 0zm4839.43 -1358.44l806.57 0 -1443.33 1655.6 1782.93 1782.95 -933.9 0 -1740.49 -1740.49 1528.24 -1698.04 -0.02 -0.02zm-2249.91 -1825.4l679.21 0 0 5263.93 -679.21 0 0 -5263.93zm3820.59 1825.4l0 424.51c297.16,-339.61 636.77,-509.41 1018.83,-509.41 212.25,0 424.51,42.45 594.32,169.8 212.25,84.91 339.61,254.71 424.51,466.96 127.36,169.8 169.8,466.96 169.8,891.48l0 1995.2 -679.21 0 0 -1952.75c0,-382.07 -84.91,-636.77 -169.8,-764.12 -127.36,-169.8 -297.16,-254.71 -551.87,-254.71 -339.61,0 -594.32,169.8 -806.57,509.41l0 2462.16 -721.67 0 0 -3438.55 721.67 0 0 0.02zm4245.12 -42.45c509.41,0 933.92,169.8 1315.99,509.41 339.61,339.61 509.41,764.12 509.41,1315.99 0,466.96 -169.8,891.48 -551.87,1231.08 -339.61,339.61 -764.12,509.41 -1315.99,509.41 -509.41,0 -976.37,-169.8 -1315.99,-509.41 -339.61,-339.61 -509.41,-764.12 -509.41,-1273.53 0,-509.41 169.8,-933.92 509.41,-1273.53 382.07,-339.61 806.57,-509.41 1358.44,-509.41zm-42.45 636.77c-339.61,0 -594.32,84.91 -806.57,339.61 -212.25,212.25 -339.61,466.96 -339.61,806.57 0,339.61 127.36,594.32 339.61,806.57 212.25,212.25 466.96,339.61 806.57,339.61 339.61,0 636.77,-127.36 849.03,-339.61 212.25,-212.25 339.61,-466.96 339.61,-806.57 0,-339.61 -127.36,-594.32 -339.61,-806.57 -254.71,-254.71 -509.41,-339.61 -849.03,-339.61zm2037.65 -2419.72l721.67 0 0 5263.93 -721.67 0 0 -5263.93zm2759.32 1782.95c551.87,0 976.37,169.8 1315.99,509.41 382.07,339.61 551.87,764.12 551.87,1315.99 0,466.96 -212.25,891.48 -551.87,1231.08 -339.61,339.61 -806.57,509.41 -1315.99,509.41 -551.87,0 -976.37,-169.8 -1315.99,-509.41 -339.61,-339.61 -551.87,-764.12 -551.87,-1273.53 0,-509.41 212.25,-933.92 551.87,-1273.53 339.61,-339.61 806.57,-509.41 1315.99,-509.41zm-42.45 636.77c-297.16,0 -594.32,84.91 -806.57,339.61 -212.25,212.25 -297.16,466.96 -297.16,806.57 0,339.61 84.91,594.32 297.16,806.57 254.71,212.25 509.41,339.61 849.03,339.61 339.61,0 636.77,-127.36 849.03,-339.61 212.25,-212.25 297.16,-466.96 297.16,-806.57 0,-339.61 -84.91,-594.32 -339.61,-806.57 -212.25,-254.71 -509.41,-339.61 -849.03,-339.61zm2377.27 -2080.11c127.36,0 212.25,42.45 297.16,127.36 84.91,84.91 127.36,169.8 127.36,297.16 0,84.91 -42.45,212.25 -127.36,254.71 -84.91,84.91 -169.8,127.36 -297.16,127.36 -84.91,0 -169.8,-42.45 -254.71,-127.36 -84.91,-84.91 -127.36,-169.8 -127.36,-254.71 0,-127.36 42.45,-212.25 127.36,-297.16 84.91,-84.91 169.8,-127.36 254.71,-127.36zm-297.16 1485.79l679.21 0 0 3947.96c0,594.32 -254.71,1018.83 -679.21,1273.53l-551.87 -509.41c169.8,-42.45 297.16,-127.36 382.07,-297.16 127.36,-127.36 169.8,-297.16 169.8,-466.96l0 -3947.96zm1443.33 -1485.79c127.36,0 212.25,42.45 297.16,127.36 84.91,84.91 127.36,169.8 127.36,297.16 0,84.91 -42.45,169.8 -127.36,254.71 -84.91,84.91 -169.8,127.36 -297.16,127.36 -84.91,0 -212.25,-42.45 -254.71,-127.36 -84.91,-84.91 -127.36,-169.8 -127.36,-254.71 0,-127.36 42.45,-212.25 127.36,-297.16 42.45,-84.91 169.8,-127.36 254.71,-127.36zm-339.6 1485.79l679.21 0 0 3438.55 -679.21 0 0 -3438.55z"/>
|
||||
<path class="fil0" d="M20174.48 4.28l13287.21 0 0 1782.95 -6452.58 0 0 12310.82 -2037.65 0 0 -12310.82 -4796.97 0 0 -1782.95zm9848.66 4839.43l0 2122.56 127.36 -169.8c891.48,-1400.9 1740.49,-1952.75 2631.98,-1952.75 721.67,0 1443.32,169.8 2165,849.03l-933.92 1613.15c-636.74,-594.32 -1231.06,-891.48 -1782.93,-891.48 -594.32,0 -1103.73,297.16 -1528.24,849.03 -466.96,551.87 -679.21,1231.08 -679.21,1995.2l0 4839.41 -1825.4 0 0 -9254.34 1825.4 0 -0.03 -0.02zm9424.13 9254.32l0 -1146.19c-424.51,382.07 -849.03,721.67 -1358.44,976.37 -509.41,212.25 -976.37,339.61 -1485.79,339.61 -594.32,0 -1146.17,-127.36 -1613.15,-424.51 -509.41,-297.16 -891.47,-679.21 -1146.17,-1188.63 -254.69,-509.41 -382.04,-1358.44 -382.04,-2504.6l0 -5306.39 1867.84 0 0 5306.39c0,933.92 127.36,1655.59 424.51,2037.64 254.71,382.07 764.12,551.87 1443.33,551.87 891.48,0 1613.15,-424.51 2249.91,-1273.53l0 -6622.36 1825.4 0 0 9254.34 -1825.4 0 0 -0.02zm1867.85 -9254.32l0 1188.63c806.57,-933.92 1740.49,-1188.63 2801.77,-1188.63 551.87,0 1103.73,-42.45 1570.69,254.71 509.41,297.16 891.48,721.67 1146.19,1231.08 254.71,509.41 382.07,1358.44 382.07,2462.16l0 5306.37 -1825.4 0 0 -5263.92c0,-976.37 -127.36,-1613.15 -424.51,-2037.65 -297.16,-424.51 -764.12,-594.32 -1443.33,-594.32 -891.47,0 -1613.15,424.51 -2207.45,1273.53l0 6622.36 -1867.85 0 0 -9254.34 1867.85 0 -0.03 0.02zm10485.43 9424.13l-42.45 169.8c382.07,84.91 636.77,254.71 849.03,509.41 212.25,254.71 297.16,551.87 297.16,849.03 0,509.41 -169.8,933.92 -594.32,1315.99 -424.51,339.61 -1061.28,509.41 -1952.75,509.41 -254.71,0 -466.96,0 -679.21,-42.45l0 -1146.19c339.61,42.45 551.87,42.45 636.77,42.45 382.07,0 679.21,-42.45 891.48,-212.25 127.36,-84.91 212.25,-212.25 212.25,-339.61 0,-169.8 -84.91,-297.16 -212.25,-382.07 -127.36,-127.36 -382.05,-169.8 -764.12,-169.8 -84.91,0 -127.36,0 -212.25,0l424.51 -1231.08c-849.03,-169.8 -1655.59,-636.77 -2377.27,-1358.44 -721.67,-721.67 -1103.73,-1825.39 -1103.73,-3268.72 0,-1443.33 424.51,-2631.98 1273.53,-3523.44 849.03,-891.48 1952.75,-1146.19 3311.19,-1146.19 1231.08,0 1485.79,-84.91 2674.43,466.96l0 1952.75c-933.92,-594.32 -1782.95,-891.48 -2589.52,-891.48 -806.57,0 -1485.79,297.16 -2037.65,849.03 -509.41,594.32 -764.12,1358.44 -764.12,2249.91 0,933.92 254.71,1698.04 849.03,2249.89 594.32,551.87 1358.44,849.03 2334.81,849.03 679.21,0 1485.79,-212.25 2419.72,-636.77l0 1825.4c-933.92,339.61 -1825.4,509.41 -2716.87,509.41l-127.36 0 -0.03 0.03z"/>
|
||||
<path class="fil0" d="M54559.87 8027.54c0,-976.37 382.07,-1740.49 1103.73,-2334.81 721.65,-551.87 1698.02,-849.03 2929.12,-849.03l3820.6 0 0 1443.33 -1867.85 0c382.07,339.61 636.77,679.21 764.12,976.37 127.36,297.16 212.25,679.21 212.25,1061.28 0,466.96 -127.36,933.92 -424.51,1400.9 -254.71,466.96 -636.76,849.03 -1061.28,1103.73 -424.51,212.25 -1146.17,424.49 -2122.56,594.31 -679.21,84.91 -1018.83,339.61 -1018.83,721.67 0,212.25 127.36,382.07 382.07,509.41 254.71,127.36 721.67,297.16 1400.9,424.51 1146.19,254.71 1867.85,466.96 2165.02,594.32 339.61,127.36 636.77,339.61 891.48,594.32 466.96,466.96 679.21,1018.83 679.21,1698.04 0,849.03 -382.05,1570.69 -1188.63,2080.11 -764.12,551.87 -1825.4,806.57 -3141.39,806.57 -1315.99,0 -2377.25,-297.16 -3141.37,-806.57 -806.57,-509.41 -1188.63,-1231.08 -1188.63,-2122.56 0,-1273.53 764.12,-2080.11 2334.8,-2419.72 -636.74,-424.51 -933.9,-806.57 -933.9,-1188.63 0,-297.16 127.36,-551.87 382.07,-806.57 254.71,-254.71 636.76,-424.49 1061.26,-551.85 -1358.43,-594.32 -2037.64,-1570.69 -2037.64,-2929.14l-0.05 0.02zm3438.53 -1613.15c-466.96,0 -891.47,169.8 -1273.53,509.41 -339.61,339.61 -509.41,764.12 -509.41,1231.08 0,466.96 169.8,849.03 509.41,1188.63 339.61,297.16 806.57,466.96 1315.99,466.96 509.41,0 42.45,-169.8 382.07,-509.41 339.61,-297.16 509.41,-721.67 509.41,-1188.63 0,-466.96 -169.8,-891.48 -509.41,-1188.63 -382.05,-339.61 127.36,-509.41 -424.51,-509.41l-0.02 0zm-424.52 8150.6c-594.32,0 -1103.73,127.36 -1528.22,382.07 -382.05,254.71 -551.87,594.32 -551.87,1018.83 0,933.92 849.01,1400.9 2547.05,1400.9 806.57,0 1443.33,-127.36 1910.31,-339.61 424.51,-254.71 679.21,-594.32 679.21,-1018.83 0,-424.51 -297.16,-764.12 -849.03,-1061.28 -594.32,-254.71 -1315.99,-382.07 -2207.45,-382.07zm5518.66 -13626.79c339.61,0 594.32,84.91 806.57,297.16 212.25,212.25 297.16,466.96 297.16,764.12 0,297.16 -84.91,551.87 -297.16,764.12 -212.25,212.25 -466.96,339.61 -806.57,339.61 -254.71,0 -509.41,-127.36 -721.67,-339.61 -212.25,-212.25 -339.61,-466.96 -339.61,-764.12 0,-254.71 127.36,-509.41 339.61,-721.67 212.25,-254.71 466.96,-339.61 721.67,-339.61zm-891.48 3905.51l1825.4 0 0 9254.34 -1825.4 0 0 -9254.34zm2844.23 -4839.43l1825.4 0 0 14093.76 -1825.4 0 0 -14093.76z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="fil1" d="M11344.65 14564.99c-1485.77,-3141.39 -2971.56,-6240.29 -4457.34,-9381.68 -3311.19,-4712.07 -9126.99,594.32 -5985.6,4584.72 2886.68,2292.34 5306.39,4287.55 8193.07,6537.45 1485.79,-254.71 2080.11,-976.37 2249.89,-1740.49l-0.02 0z"/>
|
||||
<path class="fil1" d="M13764.35 13800.87c-254.71,-2631.96 -1146.17,-7768.53 -1231.08,-9721.29 -466.96,-6579.92 -7810.99,-4499.81 -5051.67,1273.53 1443.33,2886.68 2504.61,6028.04 4117.75,9126.97 891.48,212.25 1995.2,-169.8 2165.02,-679.21l-0.02 0z"/>
|
||||
<path class="fil1" d="M15844.46 14055.58c594.32,-2547.07 1570.69,-6155.4 2122.56,-8023.24 466.96,-4414.92 -4372.47,-6325.22 -4881.88,-3608.35 -127.36,1018.83 0,2547.07 212.25,4330.02 254.71,2165.02 594.32,4584.71 764.12,6961.97 509.41,636.77 1400.9,721.67 1782.95,339.61l0 -0.02z"/>
|
||||
<path class="fil1" d="M17500.06 15498.93l3014.03 -4287.55c1315.99,-2334.81 -764.12,-7768.55 -1910.29,-4627.18 -84.91,169.8 -2080.11,6282.75 -2462.16,7513.83 0,1231.08 1018.83,1613.15 1358.44,1400.9l-0.02 0z"/>
|
||||
<path class="fil1" d="M11556.9 14692.35c976.37,127.36 1995.2,-42.45 2377.27,-806.57 594.32,764.12 1613.15,764.12 1995.2,297.16 0,976.37 466.96,1528.24 1358.44,1655.6 -424.51,636.77 -1146.17,1400.9 -1528.24,169.8 -424.51,2080.11 -806.57,3438.55 -1231.08,5518.64 -424.51,212.25 -764.12,254.71 -1231.08,0 -212.25,-1910.31 -466.96,-3141.39 -679.21,-5094.14 -764.12,1400.9 -1910.28,1315.99 -3311.17,84.91 382.07,-169.8 1867.85,-254.71 2249.89,-1825.4l-0.02 0z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Creator: CorelDRAW X7 -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1575px" height="511px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
|
||||
viewBox="0 0 1575 511"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.fil4 {fill:#2B2A29}
|
||||
.fil3 {fill:#E84F28}
|
||||
.fil2 {fill:#E31E24}
|
||||
.fil1 {fill:#434242;fill-rule:nonzero}
|
||||
.fil0 {fill:#2B2A29;fill-rule:nonzero}
|
||||
]]>
|
||||
</style>
|
||||
</defs>
|
||||
<g id="Layer_x0020_1">
|
||||
<metadata id="CorelCorpID_0Corel-Layer"/>
|
||||
<g id="_2301880134432">
|
||||
<g>
|
||||
<path class="fil0" d="M588 400l31 -29 0 17 26 0 0 14 -26 0 0 40c0,9 4,14 12,14 5,0 11,-2 18,-6l0 15c-6,4 -13,6 -20,6 -8,0 -14,-2 -19,-7 -2,-1 -3,-3 -4,-4 -1,-2 -2,-4 -2,-7 -1,-2 -1,-7 -1,-15l0 -36 -15 0 0 -2zm128 30l-57 0c0,7 3,14 8,18 5,5 11,7 18,7 11,0 21,-3 30,-9l0 15c-5,4 -10,6 -15,7 -5,2 -10,3 -17,3 -9,0 -16,-2 -22,-6 -5,-4 -10,-9 -13,-15 -4,-7 -5,-14 -5,-22 0,-13 3,-23 10,-31 7,-7 16,-11 28,-11 11,0 19,3 26,11 6,8 9,18 9,31l0 2zm-57 -10l41 0c0,-7 -2,-12 -5,-15 -4,-4 -8,-5 -14,-5 -6,0 -11,1 -14,5 -4,3 -7,8 -8,15zm114 -32l19 0 -34 39 42 42 -22 0 -41 -41 36 -40zm-53 -43l16 0 0 124 -16 0 0 -124zm90 43l0 10c7,-8 15,-12 24,-12 5,0 10,1 14,4 5,2 8,6 10,11 3,4 4,11 4,21l0 47 -16 0 0 -46c0,-9 -2,-15 -4,-18 -3,-4 -7,-6 -13,-6 -8,0 -14,4 -19,12l0 58 -17 0 0 -81 17 0zm100 -1c12,0 22,4 31,12 8,8 12,18 12,31 0,11 -4,21 -13,29 -8,8 -18,12 -31,12 -12,0 -23,-4 -31,-12 -8,-8 -12,-18 -12,-30 0,-12 4,-22 12,-30 9,-8 19,-12 32,-12zm-1 15c-8,0 -14,2 -19,8 -5,5 -8,11 -8,19 0,8 3,14 8,19 5,5 11,8 19,8 8,0 15,-3 20,-8 5,-5 8,-11 8,-19 0,-8 -3,-14 -8,-19 -6,-6 -12,-8 -20,-8zm48 -57l17 0 0 124 -17 0 0 -124zm65 42c13,0 23,4 31,12 9,8 13,18 13,31 0,11 -5,21 -13,29 -8,8 -19,12 -31,12 -13,0 -23,-4 -31,-12 -8,-8 -13,-18 -13,-30 0,-12 5,-22 13,-30 8,-8 19,-12 31,-12zm-1 15c-7,0 -14,2 -19,8 -5,5 -7,11 -7,19 0,8 2,14 7,19 6,5 12,8 20,8 8,0 15,-3 20,-8 5,-5 7,-11 7,-19 0,-8 -2,-14 -8,-19 -5,-6 -12,-8 -20,-8zm56 -49c3,0 5,1 7,3 2,2 3,4 3,7 0,2 -1,5 -3,6 -2,2 -4,3 -7,3 -2,0 -4,-1 -6,-3 -2,-2 -3,-4 -3,-6 0,-3 1,-5 3,-7 2,-2 4,-3 6,-3zm-7 35l16 0 0 93c0,14 -6,24 -16,30l-13 -12c4,-1 7,-3 9,-7 3,-3 4,-7 4,-11l0 -93zm34 -35c3,0 5,1 7,3 2,2 3,4 3,7 0,2 -1,4 -3,6 -2,2 -4,3 -7,3 -2,0 -5,-1 -6,-3 -2,-2 -3,-4 -3,-6 0,-3 1,-5 3,-7 1,-2 4,-3 6,-3zm-8 35l16 0 0 81 -16 0 0 -81z"/>
|
||||
<path class="fil0" d="M475 0l313 0 0 42 -152 0 0 290 -48 0 0 -290 -113 0 0 -42zm232 114l0 50 3 -4c21,-33 41,-46 62,-46 17,0 34,4 51,20l-22 38c-15,-14 -29,-21 -42,-21 -14,0 -26,7 -36,20 -11,13 -16,29 -16,47l0 114 -43 0 0 -218 43 0zm222 218l0 -27c-10,9 -20,17 -32,23 -12,5 -23,8 -35,8 -14,0 -27,-3 -38,-10 -12,-7 -21,-16 -27,-28 -6,-12 -9,-32 -9,-59l0 -125 44 0 0 125c0,22 3,39 10,48 6,9 18,13 34,13 21,0 38,-10 53,-30l0 -156 43 0 0 218 -43 0zm44 -218l0 28c19,-22 41,-28 66,-28 13,0 26,-1 37,6 12,7 21,17 27,29 6,12 9,32 9,58l0 125 -43 0 0 -124c0,-23 -3,-38 -10,-48 -7,-10 -18,-14 -34,-14 -21,0 -38,10 -52,30l0 156 -44 0 0 -218 44 0zm247 222l-1 4c9,2 15,6 20,12 5,6 7,13 7,20 0,12 -4,22 -14,31 -10,8 -25,12 -46,12 -6,0 -11,0 -16,-1l0 -27c8,1 13,1 15,1 9,0 16,-1 21,-5 3,-2 5,-5 5,-8 0,-4 -2,-7 -5,-9 -3,-3 -9,-4 -18,-4 -2,0 -3,0 -5,0l10 -29c-20,-4 -39,-15 -56,-32 -17,-17 -26,-43 -26,-77 0,-34 10,-62 30,-83 20,-21 46,-27 78,-27 29,0 35,-2 63,11l0 46c-22,-14 -42,-21 -61,-21 -19,0 -35,7 -48,20 -12,14 -18,32 -18,53 0,22 6,40 20,53 14,13 32,20 55,20 16,0 35,-5 57,-15l0 43c-22,8 -43,12 -64,12l-3 0z"/>
|
||||
<path class="fil1" d="M1285 189c0,-23 9,-41 26,-55 17,-13 40,-20 69,-20l90 0 0 34 -44 0c9,8 15,16 18,23 3,7 5,16 5,25 0,11 -3,22 -10,33 -6,11 -15,20 -25,26 -10,5 -27,10 -50,14 -16,2 -24,8 -24,17 0,5 3,9 9,12 6,3 17,7 33,10 27,6 44,11 51,14 8,3 15,8 21,14 11,11 16,24 16,40 0,20 -9,37 -28,49 -18,13 -43,19 -74,19 -31,0 -56,-7 -74,-19 -19,-12 -28,-29 -28,-50 0,-30 18,-49 55,-57 -15,-10 -22,-19 -22,-28 0,-7 3,-13 9,-19 6,-6 15,-10 25,-13 -32,-14 -48,-37 -48,-69zm81 -38c-11,0 -21,4 -30,12 -8,8 -12,18 -12,29 0,11 4,20 12,28 8,7 19,11 31,11 12,0 1,-4 9,-12 8,-7 12,-17 12,-28 0,-11 -4,-21 -12,-28 -9,-8 3,-12 -10,-12zm-10 192c-14,0 -26,3 -36,9 -9,6 -13,14 -13,24 0,22 20,33 60,33 19,0 34,-3 45,-8 10,-6 16,-14 16,-24 0,-10 -7,-18 -20,-25 -14,-6 -31,-9 -52,-9zm130 -321c8,0 14,2 19,7 5,5 7,11 7,18 0,7 -2,13 -7,18 -5,5 -11,8 -19,8 -6,0 -12,-3 -17,-8 -5,-5 -8,-11 -8,-18 0,-6 3,-12 8,-17 5,-6 11,-8 17,-8zm-21 92l43 0 0 218 -43 0 0 -218zm67 -114l43 0 0 332 -43 0 0 -332z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="fil2" d="M267 343c-35,-74 -70,-147 -105,-221 -78,-111 -215,14 -141,108 68,54 125,101 193,154 35,-6 49,-23 53,-41z"/>
|
||||
<path class="fil2" d="M324 325c-6,-62 -27,-183 -29,-229 -11,-155 -184,-106 -119,30 34,68 59,142 97,215 21,5 47,-4 51,-16z"/>
|
||||
<path class="fil3" d="M373 331c14,-60 37,-145 50,-189 11,-104 -103,-149 -115,-85 -3,24 0,60 5,102 6,51 14,108 18,164 12,15 33,17 42,8z"/>
|
||||
<path class="fil3" d="M412 365l71 -101c31,-55 -18,-183 -45,-109 -2,4 -49,148 -58,177 0,29 24,38 32,33z"/>
|
||||
<path class="fil4" d="M272 346c23,3 47,-1 56,-19 14,18 38,18 47,7 0,23 11,36 32,39 -10,15 -27,33 -36,4 -10,49 -19,81 -29,130 -10,5 -18,6 -29,0 -5,-45 -11,-74 -16,-120 -18,33 -45,31 -78,2 9,-4 44,-6 53,-43z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
+31
-1
@@ -6,8 +6,38 @@
|
||||
@source '../**/*.js';
|
||||
|
||||
@theme {
|
||||
--font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
|
||||
--font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
|
||||
'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
}
|
||||
|
||||
/* Custom Scrollbar */
|
||||
::-webkit-scrollbar {
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
@apply bg-gray-100 dark:bg-gray-800;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
@apply bg-gray-300 dark:bg-gray-600 rounded-full;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
@apply bg-gray-400 dark:bg-gray-500;
|
||||
}
|
||||
|
||||
/* Smooth scroll behavior */
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
/* Line clamp utilities */
|
||||
.line-clamp-2 {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,23 @@
|
||||
import './bootstrap';
|
||||
|
||||
// Dark mode initialization
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Check for saved theme preference or default to 'light'
|
||||
const savedTheme = localStorage.getItem('darkMode');
|
||||
|
||||
if (savedTheme === null) {
|
||||
// If no saved preference, check system preference
|
||||
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
localStorage.setItem('darkMode', prefersDark.toString());
|
||||
}
|
||||
|
||||
// Listen for system theme changes
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
|
||||
if (localStorage.getItem('darkMode') === null) {
|
||||
localStorage.setItem('darkMode', e.matches.toString());
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
<footer class="bg-gray-50 dark:bg-gray-800 border-t border-gray-200 dark:border-gray-700 transition-colors duration-300">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
|
||||
<div class="grid grid-cols-1 md:grid-cols-4 gap-8">
|
||||
<!-- Logo ve Açıklama -->
|
||||
<div class="col-span-1 md:col-span-2">
|
||||
<img src="{{ asset('logos/truncgil-yatay.svg') }}" alt="Trunçgil Teknoloji" class="h-10 mb-4 dark:hidden">
|
||||
<img src="{{ asset('logos/truncgil-yatay-dark.svg') }}" alt="Trunçgil Teknoloji" class="h-10 mb-4 hidden dark:block">
|
||||
<p class="text-gray-600 dark:text-gray-400 mt-4 max-w-md">
|
||||
Trunçgil Teknoloji olarak, yenilikçi ve güvenilir teknoloji çözümleri sunuyoruz.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Hızlı Linkler -->
|
||||
<div>
|
||||
<h3 class="text-sm font-semibold text-gray-900 dark:text-gray-100 uppercase tracking-wider mb-4">
|
||||
Hızlı Linkler
|
||||
</h3>
|
||||
<ul class="space-y-3">
|
||||
@foreach($menuItems->take(4) as $item)
|
||||
<li>
|
||||
<a href="{{ $item->url }}" class="text-gray-600 dark:text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors duration-150">
|
||||
{{ $item->title }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- İletişim -->
|
||||
<div>
|
||||
<h3 class="text-sm font-semibold text-gray-900 dark:text-gray-100 uppercase tracking-wider mb-4">
|
||||
İletişim
|
||||
</h3>
|
||||
<ul class="space-y-3 text-gray-600 dark:text-gray-400">
|
||||
<li class="flex items-start">
|
||||
<svg class="w-5 h-5 mr-2 mt-0.5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path>
|
||||
</svg>
|
||||
<a href="mailto:info@truncgil.com" class="hover:text-red-600 dark:hover:text-red-400 transition-colors duration-150">
|
||||
info@truncgil.com
|
||||
</a>
|
||||
</li>
|
||||
<li class="flex items-start">
|
||||
<svg class="w-5 h-5 mr-2 mt-0.5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"></path>
|
||||
</svg>
|
||||
<span>+90 (XXX) XXX XX XX</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Copyright -->
|
||||
<div class="mt-12 pt-8 border-t border-gray-200 dark:border-gray-700">
|
||||
<p class="text-center text-gray-500 dark:text-gray-400 text-sm">
|
||||
© {{ date('Y') }} Trunçgil Teknoloji. Tüm hakları saklıdır.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
<nav x-data="{ mobileMenuOpen: false }" class="fixed w-full top-0 z-50 bg-white/80 dark:bg-gray-900/80 backdrop-blur-lg border-b border-gray-200 dark:border-gray-800 transition-colors duration-300">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex justify-between items-center h-20">
|
||||
<!-- Logo -->
|
||||
<div class="flex-shrink-0">
|
||||
<a href="{{ route('home') }}" class="flex items-center">
|
||||
<img src="{{ asset('logos/truncgil-yatay.svg') }}" alt="Trunçgil Teknoloji" class="h-10 dark:hidden">
|
||||
<img src="{{ asset('logos/truncgil-yatay-dark.svg') }}" alt="Trunçgil Teknoloji" class="h-10 hidden dark:block">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Desktop Navigation -->
|
||||
<div class="hidden md:flex md:items-center md:space-x-1">
|
||||
@foreach($menuItems as $item)
|
||||
@if($item->children->count() > 0)
|
||||
<!-- Dropdown Menu -->
|
||||
<div x-data="{ open: false }" @mouseenter="open = true" @mouseleave="open = false" class="relative">
|
||||
<button @click="open = !open" class="px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 hover:text-red-600 dark:hover:text-red-400 transition-colors duration-200 flex items-center space-x-1">
|
||||
<span>{{ $item->title }}</span>
|
||||
<svg class="w-4 h-4 transition-transform duration-200" :class="{ 'rotate-180': open }" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<!-- Dropdown Panel -->
|
||||
<div x-show="open"
|
||||
x-transition:enter="transition ease-out duration-200"
|
||||
x-transition:enter-start="opacity-0 translate-y-1"
|
||||
x-transition:enter-end="opacity-100 translate-y-0"
|
||||
x-transition:leave="transition ease-in duration-150"
|
||||
x-transition:leave-start="opacity-100 translate-y-0"
|
||||
x-transition:leave-end="opacity-0 translate-y-1"
|
||||
class="absolute left-0 mt-2 w-56 bg-white dark:bg-gray-800 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 py-2"
|
||||
style="display: none;">
|
||||
@foreach($item->children as $child)
|
||||
<a href="{{ $child->url }}" class="block px-4 py-2 text-sm text-gray-700 dark:text-gray-300 hover:bg-red-50 dark:hover:bg-gray-700 hover:text-red-600 dark:hover:text-red-400 transition-colors duration-150">
|
||||
{{ $child->title }}
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<!-- Single Menu Item -->
|
||||
<a href="{{ $item->url }}" class="px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 hover:text-red-600 dark:hover:text-red-400 transition-colors duration-200">
|
||||
{{ $item->title }}
|
||||
</a>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
<!-- Dark Mode Toggle -->
|
||||
<button @click="darkMode = !darkMode" class="ml-4 p-2 rounded-lg text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors duration-200">
|
||||
<svg x-show="!darkMode" class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path>
|
||||
</svg>
|
||||
<svg x-show="darkMode" class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" style="display: none;">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Mobile menu button -->
|
||||
<div class="flex items-center md:hidden">
|
||||
<!-- Dark Mode Toggle (Mobile) -->
|
||||
<button @click="darkMode = !darkMode" class="mr-2 p-2 rounded-lg text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors duration-200">
|
||||
<svg x-show="!darkMode" class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path>
|
||||
</svg>
|
||||
<svg x-show="darkMode" class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" style="display: none;">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path>
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<button @click="mobileMenuOpen = !mobileMenuOpen" class="p-2 rounded-lg text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors duration-200">
|
||||
<svg x-show="!mobileMenuOpen" class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path>
|
||||
</svg>
|
||||
<svg x-show="mobileMenuOpen" class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" style="display: none;">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Mobile Navigation -->
|
||||
<div x-show="mobileMenuOpen"
|
||||
x-transition:enter="transition ease-out duration-200"
|
||||
x-transition:enter-start="opacity-0 transform -translate-y-2"
|
||||
x-transition:enter-end="opacity-100 transform translate-y-0"
|
||||
x-transition:leave="transition ease-in duration-150"
|
||||
x-transition:leave-start="opacity-100 transform translate-y-0"
|
||||
x-transition:leave-end="opacity-0 transform -translate-y-2"
|
||||
class="md:hidden bg-white dark:bg-gray-800 border-t border-gray-200 dark:border-gray-700"
|
||||
style="display: none;">
|
||||
<div class="px-4 pt-2 pb-4 space-y-1">
|
||||
@foreach($menuItems as $item)
|
||||
@if($item->children->count() > 0)
|
||||
<!-- Mobile Dropdown -->
|
||||
<div x-data="{ open: false }" class="space-y-1">
|
||||
<button @click="open = !open" class="w-full flex items-center justify-between px-3 py-2 text-base font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg transition-colors duration-150">
|
||||
<span>{{ $item->title }}</span>
|
||||
<svg class="w-4 h-4 transition-transform duration-200" :class="{ 'rotate-180': open }" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<div x-show="open" class="pl-4 space-y-1" style="display: none;">
|
||||
@foreach($item->children as $child)
|
||||
<a href="{{ $child->url }}" class="block px-3 py-2 text-sm text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-700 hover:text-red-600 dark:hover:text-red-400 rounded-lg transition-colors duration-150">
|
||||
{{ $child->title }}
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<!-- Single Mobile Menu Item -->
|
||||
<a href="{{ $item->url }}" class="block px-3 py-2 text-base font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg transition-colors duration-150">
|
||||
{{ $item->title }}
|
||||
</a>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Spacer for fixed navigation -->
|
||||
<div class="h-20"></div>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', $page ? ($page->meta_title ?? $page->title) : 'Trunçgil Teknoloji')
|
||||
@section('description', $page ? ($page->meta_description ?? $page->excerpt) : 'Trunçgil Teknoloji - Yenilikçi Çözümler')
|
||||
|
||||
@section('content')
|
||||
|
||||
<!-- Hero Section -->
|
||||
<section class="relative overflow-hidden bg-gradient-to-br from-white via-red-50/30 to-orange-50/20 dark:from-gray-900 dark:via-gray-900 dark:to-gray-800 py-20 lg:py-32">
|
||||
<div class="absolute inset-0 overflow-hidden">
|
||||
<!-- Decorative Elements -->
|
||||
<div class="absolute -top-40 -right-40 w-80 h-80 bg-red-500/10 dark:bg-red-500/5 rounded-full blur-3xl"></div>
|
||||
<div class="absolute -bottom-40 -left-40 w-80 h-80 bg-orange-500/10 dark:bg-orange-500/5 rounded-full blur-3xl"></div>
|
||||
</div>
|
||||
|
||||
<div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
|
||||
<!-- Content -->
|
||||
<div class="text-center lg:text-left" data-aos="fade-right">
|
||||
@if($page)
|
||||
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-gray-900 dark:text-white mb-6 leading-tight">
|
||||
{{ $page->title }}
|
||||
</h1>
|
||||
@if($page->excerpt)
|
||||
<p class="text-lg md:text-xl text-gray-600 dark:text-gray-300 mb-8 leading-relaxed">
|
||||
{{ $page->excerpt }}
|
||||
</p>
|
||||
@endif
|
||||
@else
|
||||
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-gray-900 dark:text-white mb-6 leading-tight">
|
||||
Hoş Geldiniz
|
||||
<span class="block text-transparent bg-clip-text bg-gradient-to-r from-red-600 to-orange-500">
|
||||
Trunçgil Teknoloji
|
||||
</span>
|
||||
</h1>
|
||||
<p class="text-lg md:text-xl text-gray-600 dark:text-gray-300 mb-8 leading-relaxed">
|
||||
Yenilikçi teknoloji çözümleri ile geleceği şekillendiriyoruz
|
||||
</p>
|
||||
@endif
|
||||
|
||||
<div class="flex flex-col sm:flex-row gap-4 justify-center lg:justify-start">
|
||||
<a href="#hakkimizda" class="inline-flex items-center justify-center px-8 py-3 bg-red-600 hover:bg-red-700 text-white font-semibold rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-0.5">
|
||||
Keşfet
|
||||
<svg class="w-5 h-5 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path>
|
||||
</svg>
|
||||
</a>
|
||||
<a href="#iletisim" class="inline-flex items-center justify-center px-8 py-3 bg-white dark:bg-gray-800 text-gray-900 dark:text-white font-semibold rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-0.5 border-2 border-gray-200 dark:border-gray-700">
|
||||
İletişime Geç
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Image/Logo -->
|
||||
<div class="flex justify-center lg:justify-end" data-aos="fade-left">
|
||||
<div class="relative">
|
||||
<div class="absolute inset-0 bg-gradient-to-tr from-red-500/20 to-orange-500/20 rounded-2xl blur-2xl"></div>
|
||||
<img src="{{ asset('logos/truncgil-dikey.svg') }}" alt="Trunçgil Teknoloji" class="relative h-64 md:h-80 lg:h-96 w-auto drop-shadow-2xl dark:hidden">
|
||||
<img src="{{ asset('logos/truncgil-dikey-dark.svg') }}" alt="Trunçgil Teknoloji" class="relative h-64 md:h-80 lg:h-96 w-auto drop-shadow-2xl hidden dark:block">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@if($page && $page->content)
|
||||
<!-- Page Content -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-gray-900">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="prose prose-lg dark:prose-invert max-w-none prose-headings:text-gray-900 dark:prose-headings:text-white prose-p:text-gray-600 dark:prose-p:text-gray-300 prose-a:text-red-600 dark:prose-a:text-red-400">
|
||||
{!! $page->content !!}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endif
|
||||
|
||||
<!-- Features Section -->
|
||||
<section id="hakkimizda" class="py-16 lg:py-24 bg-gray-50 dark:bg-gray-800">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="text-center mb-16" data-aos="fade-up">
|
||||
<h2 class="text-3xl md:text-4xl font-bold text-gray-900 dark:text-white mb-4">
|
||||
Neden Trunçgil Teknoloji?
|
||||
</h2>
|
||||
<p class="text-lg text-gray-600 dark:text-gray-300 max-w-2xl mx-auto">
|
||||
Modern teknolojiler ve uzman ekibimizle projelerinizi hayata geçiriyoruz
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
<!-- Feature 1 -->
|
||||
<div class="bg-white dark:bg-gray-900 rounded-xl p-8 shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1" data-aos="fade-up" data-aos-delay="100">
|
||||
<div class="w-14 h-14 bg-red-100 dark:bg-red-900/30 rounded-lg flex items-center justify-center mb-6">
|
||||
<svg class="w-7 h-7 text-red-600 dark:text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">
|
||||
Hızlı Çözümler
|
||||
</h3>
|
||||
<p class="text-gray-600 dark:text-gray-300">
|
||||
Modern teknolojiler kullanarak projelerinizi hızlı ve verimli bir şekilde hayata geçiriyoruz.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Feature 2 -->
|
||||
<div class="bg-white dark:bg-gray-900 rounded-xl p-8 shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1" data-aos="fade-up" data-aos-delay="200">
|
||||
<div class="w-14 h-14 bg-orange-100 dark:bg-orange-900/30 rounded-lg flex items-center justify-center mb-6">
|
||||
<svg class="w-7 h-7 text-orange-600 dark:text-orange-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">
|
||||
Güvenli Altyapı
|
||||
</h3>
|
||||
<p class="text-gray-600 dark:text-gray-300">
|
||||
En son güvenlik standartlarını kullanarak verilerinizi koruma altına alıyoruz.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Feature 3 -->
|
||||
<div class="bg-white dark:bg-gray-900 rounded-xl p-8 shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1" data-aos="fade-up" data-aos-delay="300">
|
||||
<div class="w-14 h-14 bg-blue-100 dark:bg-blue-900/30 rounded-lg flex items-center justify-center mb-6">
|
||||
<svg class="w-7 h-7 text-blue-600 dark:text-blue-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">
|
||||
Uzman Ekip
|
||||
</h3>
|
||||
<p class="text-gray-600 dark:text-gray-300">
|
||||
Deneyimli ve uzman ekibimiz ile her zaman yanınızdayız.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA Section -->
|
||||
<section id="iletisim" class="py-16 lg:py-24 bg-gradient-to-br from-red-600 to-orange-600 dark:from-red-700 dark:to-orange-700">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center" data-aos="zoom-in">
|
||||
<h2 class="text-3xl md:text-4xl font-bold text-white mb-6">
|
||||
Projenizi Konuşalım
|
||||
</h2>
|
||||
<p class="text-lg text-white/90 mb-8 max-w-2xl mx-auto">
|
||||
Size özel çözümler geliştirmek için iletişime geçin
|
||||
</p>
|
||||
<a href="mailto:info@truncgil.com" class="inline-flex items-center justify-center px-8 py-3 bg-white text-red-600 font-semibold rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-0.5">
|
||||
İletişime Geç
|
||||
<svg class="w-5 h-5 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}" x-data="{ darkMode: localStorage.getItem('darkMode') === 'true' }" x-init="$watch('darkMode', val => localStorage.setItem('darkMode', val))" :class="{ 'dark': darkMode }">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>@yield('title', config('app.name', 'Trunçgil Teknoloji'))</title>
|
||||
<meta name="description" content="@yield('description', 'Trunçgil Teknoloji - Yenilikçi Çözümler')">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.bunny.net">
|
||||
<link href="https://fonts.bunny.net/css?family=inter:300,400,500,600,700,800,900" rel="stylesheet" />
|
||||
|
||||
<!-- Styles / Scripts -->
|
||||
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
||||
|
||||
<!-- Alpine.js for interactions -->
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
|
||||
</head>
|
||||
<body class="font-sans antialiased bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 transition-colors duration-300">
|
||||
|
||||
<!-- Navigation -->
|
||||
@include('components.navigation')
|
||||
|
||||
<!-- Page Content -->
|
||||
<main>
|
||||
@yield('content')
|
||||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
@include('components.footer')
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,103 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', $page->meta_title ?? $page->title)
|
||||
@section('description', $page->meta_description ?? $page->excerpt ?? '')
|
||||
|
||||
@section('content')
|
||||
|
||||
<!-- Page Header -->
|
||||
<section class="relative overflow-hidden bg-gradient-to-br from-white via-red-50/30 to-orange-50/20 dark:from-gray-900 dark:via-gray-900 dark:to-gray-800 py-16 lg:py-24">
|
||||
<div class="absolute inset-0 overflow-hidden">
|
||||
<div class="absolute -top-40 -right-40 w-80 h-80 bg-red-500/10 dark:bg-red-500/5 rounded-full blur-3xl"></div>
|
||||
<div class="absolute -bottom-40 -left-40 w-80 h-80 bg-orange-500/10 dark:bg-orange-500/5 rounded-full blur-3xl"></div>
|
||||
</div>
|
||||
|
||||
<div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="max-w-4xl mx-auto text-center">
|
||||
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-gray-900 dark:text-white mb-6 leading-tight">
|
||||
{{ $page->title }}
|
||||
</h1>
|
||||
|
||||
@if($page->excerpt)
|
||||
<p class="text-lg md:text-xl text-gray-600 dark:text-gray-300 leading-relaxed">
|
||||
{{ $page->excerpt }}
|
||||
</p>
|
||||
@endif
|
||||
|
||||
@if($page->published_at)
|
||||
<div class="mt-6 flex items-center justify-center text-sm text-gray-500 dark:text-gray-400">
|
||||
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
|
||||
</svg>
|
||||
{{ $page->published_at->format('d M Y') }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Page Content -->
|
||||
<section class="py-16 lg:py-24 bg-white dark:bg-gray-900">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
@if($page->featured_image)
|
||||
<div class="mb-12 rounded-xl overflow-hidden shadow-xl">
|
||||
<img src="{{ $page->featured_image_url }}" alt="{{ $page->title }}" class="w-full h-auto">
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="prose prose-lg dark:prose-invert max-w-none
|
||||
prose-headings:text-gray-900 dark:prose-headings:text-white
|
||||
prose-p:text-gray-600 dark:prose-p:text-gray-300
|
||||
prose-a:text-red-600 dark:prose-a:text-red-400 hover:prose-a:text-red-700 dark:hover:prose-a:text-red-300
|
||||
prose-strong:text-gray-900 dark:prose-strong:text-white
|
||||
prose-code:text-red-600 dark:prose-code:text-red-400
|
||||
prose-pre:bg-gray-100 dark:prose-pre:bg-gray-800
|
||||
prose-blockquote:border-red-500 dark:prose-blockquote:border-red-400
|
||||
prose-img:rounded-xl prose-img:shadow-lg">
|
||||
{!! $page->content !!}
|
||||
</div>
|
||||
|
||||
<!-- Child Pages -->
|
||||
@if($page->children->where('status', 'published')->count() > 0)
|
||||
<div class="mt-16 pt-16 border-t border-gray-200 dark:border-gray-700">
|
||||
<h2 class="text-2xl font-bold text-gray-900 dark:text-white mb-8">
|
||||
İlgili Sayfalar
|
||||
</h2>
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
@foreach($page->children->where('status', 'published')->sortBy('sort_order') as $child)
|
||||
<a href="{{ $child->url }}" class="group block p-6 bg-gray-50 dark:bg-gray-800 rounded-lg hover:shadow-lg transition-all duration-300 transform hover:-translate-y-1">
|
||||
<h3 class="text-lg font-semibold text-gray-900 dark:text-white mb-2 group-hover:text-red-600 dark:group-hover:text-red-400 transition-colors">
|
||||
{{ $child->title }}
|
||||
</h3>
|
||||
@if($child->excerpt)
|
||||
<p class="text-gray-600 dark:text-gray-300 text-sm line-clamp-2">
|
||||
{{ $child->excerpt }}
|
||||
</p>
|
||||
@endif
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Navigation Buttons -->
|
||||
<div class="mt-12 pt-8 border-t border-gray-200 dark:border-gray-700 flex justify-between items-center">
|
||||
<a href="{{ route('home') }}" class="inline-flex items-center text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300 transition-colors">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path>
|
||||
</svg>
|
||||
Ana Sayfaya Dön
|
||||
</a>
|
||||
|
||||
@if($page->parent)
|
||||
<a href="{{ $page->parent->url }}" class="inline-flex items-center text-gray-600 dark:text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors">
|
||||
Üst Sayfa
|
||||
<svg class="w-5 h-5 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 10l7-7m0 0l7 7m-7-7v18"></path>
|
||||
</svg>
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\PageController;
|
||||
|
||||
Route::get('/', function () {
|
||||
return view('welcome');
|
||||
});
|
||||
Route::get('/', [PageController::class, 'index'])->name('home');
|
||||
Route::get('/{slug}', [PageController::class, 'show'])->name('page.show');
|
||||
|
||||
Reference in New Issue
Block a user