config project

master
seyedmr 1 year ago
parent a036603c4e
commit 48604158b3
  1. 70
      app/Http/Controllers/Admin/CategoryCrudController.php
  2. 5
      app/Http/Controllers/Admin/DomainsCrudController.php
  3. 22
      app/Http/Controllers/Admin/FoodCrudController.php
  4. 5
      app/Http/Controllers/Admin/UserCrudController.php
  5. 4
      config/app.php
  6. 4
      config/backpack/crud.php
  7. 2
      config/backpack/theme-tabler.php
  8. 12
      config/backpack/ui.php
  9. 36
      database/migrations/2024_08_07_090621_add_columns_to_users_table.php
  10. 28
      database/migrations/2024_08_07_095901_add_restaurant_logo_to_users_table.php
  11. 28
      database/migrations/2024_08_07_100037_add_image_to_foods_table.php
  12. 28
      database/migrations/2024_08_07_102814_add_icon_to_categories_table.php
  13. 28
      database/migrations/2024_08_07_110151_add_unique_username_to_users_table.php
  14. 4
      lang/fa/basic.php
  15. 27
      lang/fa/entities.php
  16. 16
      lang/vendor/backpack/fa/backup.php
  17. 71
      lang/vendor/backpack/fa/base.php
  18. 147
      lang/vendor/backpack/fa/crud.php
  19. 16
      lang/vendor/backpack/fa/langfilemanager.php
  20. 16
      lang/vendor/backpack/fa/logmanager.php
  21. 16
      lang/vendor/backpack/fa/pagemanager.php
  22. 16
      lang/vendor/backpack/fa/permissionmanager.php
  23. 16
      lang/vendor/backpack/fa/settings.php
  24. 152
      public/assets/font-awesome/less/_animated.less
  25. 20
      public/assets/font-awesome/less/_bordered-pulled.less
  26. 36
      public/assets/font-awesome/less/_core.less
  27. 7
      public/assets/font-awesome/less/_fixed-width.less
  28. 9
      public/assets/font-awesome/less/_icons.less
  29. 18
      public/assets/font-awesome/less/_list.less
  30. 78
      public/assets/font-awesome/less/_mixins.less
  31. 31
      public/assets/font-awesome/less/_rotated-flipped.less
  32. 14
      public/assets/font-awesome/less/_screen-reader.less
  33. 2042
      public/assets/font-awesome/less/_shims.less
  34. 19
      public/assets/font-awesome/less/_sizing.less
  35. 31
      public/assets/font-awesome/less/_stacked.less
  36. 5021
      public/assets/font-awesome/less/_variables.less
  37. 29
      public/assets/font-awesome/less/brands.less
  38. 20
      public/assets/font-awesome/less/fontawesome.less
  39. 25
      public/assets/font-awesome/less/regular.less
  40. 25
      public/assets/font-awesome/less/solid.less
  41. 10
      public/assets/font-awesome/less/v4-shims.less
  42. 198
      public/css/admin.css
  43. 60
      public/css/fontiran.css
  44. 11
      public/namaka.svg
  45. 3
      resources/css/app.css
  46. 18
      resources/views/food-menu/menu2/theme.blade.php
  47. 22
      resources/views/vendor/backpack/ui/inc/menu_items.blade.php

@ -32,8 +32,11 @@ class CategoryCrudController extends CrudController
{ {
CRUD::setModel(\App\Models\Category::class); CRUD::setModel(\App\Models\Category::class);
CRUD::setRoute(config('backpack.base.route_prefix') . '/category'); CRUD::setRoute(config('backpack.base.route_prefix') . '/category');
CRUD::setEntityNameStrings('category', 'categories'); CRUD::setEntityNameStrings(
$this->crud->addClause(function (Builder $builder){ __('entities.category.singular'),
__('entities.category.plural'),
);
$this->crud->addClause(function (Builder $builder) {
$builder->where('user_id', backpack_user()->id); $builder->where('user_id', backpack_user()->id);
}); });
} }
@ -46,8 +49,21 @@ class CategoryCrudController extends CrudController
*/ */
protected function setupListOperation() protected function setupListOperation()
{ {
$this->crud->addColumn([
'name' => 'icon',
'label' => 'آیکون',
'type' => 'custom_html',
'value' => function($category){
$icon = $category->icon != ''
? asset("icons/{$category->icon}")
: asset('icons/icon-default.png');
return "<img src='{$icon}' class='mx-auto mb-2' style='width: 40px;'>";
}
]);
CRUD::setFromDb(); // set columns from db columns. CRUD::setFromDb(); // set columns from db columns.
$this->crud->removeColumn('user_id'); $this->crud->removeColumn('user_id');
$this->crud->removeColumn('user_id');
/** /**
* Columns can be defined using the fluent syntax: * Columns can be defined using the fluent syntax:
@ -65,6 +81,56 @@ class CategoryCrudController extends CrudController
{ {
CRUD::setFromDb(); // set fields from db columns. CRUD::setFromDb(); // set fields from db columns.
$this->crud->removeField('user_id'); $this->crud->removeField('user_id');
CRUD::field([ // select_from_array
'name' => 'icon',
'label' => "آیکون",
'type' => 'select_from_array',
'options' => [
"icon-appetizer.png" => 'پیش غذا',
"icon-beverage.png" => 'نوشیدنی',
"icon-bread.png" => 'نان',
"icon-breakfast.png" => 'صبحانه',
"icon-burger.png" => 'برگر',
"icon-calendar.png" => 'تقویم',
"icon-candy.png" => 'شیرینی، کیک و بستنی',
"icon-cereal.png" => 'غلات',
"icon-chicken.png" => 'جوجه',
"icon-chickenstrips.png" => 'چیکن استریپس',
"icon-cup.png" => 'فنجان',
"icon-default.png" => 'پیش فرض',
"icon-dessert.png" => 'دسر',
"icon-dizi.png" => 'دیزی',
"icon-doner.png" => 'دونر',
"icon-doughnut.png" => 'دونات',
"icon-food.png" => 'غذا',
"icon-fruites.png" => 'میوه ها',
"icon-hotdog.png" => 'هات داگ',
"icon-international.png" => 'غذای بینالمللی',
"icon-juice.png" => 'آب میوه',
"icon-kalle.png" => 'کله',
"icon-kebab.png" => 'کباب',
"icon-kebabrice.png" => 'چلوکباب',
"icon-lettuce.png" => 'کاهو',
"icon-marmalade.png" => 'مارمالاد',
"icon-pasta.png" => 'پاستا',
"icon-pistachio.png" => 'پسته',
"icon-pizza.png" => 'پیتزا',
"icon-pot.png" => 'قابلمه',
"icon-rice.png" => 'برنج',
"icon-salad.png" => 'سالاد',
"icon-sandwich.png" => 'ساندویچ',
"icon-seafood.png" => 'غذای دریایی',
"icon-soup.png" => 'سوپ',
"icon-spice.png" => 'ادویه',
"icon-steak.png" => 'استیک',
"icon-sushi.png" => 'سوشی',
"icon-vegetables.png" => 'سبزیجات',
"icon-wrap.png" => 'ساندویچ و لقمه',
],
'allows_null' => false,
'default' => 'one',
// 'allows_multiple' => true, // OPTIONAL; needs you to cast this to array in your model;
]);
/** /**
* Fields can be defined using the fluent syntax: * Fields can be defined using the fluent syntax:
* - CRUD::field('price')->type('number'); * - CRUD::field('price')->type('number');

@ -29,7 +29,10 @@ class DomainsCrudController extends CrudController
{ {
CRUD::setModel(\App\Models\Domain::class); CRUD::setModel(\App\Models\Domain::class);
CRUD::setRoute(config('backpack.base.route_prefix') . '/domains'); CRUD::setRoute(config('backpack.base.route_prefix') . '/domains');
CRUD::setEntityNameStrings('domains', 'domains'); CRUD::setEntityNameStrings(
__('entities.domain.singular'),
__('entities.domain.plural'),
);
if (!backpack_user()->hasRole('admin')){ if (!backpack_user()->hasRole('admin')){
$this->crud->denyAllAccess(); $this->crud->denyAllAccess();
} }

@ -29,7 +29,10 @@ class FoodCrudController extends CrudController
{ {
CRUD::setModel(\App\Models\Food::class); CRUD::setModel(\App\Models\Food::class);
CRUD::setRoute(config('backpack.base.route_prefix') . '/food'); CRUD::setRoute(config('backpack.base.route_prefix') . '/food');
CRUD::setEntityNameStrings('food', 'food'); CRUD::setEntityNameStrings(
__('entities.food.singular'),
__('entities.food.plural'),
);
$this->crud->addClause(function (Builder $builder){ $this->crud->addClause(function (Builder $builder){
$builder->whereHas('category', function ($query) { $builder->whereHas('category', function ($query) {
$query->where('user_id', backpack_user()->id); $query->where('user_id', backpack_user()->id);
@ -46,19 +49,6 @@ class FoodCrudController extends CrudController
*/ */
protected function setupListOperation() protected function setupListOperation()
{ {
// CRUD::column([ // Select
// 'label' => "Category",
// 'type' => 'select',
// 'name' => 'category_id', // the db column for the foreign key
// 'entity' => 'category',
// 'model' => "App\Models\Category", // related model
// 'attribute' => 'name', // foreign key attribute that is shown to user
// 'priority' => 2,
// 'options' => (function ($query) {
// return $query->orderBy('id', 'ASC')->get();
// }), // you can use this to filter the results show in the select
// ]);
CRUD::setFromDb(); // set columns from db columns. CRUD::setFromDb(); // set columns from db columns.
$this->crud->removeColumn('category_id'); $this->crud->removeColumn('category_id');
$this->crud->addColumn([ // Select $this->crud->addColumn([ // Select
@ -101,7 +91,9 @@ class FoodCrudController extends CrudController
return $query->orderBy('id', 'ASC')->get(); return $query->orderBy('id', 'ASC')->get();
}), // you can use this to filter the results show in the select }), // you can use this to filter the results show in the select
]); ]);
CRUD::field('image')->type('upload')->withFiles([
'path' => 'food_images',
]);
/** /**
* Fields can be defined using the fluent syntax: * Fields can be defined using the fluent syntax:
* - CRUD::field('price')->type('number'); * - CRUD::field('price')->type('number');

@ -28,7 +28,10 @@ class UserCrudController extends CrudController
{ {
CRUD::setModel(\App\Models\User::class); CRUD::setModel(\App\Models\User::class);
CRUD::setRoute(config('backpack.base.route_prefix') . '/user'); CRUD::setRoute(config('backpack.base.route_prefix') . '/user');
CRUD::setEntityNameStrings('user', 'users'); CRUD::setEntityNameStrings(
__('entities.user.singular'),
__('entities.user.plural'),
);
} }
/** /**

@ -78,11 +78,11 @@ return [
| |
*/ */
'locale' => env('APP_LOCALE', 'en'), 'locale' => env('APP_LOCALE', 'fa'),
'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),
'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), 'faker_locale' => env('APP_FAKER_LOCALE', 'fa_IR'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

@ -311,8 +311,8 @@ return [
// "ps_AF" => "Pashto (Afghanistan)", // "ps_AF" => "Pashto (Afghanistan)",
// "ps" => "Pashto", // "ps" => "Pashto",
// "fa_AF" => "Persian (Afghanistan)", // "fa_AF" => "Persian (Afghanistan)",
// "fa_IR" => "Persian (Iran)", "fa_IR" => "Persian (Iran)",
// "fa" => "Persian", "fa" => "Persian",
// "pl_PL" => "Polish (Poland)", // "pl_PL" => "Polish (Poland)",
// "pl" => "Polish", // "pl" => "Polish",
// "pt_BR" => "Portuguese (Brazil)", // "pt_BR" => "Portuguese (Brazil)",

@ -41,6 +41,8 @@ return [
'styles' => [ 'styles' => [
base_path('vendor/backpack/theme-tabler/resources/assets/css/color-adjustments.css'), base_path('vendor/backpack/theme-tabler/resources/assets/css/color-adjustments.css'),
base_path('vendor/backpack/theme-tabler/resources/assets/css/colors.css'), base_path('vendor/backpack/theme-tabler/resources/assets/css/colors.css'),
base_path('public/css/fontiran.css'),
base_path('public/css/admin.css'),
], ],
/** /**

@ -39,14 +39,14 @@ return [
// Direction, according to language // Direction, according to language
// (left-to-right vs right-to-left) // (left-to-right vs right-to-left)
'html_direction' => 'ltr', 'html_direction' => 'rtl',
// ---- // ----
// HEAD // HEAD
// ---- // ----
// Project name - shown in the window title // Project name - shown in the window title
'project_name' => 'Backpack Admin Panel', 'project_name' => 'نمکا',
// Content of the HTML meta robots tag to prevent indexing and link following // Content of the HTML meta robots tag to prevent indexing and link following
'meta_robots_content' => 'noindex, nofollow', 'meta_robots_content' => 'noindex, nofollow',
@ -63,7 +63,7 @@ return [
'home_link' => '', 'home_link' => '',
// Menu logo. You can replace this with an <img> tag if you have a logo. // Menu logo. You can replace this with an <img> tag if you have a logo.
'project_logo' => '<b>Back</b>pack', 'project_logo' => '<img src="/namaka.svg" width="28"> <span class="me-1">نمکا</span>',
// Show / hide breadcrumbs on admin panel pages. // Show / hide breadcrumbs on admin panel pages.
'breadcrumbs' => true, 'breadcrumbs' => true,
@ -73,13 +73,13 @@ return [
// ------ // ------
// Developer or company name. Shown in footer. // Developer or company name. Shown in footer.
'developer_name' => 'Cristian Tabacitu', 'developer_name' => 'نمکا',
// Developer website. Link in footer. Type false if you want to hide it. // Developer website. Link in footer. Type false if you want to hide it.
'developer_link' => 'http://tabacitu.ro', 'developer_link' => 'https://namaka.ir',
// Show powered by Laravel Backpack in the footer? true/false // Show powered by Laravel Backpack in the footer? true/false
'show_powered_by' => true, 'show_powered_by' => false,
// --------- // ---------
// DASHBOARD // DASHBOARD

@ -0,0 +1,36 @@
<?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::table('users', function (Blueprint $table) {
$table->string('username');
$table->string('restaurant_name');
$table->string('instagram_account');
$table->string('template');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn([
'username',
'restaurant_name',
'instagram_account',
'template',
]);
});
}
};

@ -0,0 +1,28 @@
<?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::table('users', function (Blueprint $table) {
$table->text('restaurant_logo');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('restaurant_logo');
});
}
};

@ -0,0 +1,28 @@
<?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::table('foods', function (Blueprint $table) {
$table->text('image');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('foods', function (Blueprint $table) {
$table->dropColumn('image');
});
}
};

@ -0,0 +1,28 @@
<?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::table('categories', function (Blueprint $table) {
$table->string('icon');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('categories', function (Blueprint $table) {
$table->dropColumn('icon');
});
}
};

@ -0,0 +1,28 @@
<?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::table('users', function (Blueprint $table) {
$table->unique('username');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropUnique('username');
});
}
};

@ -0,0 +1,4 @@
<?php
return [
'authentication' => 'احراز هویت',
];

@ -0,0 +1,27 @@
<?php
return [
'user' => [
'singular' => 'کاربر',
'plural' => 'کاربران',
],
'role' => [
'singular' => 'نقش',
'plural' => 'نقشها',
],
'permission' => [
'singular' => 'دسترسی',
'plural' => 'دسترسیها',
],
'domain' => [
'singular' => 'دامنه',
'plural' => 'دامنهها',
],
'food' => [
'singular' => 'غذا',
'plural' => 'غذاها',
],
'category' => [
'singular' => 'دستهبندی',
'plural' => 'دستهبندیها',
],
];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../backupmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../backupmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,71 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Backpack\Base Language Lines - Persian
|--------------------------------------------------------------------------
*/
'registration_closed' => 'عضویت بسته شده است.',
'no_email_column' => 'کاربران آدرس ایمیل مرتبط ندارند.',
'first_page_you_see' => 'اولین صفحهای که بعد از ورود شما میبینید.',
'login_status' => 'وضعیت ورود',
'logged_in' => 'شما وارد شده اید!',
'toggle_navigation' => 'تعویض ناوبری',
'administration' => 'مدیریت',
'user' => 'کاربر',
'logout' => 'خروج',
'login' => 'ورود',
'register' => 'عضویت',
'name' => 'نام',
'email_address' => 'آدرس ایمیل',
'password' => 'گذرواژه',
'old_password' => 'گذرواژه قدیمی',
'new_password' => 'گذرواژه جدید',
'confirm_password' => 'تایید رمز',
'remember_me' => 'مرا به خاطر بسپار',
'forgot_your_password' => 'فراموشی گذرواژه؟',
'reset_password' => 'بازنشانی گذرواژه',
'send_reset_link' => 'ارسال لینک بازنشانی گذرواژه',
'click_here_to_reset' => 'اینجا را برای بازنشانی گذرواژه کلیک کنید',
'change_password' => 'تغییر گذرواژه',
'unauthorized' => 'غیرمجاز.',
'dashboard' => 'داشبورد',
'handcrafted_by' => 'تولید شده توسط',
'powered_by' => 'قدرت گرفته با',
'my_account' => 'حساب کاربری من',
'update_account_info' => 'بروزرسانی اطلاعات حساب کاربری',
'save' => 'ذخیره',
'cancel' => 'انصراف',
'error' => 'خطا',
'success' => 'موفق',
'warning' => 'هشدار',
'notice' => 'اطلاع',
'old_password_incorrect' => 'گذرواژه قدیمی صحیح نیست.',
'password_dont_match' => 'گذرواژههای ورود مطابقت ندارند.',
'password_empty' => 'اطمینان حاصل کنید که هر دو قسمت گذرواژه پر شده اند.',
'password_updated' => 'گذرواژه بروز شد.',
'account_updated' => 'حساب کاربری با موفقیت بروز شد.',
'unknown_error' => 'خطای ناشناخته اتفاق افتاد. لطفا مجدد تلاش کنید.',
'error_saving' => 'خطا در حین ذخیره سازی، لطفا مجدد تلاش کنید.',
'session_expired_error' => 'جلسه شما تمام شده است. لطفا دوباره وارد حساب کاربری خود شوید',
'welcome' => 'خوش آمدید!',
'use_sidebar' => 'برای ایجاد ، ویرایش یا حذف محتوا از نوار کناری در سمت چپ استفاده کنید.',
'password_reset' => [
'greeting' => 'سلام!',
'subject' => 'اعلان بازنشانی گذرواژه',
'line_1' => 'شما این ایمیل را دریافت کردید زیرا ما درخواست بازنشانی گذرواژه را برای حساب کاربری شما دریافت کردیم.',
'line_2' => 'دکمه زیر برای بازنشانی گذرواژه:',
'button' => 'بازنشانی گذرواژه',
'notice' => 'اگر درخواست بازنشانی گذرواژه را نکردید، هیچ اقدام دیگری لازم نیست.',
],
'step' => 'مرحله',
'confirm_email' => 'ایمیل تایید',
'choose_new_password' => 'انتخاب گذرواژه جدید',
'confirm_new_password' => 'تایید گذرواژه جدید',
];

@ -0,0 +1,147 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Backpack Crud Language Lines - Persian
|--------------------------------------------------------------------------
|
| The following language lines are used by the CRUD interface.
| You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
// Forms
'save_action_save_and_new' => 'ذخیره و مورد جدید',
'save_action_save_and_edit' => 'ذخیره و ویرایش این مورد',
'save_action_save_and_back' => 'ذخیره و بازگشت',
'save_action_changed_notification' => 'رفتار پیش فرض پس از ذخیره سازی تغییر کرده است.',
// Create form
'add' => 'افزودن',
'back_to_all' => 'بازگشت به همه ',
'cancel' => 'انصراف',
'add_a_new' => 'افزودن یک چیز جدید ',
// Edit form
'edit' => 'ویرایش',
'save' => 'ذخیره',
// Translatable models
'edit_translations' => 'ترجمه',
'language' => 'زبان',
// CRUD table view
'all' => 'همه ',
'in_the_database' => 'در پایگاه داده',
'list' => 'لیست',
'actions' => 'اقدامات',
'preview' => 'پیشنمایش',
'delete' => 'حذف',
'admin' => 'مدیر',
'details_row' => 'این ردیف جزئیات است. مطابق میل خود تغییر دهید.',
'details_row_loading_error' => 'هنگام بارگذاری جزئیات خطایی روی داد. لطفا دوباره سعی کنید.',
// Confirmation messages and bubbles
'delete_confirm' => 'آیا شما از حذف این مورد مطمين هستید؟',
'delete_confirmation_title' => 'مورد حذف شد',
'delete_confirmation_message' => 'مورد مورد نظر با موفقیت حذف شد.',
'delete_confirmation_not_title' => 'حذف نشد',
'delete_confirmation_not_message' => 'خطایی وجود داشت. مورد مورد نظر ممکن است حذف نشده باشد.',
'delete_confirmation_not_deleted_title' => 'حذف نشد',
'delete_confirmation_not_deleted_message' => 'هیچ اتفاقی نیفتاده مورد شما ایمن است.',
// Bulk actions
'bulk_no_entries_selected_title' => 'هیچ ورودی انتخاب نشده است',
'bulk_no_entries_selected_message' => 'لطفاً یک یا چند مورد را انتخاب کنید تا یک عمل انبوه بر روی آنها انجام شود.',
// Bulk confirmation
'bulk_delete_are_you_sure' => 'آیا مطمئن هستید که می خواهید :number مورد را حذف کنید؟',
'bulk_delete_sucess_title' => 'موارد حذف شد',
'bulk_delete_sucess_message' => ' موارد حذف شدند',
'bulk_delete_error_title' => 'حذف نشد',
'bulk_delete_error_message' => 'یک یا چند مورد قابل حذف نیستند',
// Ajax errors
'ajax_error_title' => 'خطا',
'ajax_error_text' => 'خطا در بارگذاری صفحه. صفحه را تازه کنید. ',
// DataTables translation
'emptyTable' => 'دادهای در جدول وجود ندارد',
'info' => 'نمایش _START_ تا _END_ از _TOTAL_ مورد',
'infoEmpty' => 'نمایش ۰ تا ۰ از ۰ مورد',
'infoFiltered' => '(فیلتر شده از _MAX_ مورد)',
'infoPostFix' => '.',
'thousands' => '،',
'lengthMenu' => '_MENU_ رکورد در صفحه',
'loadingRecords' => 'درحال بارگذاری...',
'processing' => 'درحال پردازش...',
'search' => 'جستجو',
'zeroRecords' => 'مورد مطابقت داده شده یافت نشد',
'paginate' => [
'first' => 'اولین',
'last' => 'آخرین',
'next' => 'بعدی',
'previous' => 'قبلی',
],
'aria' => [
'sortAscending' => ': برای مرتب سازی صعود ستون فعال کنید',
'sortDescending' => ': برای مرتب سازی نزولی ستون فعال کنید',
],
'export' => [
'export' => 'خروجی',
'copy' => 'کپی',
'excel' => 'Excel',
'csv' => 'CSV',
'pdf' => 'PDF',
'print' => 'چاپ',
'column_visibility' => 'ستونهای نمایان',
],
// global crud - errors
'unauthorized_access' => 'دسترسی غیرمجاز - شما مجوزهای لازم برای دیدن این صفحه را ندارید.',
'please_fix' => 'لطفا این خطاها را برطرف کنید:',
// global crud - success / error notification bubbles
'insert_success' => 'مورد مورد نظر با موفقیت اضافه شد.',
'update_success' => 'مورد با موفقیت تغییر یافت.',
// CRUD reorder view
'reorder' => 'ترتیب دوباره',
'reorder_text' => 'Use drag&drop to reorder.',
'reorder_success_title' => 'انجام شد',
'reorder_success_message' => 'ترتیب شما ذخیره شد.',
'reorder_error_title' => 'خطا',
'reorder_error_message' => 'ترتیب شما ذخیره نشده است',
// CRUD yes/no
'yes' => 'Yes',
'no' => 'No',
// CRUD filters navbar view
'filters' => 'فیلترها',
'toggle_filters' => 'تغییر فیلترها',
'remove_filters' => 'حذف فیلترها',
// Fields
'browse_uploads' => 'مرور بارگذاریها',
'select_all' => 'انتخاب همه',
'select_files' => 'انتخاب پروندهها',
'select_file' => 'انتخاب پرونده',
'clear' => 'پاک کردن',
'page_link' => 'پیوند به صفحه',
'page_link_placeholder' => 'http://example.com/your-desired-page',
'internal_link' => 'پیوند داخلی',
'internal_link_placeholder' => 'Internal slug. Ex: \'admin/page\' (no quotes) for \':url\'',
'external_link' => 'پیوند خارجی',
'choose_file' => 'انتخاب پرونده',
//Table field
'table_cant_add' => 'نمی توان :entity جدید اضافه کرد',
'table_max_reached' => 'به حداکثر مقدار :max رسیده است',
// File manager
'file_manager' => 'مدیریت پرونده',
];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../langfilemanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../langfilemanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../logmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../logmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../pagemanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../pagemanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../permissionmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../permissionmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../settings/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../settings/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -1,152 +0,0 @@
// animating icons
// --------------------------
.@{fa-css-prefix}-beat {
animation-name: ~'@{fa-css-prefix}-beat';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, ease-in-out)';
}
.@{fa-css-prefix}-bounce {
animation-name: ~'@{fa-css-prefix}-bounce';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1))';
}
.@{fa-css-prefix}-fade {
animation-name: ~'@{fa-css-prefix}-fade';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1))';
}
.@{fa-css-prefix}-beat-fade {
animation-name: ~'@{fa-css-prefix}-beat-fade';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1))';
}
.@{fa-css-prefix}-flip {
animation-name: ~'@{fa-css-prefix}-flip';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, ease-in-out)';
}
.@{fa-css-prefix}-shake {
animation-name: ~'@{fa-css-prefix}-shake';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, linear)';
}
.@{fa-css-prefix}-spin {
animation-name: ~'@{fa-css-prefix}-spin';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 2s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, linear)';
}
.@{fa-css-prefix}-spin-reverse {
--@{fa-css-prefix}-animation-direction: reverse;
}
.@{fa-css-prefix}-pulse,
.@{fa-css-prefix}-spin-pulse {
animation-name: ~'@{fa-css-prefix}-spin';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, steps(8));';
}
// if agent or operating system prefers reduced motion, disable animations
// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/
// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion
@media (prefers-reduced-motion: reduce) {
.@{fa-css-prefix}-beat,
.@{fa-css-prefix}-bounce,
.@{fa-css-prefix}-fade,
.@{fa-css-prefix}-beat-fade,
.@{fa-css-prefix}-flip,
.@{fa-css-prefix}-pulse,
.@{fa-css-prefix}-shake,
.@{fa-css-prefix}-spin,
.@{fa-css-prefix}-spin-pulse {
animation-delay: -1ms;
animation-duration: 1ms;
animation-iteration-count: 1;
transition-delay: 0s;
transition-duration: 0s;
}
}
@keyframes ~'@{fa-css-prefix}-beat' {
0%, 90% { transform: scale(1); }
45% { transform: ~'scale(var(--@{fa-css-prefix}-beat-scale, 1.25))'; }
}
@keyframes ~'@{fa-css-prefix}-bounce' {
0% { transform: scale(1,1) translateY(0); }
10% { transform: ~'scale(var(--@{fa-css-prefix}-bounce-start-scale-x, 1.1),var(--@{fa-css-prefix}-bounce-start-scale-y, 0.9))' translateY(0); }
30% { transform: ~'scale(var(--@{fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--@{fa-css-prefix}-bounce-jump-scale-y, 1.1))' ~'translateY(var(--@{fa-css-prefix}-bounce-height, -0.5em))'; }
50% { transform: ~'scale(var(--@{fa-css-prefix}-bounce-land-scale-x, 1.05),var(--@{fa-css-prefix}-bounce-land-scale-y, 0.95))' translateY(0); }
57% { transform: ~'scale(1,1) translateY(var(--@{fa-css-prefix}-bounce-rebound, -0.125em))'; }
64% { transform: scale(1,1) translateY(0); }
100% { transform: scale(1,1) translateY(0); }
}
@keyframes ~'@{fa-css-prefix}-fade' {
50% { opacity: ~'var(--@{fa-css-prefix}-fade-opacity, 0.4)'; }
}
@keyframes ~'@{fa-css-prefix}-beat-fade' {
0%, 100% {
opacity: ~'var(--@{fa-css-prefix}-beat-fade-opacity, 0.4)';
transform: scale(1);
}
50% {
opacity: 1;
transform: ~'scale(var(--@{fa-css-prefix}-beat-fade-scale, 1.125))';
}
}
@keyframes ~'@{fa-css-prefix}-flip' {
50% {
transform: ~'rotate3d(var(--@{fa-css-prefix}-flip-x, 0), var(--@{fa-css-prefix}-flip-y, 1), var(--@{fa-css-prefix}-flip-z, 0), var(--@{fa-css-prefix}-flip-angle, -180deg))';
}
}
@keyframes ~'@{fa-css-prefix}-shake' {
0% { transform: rotate(-15deg); }
4% { transform: rotate(15deg); }
8%, 24% { transform: rotate(-18deg); }
12%, 28% { transform: rotate(18deg); }
16% { transform: rotate(-22deg); }
20% { transform: rotate(22deg); }
32% { transform: rotate(-12deg); }
36% { transform: rotate(12deg); }
40%, 100% { transform: rotate(0deg); }
}
@keyframes ~'@{fa-css-prefix}-spin' {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

@ -1,20 +0,0 @@
// bordered + pulled icons
// -------------------------
.@{fa-css-prefix}-border {
border-color: ~'var(--@{fa-css-prefix}-border-color, @{fa-border-color})';
border-radius: ~'var(--@{fa-css-prefix}-border-radius, @{fa-border-radius})';
border-style: ~'var(--@{fa-css-prefix}-border-style, @{fa-border-style})';
border-width: ~'var(--@{fa-css-prefix}-border-width, @{fa-border-width})';
padding: ~'var(--@{fa-css-prefix}-border-padding, @{fa-border-padding})';
}
.@{fa-css-prefix}-pull-left {
float: left;
margin-right: ~'var(--@{fa-css-prefix}-pull-margin, @{fa-pull-margin})';
}
.@{fa-css-prefix}-pull-right {
float: right;
margin-left: ~'var(--@{fa-css-prefix}-pull-margin, @{fa-pull-margin})';
}

@ -1,36 +0,0 @@
// base icon class definition
// -------------------------
.@{fa-css-prefix} {
font-family: ~"var(--@{fa-css-prefix}-style-family, '@{fa-style-family}')";
font-weight: ~'var(--@{fa-css-prefix}-style, @{fa-style})';
}
.@{fa-css-prefix}-solid,
.@{fa-css-prefix}-regular,
.@{fa-css-prefix}-brands,
.fas,
.far,
.fab,
.@{fa-css-prefix} {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: ~'var(--@{fa-css-prefix}-display, @{fa-display})';
font-style: normal;
font-variant: normal;
text-rendering: auto;
}
.fas,
.@{fa-css-prefix}-classic,
.@{fa-css-prefix}-solid,
.far,
.@{fa-css-prefix}-regular {
font-family: 'Font Awesome 6 Free';
}
.fab,
.@{fa-css-prefix}-brands {
font-family: 'Font Awesome 6 Brands';
}

@ -1,7 +0,0 @@
// fixed-width icons
// -------------------------
.@{fa-css-prefix}-fw {
text-align: center;
width: @fa-fw-width;
}

@ -1,9 +0,0 @@
// specific icon class definition
// -------------------------
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
each(.fa-icons(), {
.@{fa-css-prefix}-@{key}::before { content: @value; }
});

@ -1,18 +0,0 @@
// icons in a list
// -------------------------
.@{fa-css-prefix}-ul {
list-style-type: none;
margin-left: ~'var(--@{fa-css-prefix}-li-margin, @{fa-li-margin})';
padding-left: 0;
> li { position: relative; }
}
.@{fa-css-prefix}-li {
left: calc(~'var(--@{fa-css-prefix}-li-width, @{fa-li-width})' * -1);
position: absolute;
text-align: center;
width: ~'var(--@{fa-css-prefix}-li-width, @{fa-li-width})';
line-height: inherit;
}

@ -1,78 +0,0 @@
// mixins
// --------------------------
// base rendering for an icon
.fa-icon() {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
}
// sets relative font-sizing and alignment (in _sizing)
.fa-size(@font-size) {
font-size: (@font-size / @fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base
line-height: (1 / @font-size) * 1em; // sets the line-height of the icon back to that of it's parent
vertical-align: ((6 / @font-size) - (3 / 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender
}
// only display content to screen readers
// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
.fa-sr-only() {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
// use in conjunction with .sr-only to only display content when it's focused
.fa-sr-only-focusable() {
&:not(:focus) {
.fa-sr-only();
}
}
// sets a specific icon family to use alongside style + icon mixins
.fa-family-classic() {
font-family: 'Font Awesome 6 Free';
}
// convenience mixins for declaring pseudo-elements by CSS variable,
// including all style-specific font properties, and both the ::before
// and ::after elements in the duotone case.
.fa-icon-solid(@fa-var) {
.fa-icon;
.fa-solid;
&::before {
content: @fa-var;
}
}
.fa-icon-regular(@fa-var) {
.fa-icon;
.fa-regular;
&::before {
content: @fa-var;
}
}
.fa-icon-brands(@fa-var) {
.fa-icon;
.fa-brands;
&::before {
content: @fa-var;
}
}

@ -1,31 +0,0 @@
// rotating + flipping icons
// -------------------------
.@{fa-css-prefix}-rotate-90 {
transform: rotate(90deg);
}
.@{fa-css-prefix}-rotate-180 {
transform: rotate(180deg);
}
.@{fa-css-prefix}-rotate-270 {
transform: rotate(270deg);
}
.@{fa-css-prefix}-flip-horizontal {
transform: scale(-1, 1);
}
.@{fa-css-prefix}-flip-vertical {
transform: scale(1, -1);
}
.@{fa-css-prefix}-flip-both,
.@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical {
transform: scale(-1, -1);
}
.@{fa-css-prefix}-rotate-by {
transform: rotate(~'var(--@{fa-css-prefix}-rotate-angle, 0)');
}

@ -1,14 +0,0 @@
// screen-reader utilities
// -------------------------
// only display content to screen readers
.sr-only,
.@{fa-css-prefix}-sr-only {
.fa-sr-only();
}
// use in conjunction with .sr-only to only display content when it's focused
.sr-only-focusable,
.@{fa-css-prefix}-sr-only-focusable {
.fa-sr-only-focusable();
}

File diff suppressed because it is too large Load Diff

@ -1,19 +0,0 @@
// sizing icons
// -------------------------
// literal magnification scale
.sizes-literal(@factor) when (@factor > 0) {
.sizes-literal((@factor - 1));
.@{fa-css-prefix}-@{factor}x {
font-size: (@factor * 1em);
}
}
.sizes-literal(10);
// step-based scale (with alignment)
each(.fa-sizes(), {
.@{fa-css-prefix}-@{key} {
.fa-size(@value);
}
});

@ -1,31 +0,0 @@
// stacking icons
// -------------------------
.@{fa-css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: @fa-stack-vertical-align;
width: @fa-stack-width;
}
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
left: 0;
position: absolute;
text-align: center;
width: 100%;
z-index: ~'var(--@{fa-css-prefix}-stack-z-index, @{fa-stack-z-index})';
}
.@{fa-css-prefix}-stack-1x {
line-height: inherit;
}
.@{fa-css-prefix}-stack-2x {
font-size: 2em;
}
.@{fa-css-prefix}-inverse {
color: ~'var(--@{fa-css-prefix}-inverse, @{fa-inverse})';
}

File diff suppressed because it is too large Load Diff

@ -1,29 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
@import "_variables.less";
:root, :host {
--@{fa-css-prefix}-style-family-brands: 'Font Awesome 6 Brands';
--@{fa-css-prefix}-font-brands: normal 400 1em/1 'Font Awesome 6 Brands';
}
@font-face {
font-family: 'Font Awesome 6 Brands';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-brands-400.ttf') format('truetype');
}
.fab,
.@{fa-css-prefix}-brands {
font-weight: 400;
}
each(.fa-brand-icons(), {
.@{fa-css-prefix}-@{key}:before { content: @value; }
});

@ -1,20 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
// Font Awesome core compile (Web Fonts-based)
// -------------------------
@import "_variables.less";
@import "_mixins.less";
@import "_core.less";
@import "_sizing.less";
@import "_fixed-width.less";
@import "_list.less";
@import "_bordered-pulled.less";
@import "_animated.less";
@import "_rotated-flipped.less";
@import "_stacked.less";
@import "_icons.less";
@import "_screen-reader.less";

@ -1,25 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
@import "_variables.less";
:root, :host {
--@{fa-css-prefix}-style-family-classic: '@{fa-style-family}';
--@{fa-css-prefix}-font-regular: normal 400 1em/1 '@{fa-style-family}';
}
@font-face {
font-family: 'Font Awesome 6 Free';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-regular-400.ttf') format('truetype');
}
.far,
.@{fa-css-prefix}-regular {
font-weight: 400;
}

@ -1,25 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
@import "_variables.less";
:root, :host {
--@{fa-css-prefix}-style-family-classic: '@{fa-style-family}';
--@{fa-css-prefix}-font-solid: normal 900 1em/1 '@{fa-style-family}';
}
@font-face {
font-family: 'Font Awesome 6 Free';
font-style: normal;
font-weight: 900;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),
url('@{fa-font-path}/fa-solid-900.ttf') format('truetype');
}
.fas,
.@{fa-css-prefix}-solid {
font-weight: 900;
}

@ -1,10 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
// V4 shims compile (Web Fonts-based)
// -------------------------
@import '_variables.less';
@import '_shims.less';

@ -0,0 +1,198 @@
/* RTL mode */
.pe-0 {
padding-left: 0 !important
}
.pe-1 {
padding-left: .25rem !important
}
.pe-2 {
padding-left: .5rem !important
}
.pe-3 {
padding-left: 1rem !important
}
.pe-4 {
padding-left: 1.5rem !important
}
.pe-5 {
padding-left: 2rem !important
}
.pe-6 {
padding-left: 3rem !important
}
.pe-7 {
padding-left: 5rem !important
}
.pe-8 {
padding-left: 8rem !important
}
.ps-0 {
padding-right: 0 !important
}
.ps-1 {
padding-right: .25rem !important
}
.ps-2 {
padding-right: .5rem !important
}
.ps-3 {
padding-right: 1rem !important
}
.ps-4 {
padding-right: 1.5rem !important
}
.ps-5 {
padding-right: 2rem !important
}
.ps-6 {
padding-right: 3rem !important
}
.pe-7 {
padding-right: 5rem !important
}
.pe-8 {
padding-right: 8rem !important
}
.me-0 {
margin-left: 0 !important;
margin-right: 0 !important;
}
.me-1 {
margin-left: .25rem !important;
margin-right: 0 !important;
}
.me-2 {
margin-left: .5rem !important;
margin-right: 0 !important;
}
.me-3 {
margin-left: 1rem !important;
margin-right: 0 !important;
}
.me-4 {
margin-left: 1.5rem !important;
margin-right: 0 !important;
}
.me-5 {
margin-left: 2rem !important;
margin-right: 0 !important;
}
.me-6 {
margin-left: 3rem !important;
margin-right: 0 !important;
}
.me-7 {
margin-left: 5rem !important;
margin-right: 0 !important;
}
.me-8 {
margin-left: 8rem !important;
margin-right: 0 !important;
}
.ms-0 {
margin-right: 0 !important;
margin-left: 0 !important;
}
.ms-1 {
margin-right: .25rem !important;
margin-left: 0 !important;
}
.ms-2 {
margin-right: .5rem !important;
margin-left: 0 !important;
}
.ms-3 {
margin-right: 1rem !important;
margin-left: 0 !important;
}
.ms-4 {
margin-right: 1.5rem !important;
margin-left: 0 !important;
}
.ms-5 {
margin-right: 2rem !important;
margin-left: 0 !important;
}
.ms-6 {
margin-right: 3rem !important;
margin-left: 0 !important;
}
.ms-7 {
margin-right: 5rem !important;
margin-left: 0 !important;
}
.ms-8 {
margin-right: 8rem !important;
margin-left: 0 !important;
}
.breadcrumb {
direction: ltr;
}
.btn-group>.btn-group:not(:last-child)>.btn, .btn-group>.btn.dropdown-toggle-split:first-child, .btn-group>.btn:not(:last-child):not(.dropdown-toggle){
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group>.btn-group:not(:first-child)>.btn, .btn-group>.btn:nth-child(n+3), .btn-group>:not(.btn-check)+.btn{
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
body {
font-family: IRANSans, sans-serif;
}
h6.dropdown-header {
text-align: right;
}
aside li.nav-item a.nav-link i, aside div.dropdown-menu a.dropdown-item i, header.top div ul.navbar-nav li.nav-item a.nav-link i, header.top div.dropdown-menu a.dropdown-item i {
margin-right: 0;
margin-left: 7px;
}
.navbar-collapse .dropdown-toggle:after, a.actions-buttons-column:after {
margin-left: 0;
margin-right: 3px;
}

@ -20,59 +20,59 @@ This set of fonts are used in this project under the license: (.....)
font-family: IRANSans; font-family: IRANSans;
font-style: normal; font-style: normal;
font-weight: 900; font-weight: 900;
src: url('../fonts/eot/IRANSansWeb_Black.eot'); src: url('/fonts/eot/IRANSansWeb_Black.eot');
src: url('../fonts/eot/IRANSansWeb_Black.eot?#iefix') format('embedded-opentype'), /* IE6-8 */ src: url('/fonts/eot/IRANSansWeb_Black.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_Black.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/ url('/fonts/woff2/IRANSansWeb_Black.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_Black.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('/fonts/woff/IRANSansWeb_Black.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_Black.ttf') format('truetype'); url('/fonts/ttf/IRANSansWeb_Black.ttf') format('truetype');
} }
@font-face { @font-face {
font-family: IRANSans; font-family: IRANSans;
font-style: normal; font-style: normal;
font-weight: bold; font-weight: bold;
src: url('../fonts/eot/IRANSansWeb_Bold.eot'); src: url('/fonts/eot/IRANSansWeb_Bold.eot');
src: url('../fonts/eot/IRANSansWeb_Bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */ src: url('/fonts/eot/IRANSansWeb_Bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_Bold.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/ url('/fonts/woff2/IRANSansWeb_Bold.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('/fonts/woff/IRANSansWeb_Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_Bold.ttf') format('truetype'); url('/fonts/ttf/IRANSansWeb_Bold.ttf') format('truetype');
} }
@font-face { @font-face {
font-family: IRANSans; font-family: IRANSans;
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
src: url('../fonts/eot/IRANSansWeb_Medium.eot'); src: url('/fonts/eot/IRANSansWeb_Medium.eot');
src: url('../fonts/eot/IRANSansWeb_Medium.eot?#iefix') format('embedded-opentype'), /* IE6-8 */ src: url('/fonts/eot/IRANSansWeb_Medium.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_Medium.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/ url('/fonts/woff2/IRANSansWeb_Medium.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_Medium.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('/fonts/woff/IRANSansWeb_Medium.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_Medium.ttf') format('truetype'); url('/fonts/ttf/IRANSansWeb_Medium.ttf') format('truetype');
} }
@font-face { @font-face {
font-family: IRANSans; font-family: IRANSans;
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 300;
src: url('../fonts/eot/IRANSansWeb_Light.eot'); src: url('/fonts/eot/IRANSansWeb_Light.eot');
src: url('../fonts/eot/IRANSansWeb_Light.eot?#iefix') format('embedded-opentype'), /* IE6-8 */ src: url('/fonts/eot/IRANSansWeb_Light.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_Light.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/ url('/fonts/woff2/IRANSansWeb_Light.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_Light.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('/fonts/woff/IRANSansWeb_Light.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_Light.ttf') format('truetype'); url('/fonts/ttf/IRANSansWeb_Light.ttf') format('truetype');
} }
@font-face { @font-face {
font-family: IRANSans; font-family: IRANSans;
font-style: normal; font-style: normal;
font-weight: 200; font-weight: 200;
src: url('../fonts/eot/IRANSansWeb_UltraLight.eot'); src: url('/fonts/eot/IRANSansWeb_UltraLight.eot');
src: url('../fonts/eot/IRANSansWeb_UltraLight.eot?#iefix') format('embedded-opentype'), /* IE6-8 */ src: url('/fonts/eot/IRANSansWeb_UltraLight.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_UltraLight.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/ url('/fonts/woff2/IRANSansWeb_UltraLight.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_UltraLight.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('/fonts/woff/IRANSansWeb_UltraLight.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_UltraLight.ttf') format('truetype'); url('/fonts/ttf/IRANSansWeb_UltraLight.ttf') format('truetype');
} }
@font-face { @font-face {
font-family: IRANSans; font-family: IRANSans;
font-style: normal; font-style: normal;
font-weight: normal; font-weight: normal;
src: url('../fonts/eot/IRANSansWeb.eot'); src: url('/fonts/eot/IRANSansWeb.eot');
src: url('../fonts/eot/IRANSansWeb.eot?#iefix') format('embedded-opentype'), /* IE6-8 */ src: url('/fonts/eot/IRANSansWeb.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/ url('/fonts/woff2/IRANSansWeb.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('/fonts/woff/IRANSansWeb.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb.ttf') format('truetype'); url('/fonts/ttf/IRANSansWeb.ttf') format('truetype');
} }

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.2 KiB

@ -0,0 +1,3 @@
body{
width: 100px !important;
}

@ -116,31 +116,33 @@
<body> <body>
<header class="container-fluid bg-dark"> <header class="container-fluid bg-dark">
<div class="row text-center py-4"> <div class="row text-center py-4">
<img src="https://cdn.snappfood.ir/media/cache/vendor_logo/uploads/images/vendors/logos/62f3972c217ab.png" @if($domain->user->restaurant_logo != '')
<img src="{{'/storage/' . basset($domain->user->restaurant_logo)}}"
class="d-inline-block align-top rounded-3 m-auto img-thumbnail w-25" class="d-inline-block align-top rounded-3 m-auto img-thumbnail w-25"
alt="" alt=""
> >
@endif
<h1 class="h4 text-center text-light my-4"> <h1 class="h4 text-center text-light my-4">
رزق حلال {{$domain->user->restaurant_name}}
</h1> </h1>
<div> <div>
<button type="button" class="btn btn-outline-info"> <a type="button" class="btn btn-outline-info" href="#">
<i class="fab fa-instagram me-2"></i> <i class="fab fa-instagram me-2"></i>
ما را در اینستاگرام دنبال کنید ما را در اینستاگرام دنبال کنید
</button> </a>
</div> </div>
</div> </div>
</header> </header>
<div style="background-color: #17191b !important;"> <div style="background-color: #c2c2c2 !important;">
<div class="container category-slider-container pt-3" id='navbar-example'> <div class="container category-slider-container pt-3" id='navbar-example'>
<div class="row"> <div class="row">
<div class="owl-carousel owl-theme category-slider p-0"> <div class="owl-carousel owl-theme category-slider p-0">
@foreach($domain->user->categories as $category) @foreach($domain->user->categories as $category)
<a href="#cat-{{$category->id}}" <a href="#cat-{{$category->id}}"
class="h-100 px-1 py-2 category-slide d-block text-center text-light text-decoration-none" class="h-100 px-1 py-2 category-slide d-block text-center text-dark text-decoration-none"
style="min-width: 150px" style="min-width: 150px"
> >
<img src="{{asset('icons/icon-burger.png')}}" class="mx-auto mb-2" style="width: 40px;"> <img src="{{$category->icon != '' ? asset("icons/{$category->icon}") : asset('icons/icon-default.png')}}" class="mx-auto mb-2" style="width: 40px;">
<h2 class="h6">{{$category->name}}</h2> <h2 class="h6">{{$category->name}}</h2>
</a> </a>
@endforeach @endforeach
@ -161,7 +163,7 @@
> >
@foreach($category->foods as $food) @foreach($category->foods as $food)
<div class="col-md-3 position-relative mb-4"> <div class="col-md-3 position-relative mb-4">
<img src="{{asset('food.png')}}" alt="food" <img src="{{$food->image != '' ? '/storage/' . $food->image : asset('food.png')}}" alt="food"
style="left: 0; right: 0; top: 0; width: 170px; height: 170px" style="left: 0; right: 0; top: 0; width: 170px; height: 170px"
class="rounded-circle position-absolute m-auto"> class="rounded-circle position-absolute m-auto">
<div style="height: 85px"></div> <div style="height: 85px"></div>

@ -1,17 +1,19 @@
{{-- This file is used for menu items by any Backpack v6 theme --}} {{-- This file is used for menu items by any Backpack v6 theme --}}
<li class="nav-item"><a class="nav-link" href="{{ backpack_url('dashboard') }}"><i class="la la-home nav-icon"></i> {{ trans('backpack::base.dashboard') }}</a></li> <li class="nav-item"><a class="nav-link" href="{{ backpack_url('dashboard') }}"><i
class="la la-home nav-icon"></i> {{ trans('backpack::base.dashboard') }}</a></li>
<x-backpack::menu-dropdown title="Add-ons" icon="la la-puzzle-piece"> @role('admin')
<x-backpack::menu-dropdown-header title="Authentication" /> <x-backpack::menu-dropdown title="افزونه ها" icon="la la-puzzle-piece">
<x-backpack::menu-dropdown-item title="Users" icon="la la-user" :link="backpack_url('user')" /> <x-backpack::menu-dropdown-header title="{{__('basic.authentication')}}"/>
<x-backpack::menu-dropdown-item title="Roles" icon="la la-group" :link="backpack_url('role')" /> <x-backpack::menu-dropdown-item title="{{__('entities.user.plural')}}" icon="la la-user" :link="backpack_url('user')"/>
<x-backpack::menu-dropdown-item title="Permissions" icon="la la-key" :link="backpack_url('permission')" /> <x-backpack::menu-dropdown-item title="{{__('entities.role.plural')}}" icon="la la-group" :link="backpack_url('role')"/>
<x-backpack::menu-dropdown-item title="{{__('entities.permission.plural')}}" icon="la la-key" :link="backpack_url('permission')"/>
</x-backpack::menu-dropdown> </x-backpack::menu-dropdown>
@endrole
<x-backpack::menu-item title="Categories" icon="la la-list" :link="backpack_url('category')" /> <x-backpack::menu-item title="{{__('entities.category.plural')}}" icon="la la-list" :link="backpack_url('category')"/>
@role('admin') @role('admin')
<x-backpack::menu-item title="Domains" icon="la la-link" :link="backpack_url('domains')" /> <x-backpack::menu-item title="{{__('entities.domain.plural')}}" icon="la la-link" :link="backpack_url('domains')"/>
@endrole @endrole
<x-backpack::menu-item title="Food" icon="la la-hamburger" :link="backpack_url('food')" /> <x-backpack::menu-item title="{{__('entities.food.plural')}}" icon="la la-hamburger" :link="backpack_url('food')"/>

Loading…
Cancel
Save