Commit 8de0354752f13a42cee695de578d97b9140e6585
1 parent
02a1ed535c
Exists in
master
and in
1 other branch
Создание: Структура БД и админки
Showing 23 changed files with 1456 additions and 47 deletions Inline Diff
- app/Http/Controllers/Admin/AdminController.php
- app/Http/Controllers/Admin/EmployersController.php
- app/Http/Controllers/Admin/UsersController.php
- app/Http/Controllers/Admin/WorkersController.php
- app/Models/Employer.php
- app/Models/User.php
- app/Models/Worker.php
- database/migrations/2023_05_17_090650_alter_group_users_table.php
- database/migrations/2023_05_17_090749_alter_messages_table.php
- database/migrations/2023_05_17_090923_alter_employers_table.php
- database/migrations/2023_05_17_090944_alter_workers_table.php
- database/migrations/2023_05_17_095512_alter_users_table.php
- resources/views/admin/employer/index.blade.php
- resources/views/admin/employer/index_ajax.blade.php
- resources/views/admin/login.blade.php
- resources/views/admin/pagginate.blade.php
- resources/views/admin/register.blade.php
- resources/views/admin/users/index.blade.php
- resources/views/admin/users/index_ajax.blade.php
- resources/views/admin/worker/index.blade.php
- resources/views/admin/worker/index_ajax.blade.php
- resources/views/layout/admin.blade.php
- routes/web.php
app/Http/Controllers/Admin/AdminController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers\Admin; | 3 | namespace App\Http\Controllers\Admin; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | use App\Models\Employer; | 6 | use App\Models\Employer; |
7 | use App\Models\User; | 7 | use App\Models\User; |
8 | use Illuminate\Http\Request; | 8 | use Illuminate\Http\Request; |
9 | use Illuminate\Support\Facades\Auth; | 9 | use Illuminate\Support\Facades\Auth; |
10 | use Illuminate\Support\Facades\Hash; | 10 | use Illuminate\Support\Facades\Hash; |
11 | use Illuminate\Support\Facades\Validator; | ||
11 | 12 | ||
12 | class AdminController extends Controller | 13 | class AdminController extends Controller |
13 | { | 14 | { |
14 | /** | 15 | /** |
15 | * Handle the incoming request. | 16 | * Handle the incoming request. |
16 | * | 17 | * |
17 | * @param \Illuminate\Http\Request $request | 18 | * @param \Illuminate\Http\Request $request |
18 | * @return \Illuminate\Http\Response | 19 | * @return \Illuminate\Http\Response |
19 | */ | 20 | */ |
20 | public function __invoke(Request $request) | 21 | public function __invoke(Request $request) |
21 | { | 22 | { |
22 | // | 23 | // |
23 | } | 24 | } |
24 | 25 | ||
25 | public function register() { | 26 | public function register() { |
26 | return view('admin.register'); | 27 | return view('admin.register'); |
27 | } | 28 | } |
28 | 29 | ||
29 | public function create(Request $request) { | 30 | public function create(Request $request) { |
30 | $request->validate([ | 31 | |
32 | $rules = [ | ||
31 | 'name' => 'required|string|max:255', | 33 | 'name' => 'required|string|max:255', |
32 | 'email' => 'required|string|email|max:255|unique:users', | 34 | 'email' => 'required|string|email|max:255|unique:users', |
33 | 'password' => 'required|string|min:8|confirmed', | 35 | 'password' => 'required|string|min:8|confirmed', |
34 | ]); | 36 | ]; |
35 | 37 | ||
36 | User::create([ | 38 | $messages = [ |
37 | 'name' => $request->name, | 39 | 'required' => 'Укажите обязательное поле «:attribute»', |
38 | 'email' => $request->email, | 40 | 'confirmed' => 'Пароли не совпадают', |
39 | 'password' => Hash::make($request->password), | 41 | 'email' => 'Введите корректный email', |
40 | ]); | 42 | 'min' => [ |
41 | 43 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | |
42 | return redirect() | 44 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
43 | ->route('admin.login') | 45 | ], |
44 | ->with('success', 'Вы успешно зарегистрировались'); | 46 | 'max' => [ |
47 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | ||
48 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | ||
49 | ], | ||
50 | ]; | ||
51 | |||
52 | $validator = Validator::make($request->all(), $rules, $messages); | ||
53 | |||
54 | if ($validator->fails()) { | ||
55 | return back()->withErrors($validator)->withInput(); //->route('admin.register') | ||
56 | |||
57 | } else { | ||
58 | $params = $request->all(); | ||
59 | |||
60 | User::create([ | ||
61 | 'name' => $request->name, | ||
62 | 'email' => $request->email, | ||
63 | 'password' => Hash::make($request->password), | ||
64 | ]); | ||
65 | return redirect() | ||
66 | ->route('admin.login') | ||
67 | ->with('success', 'Вы успешно зарегистрировались'); | ||
68 | } | ||
45 | } | 69 | } |
46 | 70 | ||
47 | public function login() { | 71 | public function login() { |
48 | return view('admin.login'); | 72 | return view('admin.login'); |
49 | } | 73 | } |
50 | 74 | ||
51 | // Аутентификация | 75 | // Аутентификация |
52 | public function autenticate(Request $request) { | 76 | public function autenticate(Request $request) { |
53 | $request->validate([ | 77 | //$request->validate( |
78 | $rules = [ | ||
54 | 'email' => 'required|string|email', | 79 | 'email' => 'required|string|email', |
55 | 'password' => 'required|string', | 80 | 'password' => 'required|string', |
56 | ]); | 81 | ]; |
57 | 82 | ||
58 | $credentials = $request->only('email', 'password'); | 83 | $messages = [ |
84 | 'required' => 'Укажите обязательное поле «:attribute»', | ||
85 | 'email' => 'Введите корректный email', | ||
86 | 'min' => [ | ||
87 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | ||
88 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | ||
89 | ], | ||
90 | 'max' => [ | ||
91 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | ||
92 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | ||
93 | ], | ||
94 | ]; | ||
59 | 95 | ||
60 | if (Auth::attempt($credentials, $request->has('remember'))) { | ||
61 | 96 | ||
62 | if (is_null(Auth::user()->email_verified_at)) | 97 | $validator = Validator::make($request->all(), $rules, $messages); |
63 | { | ||
64 | Auth::logout(); | ||
65 | return redirect() | ||
66 | ->route('admin.login') | ||
67 | ->withErrors('Адрес почты не подтвержден'); | ||
68 | } | ||
69 | 98 | ||
70 | if (!Auth::user()->admin) { | 99 | if ($validator->fails()) { |
71 | Auth::logout(); | 100 | return back()->withErrors($validator)->withInput(); |
72 | return redirect() | ||
73 | ->route('admin.login') | ||
74 | ->withErrors('Вы не являетесь админом!'); | ||
75 | 101 | ||
76 | } | 102 | } else { |
77 | 103 | ||
78 | return redirect() | 104 | $credentials = $request->only('email', 'password'); |
79 | ->route('admin.index') | 105 | |
80 | ->with('success', 'Вы вошли в личный кабинет.'); | 106 | if (Auth::attempt($credentials, $request->has('remember'))) { |
107 | |||
108 | if (is_null(Auth::user()->email_verified_at)) { | ||
109 | Auth::logout(); | ||
110 | return back()->withErrors('Адрес почты не подтвержден')->withInput(); | ||
111 | } | ||
112 | |||
113 | if (!Auth::user()->admin) { | ||
114 | Auth::logout(); | ||
115 | return //redirect()->route('admin.login') | ||
116 | back()->withErrors('Вы не являетесь админом!')->withInput();; | ||
117 | |||
118 | } | ||
119 | |||
120 | return redirect() | ||
121 | ->route('admin.index') | ||
122 | ->with('success', 'Вы вошли в личный кабинет.'); | ||
123 | } | ||
81 | } | 124 | } |
82 | 125 | ||
83 | return redirect() | 126 | return redirect() |
84 | ->route('admin.login') | 127 | ->route('admin.login') |
85 | ->withErrors('Неверный логин или пароль!'); | 128 | ->withErrors('Неверный логин или пароль!')->withInput(); |
129 | |||
86 | } | 130 | } |
87 | 131 | ||
88 | public function logout() { | 132 | public function logout() { |
89 | Auth::logout(); | 133 | Auth::logout(); |
90 | return redirect()->route('index') | 134 | return redirect()->route('index') |
91 | ->with('success', 'Вы вышли из личного кабинета'); | 135 | ->with('success', 'Вы вышли из личного кабинета'); |
92 | } | 136 | } |
93 | 137 | ||
94 | public function index() { | 138 | public function index() { |
95 | $all_user = User::query()->count(); | 139 | $all_user = User::query()->count(); |
96 | $all_employer = User::where('is_worker', '0')->count(); | 140 | $all_employer = User::where('is_worker', '0')->count(); |
97 | $all_worker = User::where('is_worker', '1')->count(); | 141 | $all_worker = User::where('is_worker', '1')->count(); |
98 | $all_admin = User::where('admin', '1')->count(); | 142 | $all_admin = User::where('admin', '1')->count(); |
99 | return view('admin.index', compact('all_employer', 'all_user', 'all_worker', 'all_admin')); | 143 | return view('admin.index', compact('all_employer', 'all_user', 'all_worker', 'all_admin')); |
100 | } | 144 | } |
101 | 145 | ||
146 | public function index_admin(Request $request) { | ||
147 | if ($request->ajax()) { | ||
148 | $user = User::find($request->id); | ||
149 | $request->offsetUnset('id'); | ||
150 | $user->update($request->all()); | ||
151 | } | ||
152 | |||
153 | $users = User::where('admin', '1')->paginate(15); |
app/Http/Controllers/Admin/EmployersController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\User; | ||
7 | use Illuminate\Http\Request; | ||
8 | |||
9 | class EmployersController extends Controller | ||
10 | { | ||
11 | public function index(Request $request) { | ||
12 | if ($request->ajax()) { | ||
13 | $user = User::find($request->id); | ||
14 | $request->offsetUnset('id'); | ||
15 | $user->update($request->all()); | ||
16 | } | ||
17 | |||
18 | $users = User::where('is_worker', '0')->paginate(15); | ||
19 | if ($request->ajax()) { | ||
20 | return view('admin.employer.index_ajax', compact('users')); | ||
21 | } else { | ||
22 | return view('admin.employer.index', compact('users')); | ||
23 | } | ||
24 | } | ||
25 | } | ||
26 |
app/Http/Controllers/Admin/UsersController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\User; | ||
7 | use Illuminate\Http\Request; | ||
8 | |||
9 | class UsersController extends Controller | ||
10 | { | ||
11 | public function index(Request $request) { | ||
12 | if ($request->ajax()) { | ||
13 | $user = User::find($request->id); | ||
14 | $request->offsetUnset('id'); | ||
15 | $user->update($request->all()); | ||
16 | } | ||
17 | |||
18 | $users = User::query()->paginate(15); | ||
19 | |||
20 | if ($request->ajax()) { | ||
21 | return view('admin.users.index_ajax', compact('users')); | ||
22 | } else { | ||
23 | return view('admin.users.index', compact('users')); | ||
24 | } | ||
25 | } | ||
26 | |||
27 | } | ||
28 |
app/Http/Controllers/Admin/WorkersController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\User; | ||
7 | use Illuminate\Http\Request; | ||
8 | |||
9 | class WorkersController extends Controller | ||
10 | { | ||
11 | public function index(Request $request) { | ||
12 | if ($request->ajax()) { | ||
13 | $user = User::find($request->id); | ||
14 | $request->offsetUnset('id'); | ||
15 | $user->update($request->all()); | ||
16 | } | ||
17 | |||
18 | $users = User::where('is_worker', '1')->paginate(15); | ||
19 | |||
20 | if ($request->ajax()) { | ||
21 | return view('admin.worker.index_ajax', compact('users')); | ||
22 | } else { | ||
23 | return view('admin.worker.index', compact('users')); | ||
24 | } | ||
25 | } | ||
26 | } | ||
27 |
app/Models/Employer.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 5 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
6 | use Illuminate\Database\Eloquent\Model; | 6 | use Illuminate\Database\Eloquent\Model; |
7 | 7 | ||
8 | class Employer extends Model | 8 | class Employer extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | |||
12 | protected $fillable = [ | ||
13 | 'name_company', | ||
14 | 'email', | ||
15 | 'telephone', | ||
16 | 'logo', | ||
17 | 'rate', | ||
18 | 'user_id', | ||
19 | 'sort', | ||
20 | 'text', | ||
21 | 'address', | ||
22 | 'map', | ||
23 | 'site', | ||
24 | ]; | ||
25 | |||
26 | /* | ||
27 | * Связь таблицы users с таблицей employers | ||
28 | */ | ||
29 | public function users() { | ||
30 | return $this->belongsTo(User::class, 'user_id'); | ||
31 | } | ||
32 | |||
11 | } | 33 | } |
12 | 34 |
app/Models/User.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | // use Illuminate\Contracts\Auth\MustVerifyEmail; | 5 | // use Illuminate\Contracts\Auth\MustVerifyEmail; |
6 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 6 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
7 | use Illuminate\Foundation\Auth\User as Authenticatable; | 7 | use Illuminate\Foundation\Auth\User as Authenticatable; |
8 | use Illuminate\Notifications\Notifiable; | 8 | use Illuminate\Notifications\Notifiable; |
9 | use Laravel\Sanctum\HasApiTokens; | 9 | use Laravel\Sanctum\HasApiTokens; |
10 | 10 | ||
11 | class User extends Authenticatable | 11 | class User extends Authenticatable |
12 | { | 12 | { |
13 | use HasApiTokens, HasFactory, Notifiable; | 13 | use HasApiTokens, HasFactory, Notifiable; |
14 | 14 | ||
15 | /** | 15 | /** |
16 | * The attributes that are mass assignable. | 16 | * The attributes that are mass assignable. |
17 | * | 17 | * |
18 | * @var array<int, string> | 18 | * @var array<int, string> |
19 | */ | 19 | */ |
20 | protected $fillable = [ | 20 | protected $fillable = [ |
21 | 'name', | 21 | 'name', |
22 | 'email', | 22 | 'email', |
23 | 'password', | 23 | 'password', |
24 | 'admin', | ||
25 | 'telephone', | ||
26 | 'surname', | ||
27 | 'name_man', | ||
28 | 'surname2', | ||
29 | 'is_worker', | ||
30 | 'is_lookin', | ||
31 | 'is_message', | ||
32 | 'is_public', | ||
33 | 'is_remove', | ||
34 | 'is_ban', | ||
35 | 'is_new', | ||
24 | ]; | 36 | ]; |
25 | 37 | ||
26 | /** | 38 | /** |
27 | * The attributes that should be hidden for serialization. | 39 | * The attributes that should be hidden for serialization. |
28 | * | 40 | * |
29 | * @var array<int, string> | 41 | * @var array<int, string> |
30 | */ | 42 | */ |
31 | protected $hidden = [ | 43 | protected $hidden = [ |
32 | 'password', | 44 | 'password', |
33 | 'remember_token', | 45 | 'remember_token', |
34 | ]; | 46 | ]; |
35 | 47 | ||
36 | /** | 48 | /** |
37 | * The attributes that should be cast. | 49 | * The attributes that should be cast. |
38 | * | 50 | * |
39 | * @var array<string, string> | 51 | * @var array<string, string> |
40 | */ | 52 | */ |
41 | protected $casts = [ | 53 | protected $casts = [ |
42 | 'email_verified_at' => 'datetime', | 54 | 'email_verified_at' => 'datetime', |
43 | ]; | 55 | ]; |
56 | |||
57 | /* | ||
58 | * Связь Пользователей системы с работодателями | ||
59 | * users - employers | ||
60 | */ | ||
61 | public function employers() { | ||
62 | return $this->hasMany(Employer::class); | ||
63 | } | ||
64 | |||
65 | /* | ||
66 | * Связь Пользователей системы с работниками | ||
67 | * users - workers | ||
68 | */ | ||
69 | public function workers() { | ||
70 | return $this->hasMany(Worker::class); | ||
71 | } | ||
72 | |||
73 | /* | ||
74 | * Связь Пользователей системы с группами юзеров | ||
75 | * users - group_users | ||
76 | */ | ||
77 | public function groups() { | ||
78 | return $this->hasMany(Group_user::class); | ||
79 | } | ||
80 | |||
81 | /* | ||
82 | * Связь Пользователей системы с ссобщениями | ||
83 | * users - messages | ||
84 | */ | ||
85 | public function messages() { | ||
86 | return $this->hasMany(Message::class); | ||
87 | } | ||
88 | |||
89 | /* | ||
90 | * Связь Пользователей системы с статистика | ||
91 | * users - static_workers | ||
92 | */ | ||
93 | public function static_user() { | ||
94 | return $this->hasMany(Static_worker::class); | ||
95 | } | ||
96 | |||
97 | |||
44 | } | 98 | } |
45 | 99 |
app/Models/Worker.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 5 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
6 | use Illuminate\Database\Eloquent\Model; | 6 | use Illuminate\Database\Eloquent\Model; |
7 | 7 | ||
8 | class Worker extends Model | 8 | class Worker extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | |||
12 | protected $fillable = [ | ||
13 | 'user_id', | ||
14 | 'status_work', | ||
15 | 'position_work', | ||
16 | 'telephone', | ||
17 | 'telephone2', | ||
18 | 'persent_anketa', | ||
19 | 'photo', | ||
20 | 'email_data', | ||
21 | 'status_profile', | ||
22 | 'old_year', | ||
23 | 'experience', | ||
24 | 'en_is', | ||
25 | 'education', | ||
26 | 'email', | ||
27 | 'interpassport', | ||
28 | 'mk', | ||
29 | 'vvp', | ||
30 | 'vlm', | ||
31 | 'reka_diplom', | ||
32 | 'more_diplom', | ||
33 | 'mpss', | ||
34 | 'tanker', | ||
35 | 'gmssb', | ||
36 | 'resume', | ||
37 | 'sort', | ||
38 | 'updated_at', | ||
39 | 'text', | ||
40 | 'address', | ||
41 | 'city', | ||
42 | ]; | ||
43 | |||
44 | /* | ||
45 | * Связь таблицы users с таблицей workers | ||
46 | */ | ||
47 | public function users() { | ||
48 | return $this->belongsTo(User::class, 'user_id'); | ||
49 | } | ||
11 | } | 50 | } |
12 | 51 |
database/migrations/2023_05_17_090650_alter_group_users_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('group_users', function (Blueprint $table) { | ||
17 | $table->bigInteger('user_id')->nullable(false); | ||
18 | }); | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Reverse the migrations. | ||
23 | * | ||
24 | * @return void | ||
25 | */ | ||
26 | public function down() | ||
27 | { | ||
28 | Schema::table('group_users', function (Blueprint $table) { | ||
29 | $table->dropColumn('user_id'); | ||
30 | }); | ||
31 | } | ||
32 | }; | ||
33 |
database/migrations/2023_05_17_090749_alter_messages_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('messages', function (Blueprint $table) { | ||
17 | $table->string('title', 255)->nullable(true); | ||
18 | $table->string('file', 255)->nullable(true); | ||
19 | }); | ||
20 | } | ||
21 | |||
22 | /** | ||
23 | * Reverse the migrations. | ||
24 | * | ||
25 | * @return void | ||
26 | */ | ||
27 | public function down() | ||
28 | { | ||
29 | Schema::table('messages', function (Blueprint $table) { | ||
30 | $table->dropColumn('title'); | ||
31 | $table->dropColumn('file'); | ||
32 | }); | ||
33 | } | ||
34 | }; | ||
35 |
database/migrations/2023_05_17_090923_alter_employers_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('employers', function (Blueprint $table) { | ||
17 | $table->string('address', 255)->nullable(true); | ||
18 | $table->string('map', 255)->nullable(true); | ||
19 | $table->string('site', 255)->nullable(true); | ||
20 | }); | ||
21 | } | ||
22 | |||
23 | /** | ||
24 | * Reverse the migrations. | ||
25 | * | ||
26 | * @return void | ||
27 | */ | ||
28 | public function down() | ||
29 | { | ||
30 | Schema::table('employers', function (Blueprint $table) { | ||
31 | $table->dropColumn('address'); | ||
32 | $table->dropColumn('map'); | ||
33 | $table->dropColumn('site'); | ||
34 | }); | ||
35 | } | ||
36 | }; | ||
37 |
database/migrations/2023_05_17_090944_alter_workers_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('workers', function (Blueprint $table) { | ||
17 | $table->string('address', 255)->nullable(true); | ||
18 | $table->string('city', 255)->nullable(true); | ||
19 | $table->text('text')->nullable(true); | ||
20 | }); | ||
21 | } | ||
22 | |||
23 | /** | ||
24 | * Reverse the migrations. | ||
25 | * | ||
26 | * @return void | ||
27 | */ | ||
28 | public function down() | ||
29 | { | ||
30 | Schema::table('workers', function (Blueprint $table) { | ||
31 | $table->dropColumn('address'); | ||
32 | $table->dropColumn('city'); | ||
33 | $table->dropColumn('text'); | ||
34 | }); | ||
35 | } | ||
36 | }; | ||
37 |
database/migrations/2023_05_17_095512_alter_users_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('users', function (Blueprint $table) { | ||
17 | $table->boolean('is_remove')->default(false); | ||
18 | $table->boolean('is_ban')->default(false); | ||
19 | $table->boolean('is_new')->default(true); | ||
20 | }); | ||
21 | } | ||
22 | |||
23 | /** | ||
24 | * Reverse the migrations. | ||
25 | * | ||
26 | * @return void | ||
27 | */ | ||
28 | public function down() | ||
29 | { | ||
30 | Schema::table('users', function (Blueprint $table) { | ||
31 | $table->dropColumn('is_remove'); | ||
32 | $table->dropColumn('is_ban'); | ||
33 | $table->dropColumn('is_new'); | ||
34 | }); | ||
35 | } | ||
36 | }; | ||
37 |
resources/views/admin/employer/index.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Работодатели']) | |
2 | |||
3 | @section('script') | ||
4 | <script> | ||
5 | $(document).ready(function() { | ||
6 | $(document).on('click', '.checkban', function () { | ||
7 | var this_ = $(this); | ||
8 | var value = this_.val(); | ||
9 | var ajax_block = $('#ajax_block'); | ||
10 | var bool = 0; | ||
11 | |||
12 | if(this.checked){ | ||
13 | bool = 1; | ||
14 | } else { | ||
15 | bool = 0; | ||
16 | } | ||
17 | |||
18 | $.ajax({ | ||
19 | type: "GET", | ||
20 | url: "{{ url()->full()}}", | ||
21 | data: "id=" + value + "&is_ban=" + bool, | ||
22 | success: function (data) { | ||
23 | console.log('Обновление таблицы пользователей '); | ||
24 | //data = JSON.parse(data); | ||
25 | console.log(data); | ||
26 | ajax_block.html(data); | ||
27 | }, | ||
28 | headers: { | ||
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
30 | }, | ||
31 | error: function (data) { | ||
32 | console.log('Error: ' + data); | ||
33 | } | ||
34 | }); | ||
35 | }); | ||
36 | |||
37 | }); | ||
38 | </script> | ||
39 | @endsection | ||
40 | |||
41 | @section('content') | ||
42 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | ||
43 | <div class="w-full overflow-x-auto"> | ||
44 | <table class="w-full whitespace-no-wrap"> | ||
45 | <thead> | ||
46 | <tr | ||
47 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | ||
48 | > | ||
49 | <th class="px-4 py-3">№</th> | ||
50 | <th class="px-4 py-3">Название компании</th> | ||
51 | <th class="px-4 py-3">Email/Телефон</th> | ||
52 | <th class="px-4 py-3">Имя</th> | ||
53 | <th class="px-4 py-3">Дата регистрации</th> | ||
54 | <th class="px-4 py-3">Изменить</th> | ||
55 | <th class="px-4 py-3">Блокировать</th> | ||
56 | </tr> | ||
57 | </thead> | ||
58 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
59 | @foreach($users as $user) | ||
60 | <tr class="text-gray-700 dark:text-gray-400"> | ||
61 | <td class="px-4 py-3"> | ||
62 | {{$user->id}} | ||
63 | </td> | ||
64 | <td class="px-4 py-3"> | ||
65 | {{$user->name}} | ||
66 | </td> | ||
67 | <td class="px-4 py-3"> | ||
68 | <div class="flex items-center text-sm"> | ||
69 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
70 | <div | ||
71 | class="absolute inset-0 rounded-full shadow-inner" | ||
72 | aria-hidden="true" | ||
73 | ></div> | ||
74 | </div>--> | ||
75 | <div> | ||
76 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | ||
77 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
78 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | ||
79 | </p> | ||
80 | </div> | ||
81 | </div> | ||
82 | |||
83 | </td> | ||
84 | <td class="px-4 py-3 text-sm"> | ||
85 | {{ $user->name_man }} | ||
86 | </td> | ||
87 | <td class="px-4 py-3 text-sm"> | ||
88 | {{ $user->created_at }} | ||
89 | </td> | ||
90 | <td class="px-4 py-3 text-sm"> | ||
91 | <a href="">Изменить</a> | ||
92 | </td> | ||
93 | <td class="px-4 py-3 text-sm"> | ||
94 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | ||
95 | </td> | ||
96 | </tr> | ||
97 | @endforeach | ||
98 | </tbody> | ||
99 | </table> | ||
100 | </div> | ||
101 | |||
102 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | ||
103 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
104 | </div> | ||
105 | </div> | ||
106 | @endsection | ||
107 |
resources/views/admin/employer/index_ajax.blade.php
File was created | 1 | <div class="w-full overflow-x-auto"> | |
2 | <table class="w-full whitespace-no-wrap"> | ||
3 | <thead> | ||
4 | <tr | ||
5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | ||
6 | > | ||
7 | <th class="px-4 py-3">№</th> | ||
8 | <th class="px-4 py-3">Название компании</th> | ||
9 | <th class="px-4 py-3">Email/Телефон</th> | ||
10 | <th class="px-4 py-3">Имя</th> | ||
11 | <th class="px-4 py-3">Дата регистрации</th> | ||
12 | <th class="px-4 py-3">Изменить</th> | ||
13 | <th class="px-4 py-3">Блокировать</th> | ||
14 | </tr> | ||
15 | </thead> | ||
16 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
17 | @foreach($users as $user) | ||
18 | <tr class="text-gray-700 dark:text-gray-400"> | ||
19 | <td class="px-4 py-3"> | ||
20 | {{$user->id}} | ||
21 | </td> | ||
22 | <td class="px-4 py-3"> | ||
23 | {{$user->name}} | ||
24 | </td> | ||
25 | <td class="px-4 py-3"> | ||
26 | <div class="flex items-center text-sm"> | ||
27 | <!--<div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
28 | <div | ||
29 | class="absolute inset-0 rounded-full shadow-inner" | ||
30 | aria-hidden="true" | ||
31 | ></div> | ||
32 | </div>--> | ||
33 | <div> | ||
34 | <p class="font-semibold">{{ empty($user->employers->email) ? $user->email : $user->employers->email }}</p> | ||
35 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
36 | {{ empty($user->employers->telephone) ? $user->telephone : $user->employers->telephone }} | ||
37 | </p> | ||
38 | </div> | ||
39 | </div> | ||
40 | |||
41 | </td> | ||
42 | <td class="px-4 py-3 text-sm"> | ||
43 | {{ $user->name_man }} | ||
44 | </td> | ||
45 | <td class="px-4 py-3 text-sm"> | ||
46 | {{ $user->created_at }} | ||
47 | </td> | ||
48 | <td class="px-4 py-3 text-sm"> | ||
49 | <a href="">Изменить</a> | ||
50 | </td> | ||
51 | <td class="px-4 py-3 text-sm"> | ||
52 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | ||
53 | </td> | ||
54 | </tr> | ||
55 | @endforeach | ||
56 | </tbody> | ||
57 | </table> | ||
58 | </div> | ||
59 | |||
60 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | ||
61 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
62 | <?=$users->links('admin.pagginate'); ?> | ||
63 | </div> | ||
64 | |||
65 |
resources/views/admin/login.blade.php
1 | @extends('layout.authorize', ['title' => 'Вход в административную панель']) | 1 | @extends('layout.authorize', ['title' => 'Вход в административную панель']) |
2 | 2 | ||
3 | @section('image') | 3 | @section('image') |
4 | <img | 4 | <img |
5 | aria-hidden="true" | 5 | aria-hidden="true" |
6 | class="object-cover w-full h-full dark:hidden" | 6 | class="object-cover w-full h-full dark:hidden" |
7 | src="{{ asset('assets/img/login-office.jpeg') }}" | 7 | src="{{ asset('assets/img/login-office.jpeg') }}" |
8 | alt="Office" | 8 | alt="Office" |
9 | /> | 9 | /> |
10 | <img | 10 | <img |
11 | aria-hidden="true" | 11 | aria-hidden="true" |
12 | class="hidden object-cover w-full h-full dark:block" | 12 | class="hidden object-cover w-full h-full dark:block" |
13 | src="{{ asset('assets/img/login-office-dark.jpeg') }}" | 13 | src="{{ asset('assets/img/login-office-dark.jpeg') }}" |
14 | alt="Office" | 14 | alt="Office" |
15 | /> | 15 | /> |
16 | @endsection | 16 | @endsection |
17 | 17 | ||
18 | @section('content') | 18 | @section('content') |
19 | <h1 class="mb-4 text-xl font-semibold text-gray-700 dark:text-gray-200"> | 19 | <h1 class="mb-4 text-xl font-semibold text-gray-700 dark:text-gray-200"> |
20 | Авторизация | 20 | Авторизация |
21 | </h1> | 21 | </h1> |
22 | 22 | ||
23 | <form method="post" action="{{ route('admin.auth') }}"> | 23 | <form method="post" action="{{ route('admin.auth') }}"> |
24 | @csrf | 24 | @csrf |
25 | <label class="block text-sm"> | 25 | <label class="block text-sm"> |
26 | <span class="text-gray-700 dark:text-gray-400">Email</span> | 26 | <span class="text-gray-700 dark:text-gray-400">Email</span> |
27 | <input name="email" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 27 | <input name="email" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
28 | placeholder="Email пользователя"/> | 28 | placeholder="Email пользователя" value="{{ old('email') }}"/> |
29 | </label> | 29 | </label> |
30 | <label class="block mt-4 text-sm"> | 30 | <label class="block mt-4 text-sm"> |
31 | <span class="text-gray-700 dark:text-gray-400">Пароль</span> | 31 | <span class="text-gray-700 dark:text-gray-400">Пароль</span> |
32 | <input | 32 | <input |
33 | name="password" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 33 | name="password" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
34 | placeholder="Пароль" | 34 | placeholder="Пароль" |
35 | type="password" | 35 | type="password" |
36 | /> | 36 | /> |
37 | </label> | 37 | </label> |
38 | <div class="form-group form-check"> | 38 | <div class="form-group form-check"> |
39 | <input type="checkbox" class="form-check-input" name="remember" id="remember"> | 39 | <input type="checkbox" class="form-check-input" name="remember" id="remember"> |
40 | <label class="form-check-label" for="remember"> | 40 | <label class="form-check-label" for="remember"> |
41 | Запомнить меня | 41 | Запомнить меня |
42 | </label> | 42 | </label> |
43 | </div> | 43 | </div> |
44 | 44 | ||
45 | <!-- You should use a button here, as the anchor is only used for the example --> | 45 | <!-- You should use a button here, as the anchor is only used for the example --> |
46 | <button type="submit" | 46 | <button type="submit" |
47 | class="block w-full px-4 py-2 mt-4 text-sm font-medium leading-5 text-center text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 47 | class="block w-full px-4 py-2 mt-4 text-sm font-medium leading-5 text-center text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
48 | > | 48 | > |
49 | Войти | 49 | Войти |
50 | </button> | 50 | </button> |
51 | </form> | 51 | </form> |
52 | <hr class="my-8" /> | 52 | <hr class="my-8" /> |
53 | <!-- | 53 | <!-- |
54 | <button | 54 | <button |
55 | class="flex items-center justify-center w-full px-4 py-2 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" | 55 | class="flex items-center justify-center w-full px-4 py-2 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" |
56 | > | 56 | > |
57 | <svg | 57 | <svg |
58 | class="w-4 h-4 mr-2" | 58 | class="w-4 h-4 mr-2" |
59 | aria-hidden="true" | 59 | aria-hidden="true" |
60 | viewBox="0 0 24 24" | 60 | viewBox="0 0 24 24" |
61 | fill="currentColor" | 61 | fill="currentColor" |
62 | > | 62 | > |
63 | <path | 63 | <path |
64 | d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" | 64 | d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" |
65 | /> | 65 | /> |
66 | </svg> | 66 | </svg> |
67 | Github | 67 | Github |
68 | </button> | 68 | </button> |
69 | <button | 69 | <button |
70 | class="flex items-center justify-center w-full px-4 py-2 mt-4 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" | 70 | class="flex items-center justify-center w-full px-4 py-2 mt-4 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" |
71 | > | 71 | > |
72 | <svg | 72 | <svg |
73 | class="w-4 h-4 mr-2" | 73 | class="w-4 h-4 mr-2" |
74 | aria-hidden="true" | 74 | aria-hidden="true" |
75 | viewBox="0 0 24 24" | 75 | viewBox="0 0 24 24" |
76 | fill="currentColor" | 76 | fill="currentColor" |
77 | > | 77 | > |
78 | <path | 78 | <path |
79 | d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z" | 79 | d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z" |
80 | /> | 80 | /> |
81 | </svg> | 81 | </svg> |
82 | 82 | ||
83 | </button> | 83 | </button> |
84 | --> | 84 | --> |
85 | <!-- <p class="mt-4"> | 85 | <!-- <p class="mt-4"> |
86 | <a | 86 | <a |
87 | class="text-sm font-medium text-purple-600 dark:text-purple-400 hover:underline" | 87 | class="text-sm font-medium text-purple-600 dark:text-purple-400 hover:underline" |
88 | href="./forgot-password.html" | 88 | href="./forgot-password.html" |
89 | > | 89 | > |
90 | Forgot your password? | 90 | Forgot your password? |
91 | </a> | 91 | </a> |
92 | </p>--> | 92 | </p>--> |
93 | <p class="mt-1"> | 93 | <p class="mt-1"> |
94 | <a | 94 | <a |
95 | class="text-sm font-medium text-purple-600 dark:text-purple-400 hover:underline" | 95 | class="text-sm font-medium text-purple-600 dark:text-purple-400 hover:underline" |
96 | href="{{ route('admin.register') }}" | 96 | href="{{ route('admin.register') }}" |
97 | > | 97 | > |
98 | Создание аккаунта | 98 | Создание аккаунта |
99 | </a> | 99 | </a> |
100 | </p> | 100 | </p> |
101 | @endsection | 101 | @endsection |
102 | 102 |
resources/views/admin/pagginate.blade.php
File was created | 1 | @if ($paginator->hasPages()) | |
2 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | ||
3 | <nav aria-label="Table navigation"> | ||
4 | <ul class="inline-flex items-center"> | ||
5 | @if ($paginator->onFirstPage()) | ||
6 | <li> | ||
7 | <button | ||
8 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | ||
9 | aria-label="Previous" | ||
10 | > | ||
11 | <svg | ||
12 | aria-hidden="true" | ||
13 | class="w-4 h-4 fill-current" | ||
14 | viewBox="0 0 20 20" | ||
15 | > | ||
16 | <path | ||
17 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | ||
18 | clip-rule="evenodd" | ||
19 | fill-rule="evenodd" | ||
20 | ></path> | ||
21 | </svg> | ||
22 | </button> | ||
23 | </li> | ||
24 | @else | ||
25 | <li> | ||
26 | <a href="{{ $paginator->previousPageUrl() }}" | ||
27 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | ||
28 | aria-label="Previous" | ||
29 | > | ||
30 | <svg | ||
31 | aria-hidden="true" | ||
32 | class="w-4 h-4 fill-current" | ||
33 | viewBox="0 0 20 20" | ||
34 | > | ||
35 | <path | ||
36 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | ||
37 | clip-rule="evenodd" | ||
38 | fill-rule="evenodd" | ||
39 | ></path> | ||
40 | </svg> | ||
41 | </a> | ||
42 | </li> | ||
43 | @endif | ||
44 | |||
45 | @foreach ($elements as $element) | ||
46 | @if (is_string($element)) | ||
47 | |||
48 | <li class="disabled pagination__item"><span>{{ $element }}</span></li> | ||
49 | |||
50 | @endif | ||
51 | @if (is_array($element)) | ||
52 | @foreach ($element as $page => $url) | ||
53 | @if ($page == $paginator->currentPage()) | ||
54 | <li> | ||
55 | <button class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple"> | ||
56 | {{$page}} | ||
57 | </button> | ||
58 | </li> | ||
59 | @else | ||
60 | <li> | ||
61 | <a href="{{$url}}" class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple"> | ||
62 | {{$page}} | ||
63 | </a> | ||
64 | </li> | ||
65 | @endif | ||
66 | @endforeach | ||
67 | @endif | ||
68 | @endforeach | ||
69 | |||
70 | @if ($paginator->hasMorePages()) | ||
71 | <li> | ||
72 | <a href="{{ $paginator->nextPageUrl() }}" | ||
73 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | ||
74 | aria-label="Next" | ||
75 | > | ||
76 | <svg | ||
77 | class="w-4 h-4 fill-current" | ||
78 | aria-hidden="true" | ||
79 | viewBox="0 0 20 20" | ||
80 | > | ||
81 | <path | ||
82 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | ||
83 | clip-rule="evenodd" | ||
84 | fill-rule="evenodd" | ||
85 | ></path> | ||
86 | </svg> | ||
87 | </a> | ||
88 | </li> | ||
89 | @else | ||
90 | <li> | ||
91 | <button | ||
92 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | ||
93 | aria-label="Next" | ||
94 | > | ||
95 | <svg | ||
96 | class="w-4 h-4 fill-current" | ||
97 | aria-hidden="true" | ||
98 | viewBox="0 0 20 20" | ||
99 | > | ||
100 | <path | ||
101 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | ||
102 | clip-rule="evenodd" | ||
103 | fill-rule="evenodd" | ||
104 | ></path> | ||
105 | </svg> | ||
106 | </button> | ||
107 | </li> | ||
108 | @endif | ||
109 | </ul> | ||
110 | </nav> | ||
111 | </span> | ||
112 | @endif | ||
113 |
resources/views/admin/register.blade.php
1 | @extends('layout.authorize', ['title' => 'Регистрация в административной панели']) | 1 | @extends('layout.authorize', ['title' => 'Регистрация в административной панели']) |
2 | 2 | ||
3 | @section('image') | 3 | @section('image') |
4 | <img | 4 | <img |
5 | aria-hidden="true" | 5 | aria-hidden="true" |
6 | class="object-cover w-full h-full dark:hidden" | 6 | class="object-cover w-full h-full dark:hidden" |
7 | src="{{ asset('assets/img/create-account-office.jpeg') }}" | 7 | src="{{ asset('assets/img/create-account-office.jpeg') }}" |
8 | alt="Office" | 8 | alt="Office" |
9 | /> | 9 | /> |
10 | <img | 10 | <img |
11 | aria-hidden="true" | 11 | aria-hidden="true" |
12 | class="hidden object-cover w-full h-full dark:block" | 12 | class="hidden object-cover w-full h-full dark:block" |
13 | src="{{ asset('assets/img/create-account-office-dark.jpeg') }}" | 13 | src="{{ asset('assets/img/create-account-office-dark.jpeg') }}" |
14 | alt="Office" | 14 | alt="Office" |
15 | /> | 15 | /> |
16 | @endsection | 16 | @endsection |
17 | 17 | ||
18 | @section('content') | 18 | @section('content') |
19 | <h1 | 19 | <h1 |
20 | class="mb-4 text-xl font-semibold text-gray-700 dark:text-gray-200" | 20 | class="mb-4 text-xl font-semibold text-gray-700 dark:text-gray-200" |
21 | > | 21 | > |
22 | Создание аккаунта | 22 | Создание аккаунта |
23 | </h1> | 23 | </h1> |
24 | <form method="POST" action="{{ route('admin.create') }}"> | 24 | <form method="POST" action="{{ route('admin.create') }}"> |
25 | @csrf | 25 | @csrf |
26 | <label class="block text-sm"> | 26 | <label class="block text-sm"> |
27 | <span class="text-gray-700 dark:text-gray-400">Имя</span> | 27 | <span class="text-gray-700 dark:text-gray-400">Имя</span> |
28 | <input id="name" name="name" | 28 | <input id="name" name="name" |
29 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 29 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
30 | placeholder="Введите имя" value="{{ old('name') }}" | 30 | placeholder="Введите имя" value="{{ old('name') }}" |
31 | /> | 31 | /> |
32 | @error('name') | 32 | @error('name') |
33 | <span class="invalid-feedback" role="alert"> | 33 | <span class="invalid-feedback" role="alert"> |
34 | <strong>{{ $message }}</strong> | 34 | <strong>{{ $message }}</strong> |
35 | </span> | 35 | </span> |
36 | @enderror | 36 | @enderror |
37 | </label> | 37 | </label> |
38 | 38 | ||
39 | <label class="block text-sm"> | 39 | <label class="block text-sm"> |
40 | <span class="text-gray-700 dark:text-gray-400">Email</span> | 40 | <span class="text-gray-700 dark:text-gray-400">Email</span> |
41 | <input id="email" name="email" type="email" | 41 | <input id="email" name="email" type="email" |
42 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 42 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
43 | placeholder="Введите email" value="{{ old('email') }}" | 43 | placeholder="Введите email" value="{{ old('email') }}" autocomplete="email" |
44 | /> | 44 | /> |
45 | @error('email') | 45 | @error('email') |
46 | <span class="invalid-feedback" role="alert"> | 46 | <span class="invalid-feedback" role="alert"> |
47 | <strong>{{ $message }}</strong> | 47 | <strong>{{ $message }}</strong> |
48 | </span> | 48 | </span> |
49 | @enderror | 49 | @enderror |
50 | </label> | 50 | </label> |
51 | 51 | ||
52 | <label class="block mt-4 text-sm"> | 52 | <label class="block mt-4 text-sm"> |
53 | <span class="text-gray-700 dark:text-gray-400">Пароль</span> | 53 | <span class="text-gray-700 dark:text-gray-400">Пароль</span> |
54 | <input id="password" name="password" | 54 | <input id="password" name="password" |
55 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 55 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
56 | placeholder="Пароль" | 56 | placeholder="Пароль" |
57 | type="password" | 57 | type="password" |
58 | /> | 58 | /> |
59 | @error('password') | 59 | @error('password') |
60 | <span class="invalid-feedback" role="alert"> | 60 | <span class="invalid-feedback" role="alert"> |
61 | <strong>{{ $message }}</strong> | 61 | <strong>{{ $message }}</strong> |
62 | </span> | 62 | </span> |
63 | @enderror | 63 | @enderror |
64 | </label> | 64 | </label> |
65 | 65 | ||
66 | <label class="block mt-4 text-sm"> | 66 | <label class="block mt-4 text-sm"> |
67 | <span class="text-gray-700 dark:text-gray-400"> | 67 | <span class="text-gray-700 dark:text-gray-400"> |
68 | Подтверждение пароля | 68 | Подтверждение пароля |
69 | </span> | 69 | </span> |
70 | <input id="password-confirm" name="password_confirmation" | 70 | <input id="password-confirm" name="password_confirmation" |
71 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 71 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
72 | placeholder="Подтверждение пароля" | 72 | placeholder="Подтверждение пароля" |
73 | type="password" | 73 | type="password" |
74 | /> | 74 | /> |
75 | </label> | 75 | </label> |
76 | 76 | ||
77 | <div class="flex mt-6 text-sm"> | 77 | <div class="flex mt-6 text-sm"> |
78 | <label class="flex items-center dark:text-gray-400"> | 78 | <label class="flex items-center dark:text-gray-400"> |
79 | <input | 79 | <input |
80 | type="checkbox" | 80 | type="checkbox" |
81 | class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | 81 | class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" |
82 | /> | 82 | /> |
83 | <span class="ml-2"> | 83 | <span class="ml-2"> |
84 | Я принимаю условия | 84 | Я принимаю условия |
85 | <span class="underline">политики безопасности</span> | 85 | <span class="underline">политики безопасности</span> |
86 | </span> | 86 | </span> |
87 | </label> | 87 | </label> |
88 | </div> | 88 | </div> |
89 | 89 | ||
90 | <!-- You should use a button here, as the anchor is only used for the example --> | 90 | <!-- You should use a button here, as the anchor is only used for the example --> |
91 | <button | 91 | <button |
92 | class="block w-full px-4 py-2 mt-4 text-sm font-medium leading-5 text-center text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 92 | class="block w-full px-4 py-2 mt-4 text-sm font-medium leading-5 text-center text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
93 | type="submit" | 93 | type="submit" |
94 | > | 94 | > |
95 | Создать пользователя | 95 | Создать пользователя |
96 | </button> | 96 | </button> |
97 | </form> | 97 | </form> |
98 | <hr class="my-8" /> | 98 | <hr class="my-8" /> |
99 | 99 | ||
100 | <!--<button | 100 | <!--<button |
101 | class="flex items-center justify-center w-full px-4 py-2 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" | 101 | class="flex items-center justify-center w-full px-4 py-2 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" |
102 | > | 102 | > |
103 | <svg | 103 | <svg |
104 | class="w-4 h-4 mr-2" | 104 | class="w-4 h-4 mr-2" |
105 | aria-hidden="true" | 105 | aria-hidden="true" |
106 | viewBox="0 0 24 24" | 106 | viewBox="0 0 24 24" |
107 | fill="currentColor" | 107 | fill="currentColor" |
108 | > | 108 | > |
109 | <path | 109 | <path |
110 | d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" | 110 | d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" |
111 | /> | 111 | /> |
112 | </svg> | 112 | </svg> |
113 | Github | 113 | Github |
114 | </button> | 114 | </button> |
115 | <button | 115 | <button |
116 | class="flex items-center justify-center w-full px-4 py-2 mt-4 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" | 116 | class="flex items-center justify-center w-full px-4 py-2 mt-4 text-sm font-medium leading-5 text-white text-gray-700 transition-colors duration-150 border border-gray-300 rounded-lg dark:text-gray-400 active:bg-transparent hover:border-gray-500 focus:border-gray-500 active:text-gray-500 focus:outline-none focus:shadow-outline-gray" |
117 | > | 117 | > |
118 | <svg | 118 | <svg |
119 | class="w-4 h-4 mr-2" | 119 | class="w-4 h-4 mr-2" |
120 | aria-hidden="true" | 120 | aria-hidden="true" |
121 | viewBox="0 0 24 24" | 121 | viewBox="0 0 24 24" |
122 | fill="currentColor" | 122 | fill="currentColor" |
123 | > | 123 | > |
124 | <path | 124 | <path |
125 | d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z" | 125 | d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z" |
126 | /> | 126 | /> |
127 | </svg> | 127 | </svg> |
128 | 128 | ||
129 | </button>--> | 129 | </button>--> |
130 | 130 | ||
131 | <p class="mt-4"> | 131 | <p class="mt-4"> |
132 | <a | 132 | <a |
133 | class="text-sm font-medium text-purple-600 dark:text-purple-400 hover:underline" | 133 | class="text-sm font-medium text-purple-600 dark:text-purple-400 hover:underline" |
134 | href="./login.html" | 134 | href="./login.html" |
135 | > | 135 | > |
136 | Already have an account? Login | 136 | Already have an account? Login |
137 | </a> | 137 | </a> |
138 | </p> | 138 | </p> |
139 | @endsection | 139 | @endsection |
140 | 140 |
resources/views/admin/users/index.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Пользователи системы']) | |
2 | |||
3 | @section('script') | ||
4 | <script> | ||
5 | $(document).ready(function() { | ||
6 | $(document).on('click', '.checkban', function () { | ||
7 | var this_ = $(this); | ||
8 | var value = this_.val(); | ||
9 | var ajax_block = $('#ajax_block'); | ||
10 | var bool = 0; | ||
11 | |||
12 | if(this.checked){ | ||
13 | bool = 1; | ||
14 | } else { | ||
15 | bool = 0; | ||
16 | } | ||
17 | |||
18 | $.ajax({ | ||
19 | type: "GET", | ||
20 | url: "{{ url()->full()}}", | ||
21 | data: "id=" + value + "&is_ban=" + bool, | ||
22 | success: function (data) { | ||
23 | console.log('Обновление таблицы пользователей '); | ||
24 | //data = JSON.parse(data); | ||
25 | console.log(data); | ||
26 | ajax_block.html(data); | ||
27 | }, | ||
28 | headers: { | ||
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
30 | }, | ||
31 | error: function (data) { | ||
32 | console.log('Error: ' + data); | ||
33 | } | ||
34 | }); | ||
35 | }); | ||
36 | |||
37 | $(document).on('click', '.checknew', function () { | ||
38 | var this_ = $(this); | ||
39 | var value = this_.val(); | ||
40 | var ajax_block = $('#ajax_block'); | ||
41 | var bool = 0; | ||
42 | |||
43 | if(this.checked){ | ||
44 | bool = 1; | ||
45 | } else { | ||
46 | bool = 0; | ||
47 | } | ||
48 | |||
49 | $.ajax({ | ||
50 | type: "GET", | ||
51 | url: "{{ url()->full()}}", | ||
52 | data: "id=" + value + "&is_new=" + bool, | ||
53 | success: function (data) { | ||
54 | console.log('Обновление таблицы пользователей '); | ||
55 | //data = JSON.parse(data); | ||
56 | console.log(data); | ||
57 | ajax_block.html(data); | ||
58 | }, | ||
59 | headers: { | ||
60 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
61 | }, | ||
62 | error: function (data) { | ||
63 | console.log('Error: ' + data); | ||
64 | } | ||
65 | }); | ||
66 | }); | ||
67 | }); | ||
68 | </script> | ||
69 | @endsection | ||
70 | |||
71 | @section('content') | ||
72 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | ||
73 | <div class="w-full overflow-x-auto"> | ||
74 | <table class="w-full whitespace-no-wrap"> | ||
75 | <thead> | ||
76 | <tr | ||
77 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | ||
78 | > | ||
79 | <th class="px-4 py-3">№</th> | ||
80 | <th class="px-4 py-3">Имя</th> | ||
81 | <th class="px-4 py-3">Email/логин</th> | ||
82 | <th class="px-4 py-3">Работодатель/работник/администратор</th> | ||
83 | <th class="px-4 py-3">Заблокированный</th> | ||
84 | <th class="px-4 py-3">Новый</th> | ||
85 | <th class="px-4 py-3">Дата регистрации</th> | ||
86 | </tr> | ||
87 | </thead> | ||
88 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
89 | @foreach($users as $user) | ||
90 | <tr class="text-gray-700 dark:text-gray-400"> | ||
91 | <td class="px-4 py-3"> | ||
92 | {{$user->id}} | ||
93 | </td> | ||
94 | <td class="px-4 py-3"> | ||
95 | <!--<div class="flex items-center text-sm"> | ||
96 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
97 | <div | ||
98 | class="absolute inset-0 rounded-full shadow-inner" | ||
99 | aria-hidden="true" | ||
100 | ></div> | ||
101 | </div> | ||
102 | <div> | ||
103 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | ||
104 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
105 | Все пользователи сайта | ||
106 | </p> | ||
107 | </div> | ||
108 | </div> | ||
109 | --> | ||
110 | {{ $user->name }} | ||
111 | </td> | ||
112 | <td class="px-4 py-3 text-sm"> | ||
113 | {{ $user->email }} | ||
114 | </td> | ||
115 | <td class="px-4 py-3 text-xs"> | ||
116 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | ||
117 | @if ($user->is_worker) | ||
118 | Работник | ||
119 | @else | ||
120 | Работодатель | ||
121 | @endif | ||
122 | </span> | ||
123 | @if ($user->admin) | ||
124 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | ||
125 | Администратор | ||
126 | </span> | ||
127 | @endif | ||
128 | </td> | ||
129 | <td class="px-4 py-3 text-sm"> | ||
130 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | ||
131 | </td> | ||
132 | <td class="px-4 py-3 text-sm"> | ||
133 | <input type="checkbox" class="checknew" value="{{$user->id}}" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> | ||
134 | </td> | ||
135 | <td class="px-4 py-3 text-sm"> | ||
136 | {{ $user->created_at }} | ||
137 | </td> | ||
138 | </tr> | ||
139 | @endforeach | ||
140 | </tbody> | ||
141 | </table> | ||
142 | </div> | ||
143 | |||
144 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | ||
145 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
146 | <?=$users->links('admin.pagginate'); ?> | ||
147 | </div> | ||
148 | |||
149 | |||
150 | <!--<div | ||
151 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" | ||
152 | > | ||
153 | <span class="flex items-center col-span-3"> | ||
154 | Showing 21-30 of 100 | ||
155 | </span> | ||
156 | <span class="col-span-2"></span> | ||
157 | |||
158 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | ||
159 | <nav aria-label="Table navigation"> | ||
160 | <ul class="inline-flex items-center"> | ||
161 | <li> | ||
162 | <button | ||
163 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | ||
164 | aria-label="Previous" | ||
165 | > | ||
166 | <svg | ||
167 | aria-hidden="true" | ||
168 | class="w-4 h-4 fill-current" | ||
169 | viewBox="0 0 20 20" | ||
170 | > | ||
171 | <path | ||
172 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | ||
173 | clip-rule="evenodd" | ||
174 | fill-rule="evenodd" | ||
175 | ></path> | ||
176 | </svg> | ||
177 | </button> | ||
178 | </li> | ||
179 | <li> | ||
180 | <button | ||
181 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
182 | > | ||
183 | 1 | ||
184 | </button> | ||
185 | </li> | ||
186 | <li> | ||
187 | <button | ||
188 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
189 | > | ||
190 | 2 | ||
191 | </button> | ||
192 | </li> | ||
193 | <li> | ||
194 | <button | ||
195 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
196 | > | ||
197 | 3 | ||
198 | </button> | ||
199 | </li> | ||
200 | <li> | ||
201 | <button | ||
202 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
203 | > | ||
204 | 4 | ||
205 | </button> | ||
206 | </li> | ||
207 | <li> | ||
208 | <span class="px-3 py-1">...</span> | ||
209 | </li> | ||
210 | <li> | ||
211 | <button | ||
212 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
213 | > | ||
214 | 8 | ||
215 | </button> | ||
216 | </li> | ||
217 | <li> | ||
218 | <button | ||
219 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
220 | > | ||
221 | 9 | ||
222 | </button> | ||
223 | </li> | ||
224 | <li> | ||
225 | <button | ||
226 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | ||
227 | aria-label="Next" | ||
228 | > | ||
229 | <svg | ||
230 | class="w-4 h-4 fill-current" | ||
231 | aria-hidden="true" | ||
232 | viewBox="0 0 20 20" | ||
233 | > | ||
234 | <path | ||
235 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | ||
236 | clip-rule="evenodd" | ||
237 | fill-rule="evenodd" | ||
238 | ></path> | ||
239 | </svg> | ||
240 | </button> | ||
241 | </li> | ||
242 | </ul> | ||
243 | </nav> | ||
244 | </span> | ||
245 | </div>--> | ||
246 | </div> | ||
247 | |||
248 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | ||
249 | |||
250 | |||
251 | @endsection | ||
252 |
resources/views/admin/users/index_ajax.blade.php
File was created | 1 | <div class="w-full overflow-x-auto"> | |
2 | <table class="w-full whitespace-no-wrap"> | ||
3 | <thead> | ||
4 | <tr | ||
5 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | ||
6 | > | ||
7 | <th class="px-4 py-3">№</th> | ||
8 | <th class="px-4 py-3">Имя</th> | ||
9 | <th class="px-4 py-3">Email/логин</th> | ||
10 | <th class="px-4 py-3">Работодатель/работник/администратор</th> | ||
11 | <th class="px-4 py-3">Заблокированный</th> | ||
12 | <th class="px-4 py-3">Новый</th> | ||
13 | <th class="px-4 py-3">Дата регистрации</th> | ||
14 | </tr> | ||
15 | </thead> | ||
16 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
17 | @foreach($users as $user) | ||
18 | <tr class="text-gray-700 dark:text-gray-400"> | ||
19 | <td class="px-4 py-3"> | ||
20 | {{$user->id}} | ||
21 | </td> | ||
22 | <td class="px-4 py-3"> | ||
23 | {{ $user->name }} | ||
24 | </td> | ||
25 | <td class="px-4 py-3 text-sm"> | ||
26 | {{ $user->email }} | ||
27 | </td> | ||
28 | <td class="px-4 py-3 text-xs"> | ||
29 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | ||
30 | @if ($user->is_worker) | ||
31 | Работник | ||
32 | @else | ||
33 | Работодатель | ||
34 | @endif | ||
35 | </span> | ||
36 | @if ($user->admin) | ||
37 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | ||
38 | Администратор | ||
39 | </span> | ||
40 | @endif | ||
41 | </td> | ||
42 | <td class="px-4 py-3 text-sm"> | ||
43 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | ||
44 | </td> | ||
45 | <td class="px-4 py-3 text-sm"> | ||
46 | <input type="checkbox" class="checknew" value="{{$user->id}}" name="new_{{$user->id}}" {{ ($user->is_new) ? "checked" : "" }}/> | ||
47 | </td> | ||
48 | <td class="px-4 py-3 text-sm"> | ||
49 | {{ $user->created_at }} | ||
50 | </td> | ||
51 | </tr> | ||
52 | @endforeach | ||
53 | </tbody> | ||
54 | </table> | ||
55 | </div> | ||
56 | |||
57 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | ||
58 | <?//=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
59 | <?=$users->links('admin.pagginate'); ?> | ||
60 | </div> | ||
61 |
resources/views/admin/worker/index.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Работники']) | |
2 | |||
3 | @section('script') | ||
4 | <script> | ||
5 | $(document).ready(function() { | ||
6 | $(document).on('click', '.checkban', function () { | ||
7 | var this_ = $(this); | ||
8 | var value = this_.val(); | ||
9 | var ajax_block = $('#ajax_block'); | ||
10 | var bool = 0; | ||
11 | |||
12 | if(this.checked){ | ||
13 | bool = 1; | ||
14 | } else { | ||
15 | bool = 0; | ||
16 | } | ||
17 | |||
18 | $.ajax({ | ||
19 | type: "GET", | ||
20 | url: "{{ url()->full()}}", | ||
21 | data: "id=" + value + "&is_ban=" + bool, | ||
22 | success: function (data) { | ||
23 | console.log('Обновление таблицы пользователей '); | ||
24 | //data = JSON.parse(data); | ||
25 | console.log(data); | ||
26 | ajax_block.html(data); | ||
27 | }, | ||
28 | headers: { | ||
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
30 | }, | ||
31 | error: function (data) { | ||
32 | console.log('Error: ' + data); | ||
33 | } | ||
34 | }); | ||
35 | }); | ||
36 | |||
37 | }); | ||
38 | </script> | ||
39 | @endsection | ||
40 | |||
41 | @section('content') | ||
42 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | ||
43 | <div class="w-full overflow-x-auto"> | ||
44 | <table class="w-full whitespace-no-wrap"> | ||
45 | <thead> | ||
46 | <tr | ||
47 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | ||
48 | > | ||
49 | <th class="px-4 py-3">№</th> | ||
50 | <th class="px-4 py-3">Имя</th> | ||
51 | <th class="px-4 py-3">Email/Телефон</th> | ||
52 | <th class="px-4 py-3">% заполнения анкеты</th> | ||
53 | <th class="px-4 py-3">Дата регистрации</th> | ||
54 | <th class="px-4 py-3">Изменить</th> | ||
55 | <th class="px-4 py-3">Блокировать</th> | ||
56 | </tr> | ||
57 | </thead> | ||
58 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
59 | @foreach($users as $user) | ||
60 | <tr class="text-gray-700 dark:text-gray-400"> | ||
61 | <td class="px-4 py-3"> | ||
62 | {{$user->id}} | ||
63 | </td> | ||
64 | <td class="px-4 py-3"> | ||
65 | {{ !empty($user->name_man) ? $user->name_man : $user->name }} | ||
66 | </td> | ||
67 | <td class="px-4 py-3 text-sm"> | ||
68 | <div class="flex items-center text-sm"> | ||
69 | <div> | ||
70 | <p class="font-semibold">{{ empty($user->workers->email) ? $user->email : $user->workers->email }}</p> | ||
71 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
72 | {{ empty($user->workers->telephone) ? $user->telephone : $user->workers->telephone }} | ||
73 | </p> | ||
74 | </div> | ||
75 | </div> | ||
76 | </td> | ||
77 | <td class="px-4 py-3 text-xs"> | ||
78 | @if (!empty($user->workers->persent_anketa)) | ||
79 | @if ($user->workers->persent_anketa > 40) | ||
80 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | ||
81 | {{$user->workers->persent_anketa}}% | ||
82 | </span> | ||
83 | @else | ||
84 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | ||
85 | {{$user->workers->persent_anketa}}% | ||
86 | </span> | ||
87 | @endif | ||
88 | @else | ||
89 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | ||
90 | 10% | ||
91 | </span> | ||
92 | @endif | ||
93 | </td> | ||
94 | <td class="px-4 py-3 text-sm"> | ||
95 | {{ $user->created_at }} | ||
96 | </td> | ||
97 | <td class="px-4 py-3 text-sm"> | ||
98 | <a href="">Изменить</a> | ||
99 | </td> | ||
100 | <td class="px-4 py-3 text-sm"> | ||
101 | <input type="checkbox" class="checkban" value="{{$user->id}}" name="ban_{{$user->id}}" {{ ($user->is_ban) ? "checked" : "" }}/> | ||
102 | </td> | ||
103 | </tr> | ||
104 | @endforeach | ||
105 | </tbody> | ||
106 | </table> | ||
107 | </div> | ||
108 | |||
109 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | ||
110 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
111 | </div> | ||
112 | |||
113 | |||
114 | <!--<div | ||
115 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" | ||
116 | > | ||
117 | <span class="flex items-center col-span-3"> | ||
118 | Showing 21-30 of 100 | ||
119 | </span> | ||
120 | <span class="col-span-2"></span> | ||
121 | |||
122 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | ||
123 | <nav aria-label="Table navigation"> | ||
124 | <ul class="inline-flex items-center"> | ||
125 | <li> | ||
126 | <button | ||
127 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | ||
128 | aria-label="Previous" | ||
129 | > | ||
130 | <svg | ||
131 | aria-hidden="true" | ||
132 | class="w-4 h-4 fill-current" | ||
133 | viewBox="0 0 20 20" | ||
134 | > | ||
135 | <path | ||
136 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | ||
137 | clip-rule="evenodd" | ||
138 | fill-rule="evenodd" | ||
139 | ></path> | ||
140 | </svg> | ||
141 | </button> | ||
142 | </li> | ||
143 | <li> | ||
144 | <button | ||
145 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
146 | > | ||
147 | 1 | ||
148 | </button> | ||
149 | </li> | ||
150 | <li> | ||
151 | <button | ||
152 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
153 | > | ||
154 | 2 | ||
155 | </button> | ||
156 | </li> | ||
157 | <li> | ||
158 | <button | ||
159 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
160 | > | ||
161 | 3 | ||
162 | </button> | ||
163 | </li> | ||
164 | <li> | ||
165 | <button | ||
166 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
167 | > | ||
168 | 4 | ||
169 | </button> | ||
170 | </li> | ||
171 | <li> | ||
172 | <span class="px-3 py-1">...</span> | ||
173 | </li> | ||
174 | <li> | ||
175 | <button | ||
176 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
177 | > | ||
178 | 8 | ||
179 | </button> | ||
180 | </li> | ||
181 | <li> | ||
182 | <button | ||
183 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
184 | > | ||
185 | 9 | ||
186 | </button> | ||
187 | </li> | ||
188 | <li> | ||
189 | <button | ||
190 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | ||
191 | aria-label="Next" | ||
192 | > | ||
193 | <svg | ||
194 | class="w-4 h-4 fill-current" | ||
195 | aria-hidden="true" | ||
196 | viewBox="0 0 20 20" | ||
197 | > | ||
198 | <path | ||
199 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | ||
200 | clip-rule="evenodd" | ||
201 | fill-rule="evenodd" | ||
202 | ></path> | ||
203 | </svg> | ||
204 | </button> | ||
205 | </li> | ||
206 | </ul> | ||
207 | </nav> | ||
208 | </span> | ||
209 | </div>--> | ||
210 | </div> | ||
211 | |||
212 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | ||
213 | |||
214 | |||
215 | @endsection | ||
216 |
resources/views/admin/worker/index_ajax.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Работники']) | |
2 | |||
3 | @section('content') | ||
4 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | ||
5 | <div class="w-full overflow-x-auto"> | ||
6 | <table class="w-full whitespace-no-wrap"> | ||
7 | <thead> | ||
8 | <tr | ||
9 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | ||
10 | > | ||
11 | <th class="px-4 py-3">№</th> | ||
12 | <th class="px-4 py-3">Имя</th> | ||
13 | <th class="px-4 py-3">Email/логин</th> | ||
14 | <th class="px-4 py-3">Работодатель/работник</th> | ||
15 | <th class="px-4 py-3">Дата регистрации</th> | ||
16 | </tr> | ||
17 | </thead> | ||
18 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
19 | @foreach($users as $user) | ||
20 | <tr class="text-gray-700 dark:text-gray-400"> | ||
21 | <td class="px-4 py-3"> | ||
22 | {{$user->id}} | ||
23 | </td> | ||
24 | <td class="px-4 py-3"> | ||
25 | <!--<div class="flex items-center text-sm"> | ||
26 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
27 | <div | ||
28 | class="absolute inset-0 rounded-full shadow-inner" | ||
29 | aria-hidden="true" | ||
30 | ></div> | ||
31 | </div> | ||
32 | <div> | ||
33 | <p class="font-semibold"><a href="{{ route('admin.users') }}">Пользователи</a></p> | ||
34 | <p class="text-xs text-gray-600 dark:text-gray-400"> | ||
35 | Все пользователи сайта | ||
36 | </p> | ||
37 | </div> | ||
38 | </div> | ||
39 | --> | ||
40 | {{ $user->name }} | ||
41 | </td> | ||
42 | <td class="px-4 py-3 text-sm"> | ||
43 | {{ $user->email }} | ||
44 | </td> | ||
45 | <td class="px-4 py-3 text-xs"> | ||
46 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | ||
47 | @if ($user->is_worker) | ||
48 | Работник | ||
49 | @else | ||
50 | Работодатель | ||
51 | @endif | ||
52 | </span> | ||
53 | @if ($user->admin) | ||
54 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | ||
55 | Администратор | ||
56 | </span> | ||
57 | @endif | ||
58 | </td> | ||
59 | <td class="px-4 py-3 text-sm"> | ||
60 | {{ $user->created_at }} | ||
61 | </td> | ||
62 | </tr> | ||
63 | @endforeach | ||
64 | </tbody> | ||
65 | </table> | ||
66 | </div> | ||
67 | |||
68 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | ||
69 | <?=$users->appends($_GET)->links('admin.pagginate'); ?> | ||
70 | </div> | ||
71 | |||
72 | |||
73 | <!--<div | ||
74 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" | ||
75 | > | ||
76 | <span class="flex items-center col-span-3"> | ||
77 | Showing 21-30 of 100 | ||
78 | </span> | ||
79 | <span class="col-span-2"></span> | ||
80 | |||
81 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | ||
82 | <nav aria-label="Table navigation"> | ||
83 | <ul class="inline-flex items-center"> | ||
84 | <li> | ||
85 | <button | ||
86 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | ||
87 | aria-label="Previous" | ||
88 | > | ||
89 | <svg | ||
90 | aria-hidden="true" | ||
91 | class="w-4 h-4 fill-current" | ||
92 | viewBox="0 0 20 20" | ||
93 | > | ||
94 | <path | ||
95 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | ||
96 | clip-rule="evenodd" | ||
97 | fill-rule="evenodd" | ||
98 | ></path> | ||
99 | </svg> | ||
100 | </button> | ||
101 | </li> | ||
102 | <li> | ||
103 | <button | ||
104 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
105 | > | ||
106 | 1 | ||
107 | </button> | ||
108 | </li> | ||
109 | <li> | ||
110 | <button | ||
111 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
112 | > | ||
113 | 2 | ||
114 | </button> | ||
115 | </li> | ||
116 | <li> | ||
117 | <button | ||
118 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
119 | > | ||
120 | 3 | ||
121 | </button> | ||
122 | </li> | ||
123 | <li> | ||
124 | <button | ||
125 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
126 | > | ||
127 | 4 | ||
128 | </button> | ||
129 | </li> | ||
130 | <li> | ||
131 | <span class="px-3 py-1">...</span> | ||
132 | </li> | ||
133 | <li> | ||
134 | <button | ||
135 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
136 | > | ||
137 | 8 | ||
138 | </button> | ||
139 | </li> | ||
140 | <li> | ||
141 | <button | ||
142 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | ||
143 | > | ||
144 | 9 | ||
145 | </button> | ||
146 | </li> | ||
147 | <li> | ||
148 | <button | ||
149 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | ||
150 | aria-label="Next" | ||
151 | > | ||
152 | <svg | ||
153 | class="w-4 h-4 fill-current" | ||
154 | aria-hidden="true" | ||
155 | viewBox="0 0 20 20" | ||
156 | > | ||
157 | <path | ||
158 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | ||
159 | clip-rule="evenodd" | ||
160 | fill-rule="evenodd" | ||
161 | ></path> | ||
162 | </svg> | ||
163 | </button> | ||
164 | </li> | ||
165 | </ul> | ||
166 | </nav> | ||
167 | </span> | ||
168 | </div>--> | ||
169 | </div> | ||
170 | |||
171 | <?//=$users->appends($_GET)->links('catalogs.paginate'); ?> | ||
172 | |||
173 | |||
174 | @endsection | ||
175 |
resources/views/layout/admin.blade.php
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html :class="{ 'theme-dark': dark }" x-data="data()" lang="{{ str_replace('_', '-', app()->getLocale()) }}"> | 2 | <html :class="{ 'theme-dark': dark }" x-data="data()" lang="{{ str_replace('_', '-', app()->getLocale()) }}"> |
3 | <head> | 3 | <head> |
4 | <meta charset="UTF-8" /> | 4 | <meta charset="UTF-8" /> |
5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
6 | <title>{{$title}}</title> | 6 | <title>{{$title}}</title> |
7 | <link | 7 | <link |
8 | href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" | 8 | href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" |
9 | rel="stylesheet" | 9 | rel="stylesheet" |
10 | /> | 10 | /> |
11 | <link rel="stylesheet" href="{{ asset('./assets/css/tailwind.output.css')}}" /> | 11 | <link rel="stylesheet" href="{{ asset('./assets/css/tailwind.output.css')}}" /> |
12 | <script | 12 | <script |
13 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" | 13 | src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" |
14 | defer | 14 | defer |
15 | ></script> | 15 | ></script> |
16 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> | 16 | <script src="{{ asset('./assets/js/init-alpine.js') }}"></script> |
17 | <link | 17 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css"/> |
18 | rel="stylesheet" | 18 | <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script> |
19 | href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css" | 19 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> |
20 | /> | ||
21 | <script | ||
22 | src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" | ||
23 | defer | ||
24 | ></script> | ||
25 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> | 20 | <script src="{{ asset('./assets/js/charts-lines.js') }}" defer></script> |
26 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> | 21 | <script src="{{ asset('./assets/js/charts-pie.js') }}" defer></script> |
27 | </head> | 22 | </head> |
28 | <body> | 23 | <body> |
29 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> | 24 | <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }"> |
30 | <!-- Desktop sidebar --> | 25 | <!-- Desktop sidebar --> |
31 | <aside | 26 | <aside |
32 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" | 27 | class="z-20 hidden w-64 overflow-y-auto bg-white dark:bg-gray-800 md:block flex-shrink-0" |
33 | > | 28 | > |
34 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 29 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
35 | <a | 30 | <a |
36 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 31 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
37 | href="{{ route('admin.index') }}" | 32 | href="{{ route('admin.index') }}" |
38 | > | 33 | > |
39 | Админка | 34 | Админка |
40 | </a> | 35 | </a> |
41 | <ul class="mt-6"> | 36 | <ul class="mt-6"> |
42 | <li class="relative px-6 py-3"> | 37 | <li class="relative px-6 py-3"> |
43 | <span | 38 | <span |
44 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 39 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
45 | aria-hidden="true" | 40 | aria-hidden="true" |
46 | ></span> | 41 | ></span> |
47 | <a | 42 | <a |
48 | class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" | 43 | class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" |
49 | href="{{ route('admin.index') }}" | 44 | href="{{ route('admin.index') }}" |
50 | > | 45 | > |
51 | <svg | 46 | <svg |
52 | class="w-5 h-5" | 47 | class="w-5 h-5" |
53 | aria-hidden="true" | 48 | aria-hidden="true" |
54 | fill="none" | 49 | fill="none" |
55 | stroke-linecap="round" | 50 | stroke-linecap="round" |
56 | stroke-linejoin="round" | 51 | stroke-linejoin="round" |
57 | stroke-width="2" | 52 | stroke-width="2" |
58 | viewBox="0 0 24 24" | 53 | viewBox="0 0 24 24" |
59 | stroke="currentColor" | 54 | stroke="currentColor" |
60 | > | 55 | > |
61 | <path | 56 | <path |
62 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" | 57 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" |
63 | ></path> | 58 | ></path> |
64 | </svg> | 59 | </svg> |
65 | <span class="ml-4">Главная страница</span> | 60 | <span class="ml-4">Главная страница</span> |
66 | </a> | 61 | </a> |
67 | </li> | 62 | </li> |
68 | </ul> | 63 | </ul> |
69 | <ul> | 64 | <ul> |
70 | <li class="relative px-6 py-3"> | 65 | <li class="relative px-6 py-3"> |
71 | <a | 66 | <a |
72 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 67 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
73 | href="{{ route('admin.users') }}" | 68 | href="{{ route('admin.users') }}" |
74 | > | 69 | > |
75 | <svg | 70 | <svg |
76 | class="w-5 h-5" | 71 | class="w-5 h-5" |
77 | aria-hidden="true" | 72 | aria-hidden="true" |
78 | fill="none" | 73 | fill="none" |
79 | stroke-linecap="round" | 74 | stroke-linecap="round" |
80 | stroke-linejoin="round" | 75 | stroke-linejoin="round" |
81 | stroke-width="2" | 76 | stroke-width="2" |
82 | viewBox="0 0 24 24" | 77 | viewBox="0 0 24 24" |
83 | stroke="currentColor" | 78 | stroke="currentColor" |
84 | > | 79 | > |
85 | <path | 80 | <path |
86 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 81 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
87 | ></path> | 82 | ></path> |
88 | </svg> | 83 | </svg> |
89 | <span class="ml-4">Пользователи</span> | 84 | <span class="ml-4">Пользователи</span> |
90 | </a> | 85 | </a> |
91 | </li> | 86 | </li> |
92 | <li class="relative px-6 py-3"> | 87 | <li class="relative px-6 py-3"> |
93 | <a | 88 | <a |
94 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 89 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
95 | href="{{ route('admin.employers') }}" | 90 | href="{{ route('admin.employers') }}" |
96 | > | 91 | > |
97 | <svg | 92 | <svg |
98 | class="w-5 h-5" | 93 | class="w-5 h-5" |
99 | aria-hidden="true" | 94 | aria-hidden="true" |
100 | fill="none" | 95 | fill="none" |
101 | stroke-linecap="round" | 96 | stroke-linecap="round" |
102 | stroke-linejoin="round" | 97 | stroke-linejoin="round" |
103 | stroke-width="2" | 98 | stroke-width="2" |
104 | viewBox="0 0 24 24" | 99 | viewBox="0 0 24 24" |
105 | stroke="currentColor" | 100 | stroke="currentColor" |
106 | > | 101 | > |
107 | <path | 102 | <path |
108 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 103 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
109 | ></path> | 104 | ></path> |
110 | </svg> | 105 | </svg> |
111 | <span class="ml-4">Работодатели</span> | 106 | <span class="ml-4">Работодатели</span> |
112 | </a> | 107 | </a> |
113 | </li> | 108 | </li> |
114 | <li class="relative px-6 py-3"> | 109 | <li class="relative px-6 py-3"> |
115 | <a | 110 | <a |
116 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 111 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
117 | href="{{ route('admin.workers') }}" | 112 | href="{{ route('admin.workers') }}" |
118 | > | 113 | > |
119 | <svg | 114 | <svg |
120 | class="w-5 h-5" | 115 | class="w-5 h-5" |
121 | aria-hidden="true" | 116 | aria-hidden="true" |
122 | fill="none" | 117 | fill="none" |
123 | stroke-linecap="round" | 118 | stroke-linecap="round" |
124 | stroke-linejoin="round" | 119 | stroke-linejoin="round" |
125 | stroke-width="2" | 120 | stroke-width="2" |
126 | viewBox="0 0 24 24" | 121 | viewBox="0 0 24 24" |
127 | stroke="currentColor" | 122 | stroke="currentColor" |
128 | > | 123 | > |
129 | <path | 124 | <path |
130 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 125 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
131 | ></path> | 126 | ></path> |
132 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 127 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
133 | </svg> | 128 | </svg> |
134 | <span class="ml-4">Соискатели</span> | 129 | <span class="ml-4">Соискатели</span> |
135 | </a> | 130 | </a> |
136 | </li> | 131 | </li> |
137 | <li class="relative px-6 py-3"> | 132 | <li class="relative px-6 py-3"> |
138 | <a | 133 | <a |
139 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 134 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
140 | href="{{ route('admin.ad-employers') }}" | 135 | href="{{ route('admin.ad-employers') }}" |
141 | > | 136 | > |
142 | <svg | 137 | <svg |
143 | class="w-5 h-5" | 138 | class="w-5 h-5" |
144 | aria-hidden="true" | 139 | aria-hidden="true" |
145 | fill="none" | 140 | fill="none" |
146 | stroke-linecap="round" | 141 | stroke-linecap="round" |
147 | stroke-linejoin="round" | 142 | stroke-linejoin="round" |
148 | stroke-width="2" | 143 | stroke-width="2" |
149 | viewBox="0 0 24 24" | 144 | viewBox="0 0 24 24" |
150 | stroke="currentColor" | 145 | stroke="currentColor" |
151 | > | 146 | > |
152 | <path | 147 | <path |
153 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" | 148 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" |
154 | ></path> | 149 | ></path> |
155 | </svg> | 150 | </svg> |
156 | <span class="ml-4">Вакансии</span> | 151 | <span class="ml-4">Вакансии</span> |
157 | </a> | 152 | </a> |
158 | </li> | 153 | </li> |
159 | <li class="relative px-6 py-3"> | 154 | <li class="relative px-6 py-3"> |
160 | <a | 155 | <a |
161 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 156 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
162 | href="{{ route('admin.categories') }}" | 157 | href="{{ route('admin.categories') }}" |
163 | > | 158 | > |
164 | <svg | 159 | <svg |
165 | class="w-5 h-5" | 160 | class="w-5 h-5" |
166 | aria-hidden="true" | 161 | aria-hidden="true" |
167 | fill="none" | 162 | fill="none" |
168 | stroke-linecap="round" | 163 | stroke-linecap="round" |
169 | stroke-linejoin="round" | 164 | stroke-linejoin="round" |
170 | stroke-width="2" | 165 | stroke-width="2" |
171 | viewBox="0 0 24 24" | 166 | viewBox="0 0 24 24" |
172 | stroke="currentColor" | 167 | stroke="currentColor" |
173 | > | 168 | > |
174 | <path | 169 | <path |
175 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" | 170 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" |
176 | ></path> | 171 | ></path> |
177 | </svg> | 172 | </svg> |
178 | <span class="ml-4">Категории</span> | 173 | <span class="ml-4">Категории</span> |
179 | </a> | 174 | </a> |
180 | </li> | 175 | </li> |
181 | <li class="relative px-6 py-3"> | 176 | <li class="relative px-6 py-3"> |
182 | <a | 177 | <a |
183 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 178 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
184 | href="{{ route('admin.job-titles') }}" | 179 | href="{{ route('admin.job-titles') }}" |
185 | > | 180 | > |
186 | <svg | 181 | <svg |
187 | class="w-5 h-5" | 182 | class="w-5 h-5" |
188 | aria-hidden="true" | 183 | aria-hidden="true" |
189 | fill="none" | 184 | fill="none" |
190 | stroke-linecap="round" | 185 | stroke-linecap="round" |
191 | stroke-linejoin="round" | 186 | stroke-linejoin="round" |
192 | stroke-width="2" | 187 | stroke-width="2" |
193 | viewBox="0 0 24 24" | 188 | viewBox="0 0 24 24" |
194 | stroke="currentColor" | 189 | stroke="currentColor" |
195 | > | 190 | > |
196 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 191 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
197 | </svg> | 192 | </svg> |
198 | <span class="ml-4">Должности</span> | 193 | <span class="ml-4">Должности</span> |
199 | </a> | 194 | </a> |
200 | </li> | 195 | </li> |
201 | <li class="relative px-6 py-3"> | 196 | <li class="relative px-6 py-3"> |
202 | <a | 197 | <a |
203 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 198 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
204 | href="{{ route('admin.messages') }}" | 199 | href="{{ route('admin.messages') }}" |
205 | > | 200 | > |
206 | <svg | 201 | <svg |
207 | class="w-5 h-5" | 202 | class="w-5 h-5" |
208 | aria-hidden="true" | 203 | aria-hidden="true" |
209 | fill="none" | 204 | fill="none" |
210 | stroke-linecap="round" | 205 | stroke-linecap="round" |
211 | stroke-linejoin="round" | 206 | stroke-linejoin="round" |
212 | stroke-width="2" | 207 | stroke-width="2" |
213 | viewBox="0 0 24 24" | 208 | viewBox="0 0 24 24" |
214 | stroke="currentColor" | 209 | stroke="currentColor" |
215 | > | 210 | > |
216 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 211 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
217 | </svg> | 212 | </svg> |
218 | <span class="ml-4">Сообщения</span> | 213 | <span class="ml-4">Сообщения</span> |
219 | </a> | 214 | </a> |
220 | </li> | 215 | </li> |
221 | <li class="relative px-6 py-3"> | 216 | <li class="relative px-6 py-3"> |
222 | <a | 217 | <a |
223 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 218 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
224 | href="{{ route('admin.groups') }}" | 219 | href="{{ route('admin.groups') }}" |
225 | > | 220 | > |
226 | <svg | 221 | <svg |
227 | class="w-5 h-5" | 222 | class="w-5 h-5" |
228 | aria-hidden="true" | 223 | aria-hidden="true" |
229 | fill="none" | 224 | fill="none" |
230 | stroke-linecap="round" | 225 | stroke-linecap="round" |
231 | stroke-linejoin="round" | 226 | stroke-linejoin="round" |
232 | stroke-width="2" | 227 | stroke-width="2" |
233 | viewBox="0 0 24 24" | 228 | viewBox="0 0 24 24" |
234 | stroke="currentColor" | 229 | stroke="currentColor" |
235 | > | 230 | > |
236 | <path | 231 | <path |
237 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 232 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
238 | ></path> | 233 | ></path> |
239 | </svg> | 234 | </svg> |
240 | <span class="ml-4">Группы пользователей</span> | 235 | <span class="ml-4">Группы пользователей</span> |
241 | </a> | 236 | </a> |
242 | </li> | 237 | </li> |
243 | <li class="relative px-6 py-3"> | 238 | <li class="relative px-6 py-3"> |
244 | <button | 239 | <button |
245 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 240 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
246 | @click="togglePagesMenu" | 241 | @click="togglePagesMenu" |
247 | aria-haspopup="true" | 242 | aria-haspopup="true" |
248 | > | 243 | > |
249 | <span class="inline-flex items-center"> | 244 | <span class="inline-flex items-center"> |
250 | <svg | 245 | <svg |
251 | class="w-5 h-5" | 246 | class="w-5 h-5" |
252 | aria-hidden="true" | 247 | aria-hidden="true" |
253 | fill="none" | 248 | fill="none" |
254 | stroke-linecap="round" | 249 | stroke-linecap="round" |
255 | stroke-linejoin="round" | 250 | stroke-linejoin="round" |
256 | stroke-width="2" | 251 | stroke-width="2" |
257 | viewBox="0 0 24 24" | 252 | viewBox="0 0 24 24" |
258 | stroke="currentColor" | 253 | stroke="currentColor" |
259 | > | 254 | > |
260 | <path | 255 | <path |
261 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" | 256 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" |
262 | ></path> | 257 | ></path> |
263 | </svg> | 258 | </svg> |
264 | <span class="ml-4">Страницы</span> | 259 | <span class="ml-4">Страницы</span> |
265 | </span> | 260 | </span> |
266 | <svg | 261 | <svg |
267 | class="w-4 h-4" | 262 | class="w-4 h-4" |
268 | aria-hidden="true" | 263 | aria-hidden="true" |
269 | fill="currentColor" | 264 | fill="currentColor" |
270 | viewBox="0 0 20 20" | 265 | viewBox="0 0 20 20" |
271 | > | 266 | > |
272 | <path | 267 | <path |
273 | fill-rule="evenodd" | 268 | fill-rule="evenodd" |
274 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" | 269 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" |
275 | clip-rule="evenodd" | 270 | clip-rule="evenodd" |
276 | ></path> | 271 | ></path> |
277 | </svg> | 272 | </svg> |
278 | </button> | 273 | </button> |
279 | <template x-if="isPagesMenuOpen"> | 274 | <template x-if="isPagesMenuOpen"> |
280 | <ul | 275 | <ul |
281 | x-transition:enter="transition-all ease-in-out duration-300" | 276 | x-transition:enter="transition-all ease-in-out duration-300" |
282 | x-transition:enter-start="opacity-25 max-h-0" | 277 | x-transition:enter-start="opacity-25 max-h-0" |
283 | x-transition:enter-end="opacity-100 max-h-xl" | 278 | x-transition:enter-end="opacity-100 max-h-xl" |
284 | x-transition:leave="transition-all ease-in-out duration-300" | 279 | x-transition:leave="transition-all ease-in-out duration-300" |
285 | x-transition:leave-start="opacity-100 max-h-xl" | 280 | x-transition:leave-start="opacity-100 max-h-xl" |
286 | x-transition:leave-end="opacity-0 max-h-0" | 281 | x-transition:leave-end="opacity-0 max-h-0" |
287 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" | 282 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" |
288 | aria-label="submenu" | 283 | aria-label="submenu" |
289 | > | 284 | > |
290 | <li | 285 | <li |
291 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 286 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
292 | > | 287 | > |
293 | <a class="w-full" href="pages/login.html">Login</a> | 288 | <a class="w-full" href="pages/login.html">Login</a> |
294 | </li> | 289 | </li> |
295 | <li | 290 | <li |
296 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 291 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
297 | > | 292 | > |
298 | <a class="w-full" href="pages/create-account.html"> | 293 | <a class="w-full" href="pages/create-account.html"> |
299 | Create account | 294 | Create account |
300 | </a> | 295 | </a> |
301 | </li> | 296 | </li> |
302 | <li | 297 | <li |
303 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 298 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
304 | > | 299 | > |
305 | <a class="w-full" href="pages/forgot-password.html"> | 300 | <a class="w-full" href="pages/forgot-password.html"> |
306 | Forgot password | 301 | Forgot password |
307 | </a> | 302 | </a> |
308 | </li> | 303 | </li> |
309 | <li | 304 | <li |
310 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 305 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
311 | > | 306 | > |
312 | <a class="w-full" href="pages/404.html">404</a> | 307 | <a class="w-full" href="pages/404.html">404</a> |
313 | </li> | 308 | </li> |
314 | <li | 309 | <li |
315 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 310 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
316 | > | 311 | > |
317 | <a class="w-full" href="pages/blank.html">Blank</a> | 312 | <a class="w-full" href="pages/blank.html">Blank</a> |
318 | </li> | 313 | </li> |
319 | </ul> | 314 | </ul> |
320 | </template> | 315 | </template> |
321 | </li> | 316 | </li> |
322 | </ul> | 317 | </ul> |
323 | <!--<div class="px-6 my-6"> | 318 | <!--<div class="px-6 my-6"> |
324 | <button | 319 | <button |
325 | class="flex items-center justify-between w-full px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 320 | class="flex items-center justify-between w-full px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
326 | > | 321 | > |
327 | Create account | 322 | Create account |
328 | <span class="ml-2" aria-hidden="true">+</span> | 323 | <span class="ml-2" aria-hidden="true">+</span> |
329 | </button> | 324 | </button> |
330 | </div>--> | 325 | </div>--> |
331 | </div> | 326 | </div> |
332 | </aside> | 327 | </aside> |
333 | <!-- Mobile sidebar --> | 328 | <!-- Mobile sidebar --> |
334 | <!-- Backdrop --> | 329 | <!-- Backdrop --> |
335 | <div | 330 | <div |
336 | x-show="isSideMenuOpen" | 331 | x-show="isSideMenuOpen" |
337 | x-transition:enter="transition ease-in-out duration-150" | 332 | x-transition:enter="transition ease-in-out duration-150" |
338 | x-transition:enter-start="opacity-0" | 333 | x-transition:enter-start="opacity-0" |
339 | x-transition:enter-end="opacity-100" | 334 | x-transition:enter-end="opacity-100" |
340 | x-transition:leave="transition ease-in-out duration-150" | 335 | x-transition:leave="transition ease-in-out duration-150" |
341 | x-transition:leave-start="opacity-100" | 336 | x-transition:leave-start="opacity-100" |
342 | x-transition:leave-end="opacity-0" | 337 | x-transition:leave-end="opacity-0" |
343 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" | 338 | class="fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center" |
344 | ></div> | 339 | ></div> |
345 | <aside | 340 | <aside |
346 | class="fixed inset-y-0 z-20 flex-shrink-0 w-64 mt-16 overflow-y-auto bg-white dark:bg-gray-800 md:hidden" | 341 | class="fixed inset-y-0 z-20 flex-shrink-0 w-64 mt-16 overflow-y-auto bg-white dark:bg-gray-800 md:hidden" |
347 | x-show="isSideMenuOpen" | 342 | x-show="isSideMenuOpen" |
348 | x-transition:enter="transition ease-in-out duration-150" | 343 | x-transition:enter="transition ease-in-out duration-150" |
349 | x-transition:enter-start="opacity-0 transform -translate-x-20" | 344 | x-transition:enter-start="opacity-0 transform -translate-x-20" |
350 | x-transition:enter-end="opacity-100" | 345 | x-transition:enter-end="opacity-100" |
351 | x-transition:leave="transition ease-in-out duration-150" | 346 | x-transition:leave="transition ease-in-out duration-150" |
352 | x-transition:leave-start="opacity-100" | 347 | x-transition:leave-start="opacity-100" |
353 | x-transition:leave-end="opacity-0 transform -translate-x-20" | 348 | x-transition:leave-end="opacity-0 transform -translate-x-20" |
354 | @click.away="closeSideMenu" | 349 | @click.away="closeSideMenu" |
355 | @keydown.escape="closeSideMenu" | 350 | @keydown.escape="closeSideMenu" |
356 | > | 351 | > |
357 | <div class="py-4 text-gray-500 dark:text-gray-400"> | 352 | <div class="py-4 text-gray-500 dark:text-gray-400"> |
358 | <a | 353 | <a |
359 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" | 354 | class="ml-6 text-lg font-bold text-gray-800 dark:text-gray-200" |
360 | href="{{ route('admin.index') }}" | 355 | href="{{ route('admin.index') }}" |
361 | > | 356 | > |
362 | Админка | 357 | Админка |
363 | </a> | 358 | </a> |
364 | <ul class="mt-6"> | 359 | <ul class="mt-6"> |
365 | <li class="relative px-6 py-3"> | 360 | <li class="relative px-6 py-3"> |
366 | <span | 361 | <span |
367 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" | 362 | class="absolute inset-y-0 left-0 w-1 bg-purple-600 rounded-tr-lg rounded-br-lg" |
368 | aria-hidden="true" | 363 | aria-hidden="true" |
369 | ></span> | 364 | ></span> |
370 | <a | 365 | <a |
371 | class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" | 366 | class="inline-flex items-center w-full text-sm font-semibold text-gray-800 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200 dark:text-gray-100" |
372 | href="{{ route('admin.index') }}" | 367 | href="{{ route('admin.index') }}" |
373 | > | 368 | > |
374 | <svg | 369 | <svg |
375 | class="w-5 h-5" | 370 | class="w-5 h-5" |
376 | aria-hidden="true" | 371 | aria-hidden="true" |
377 | fill="none" | 372 | fill="none" |
378 | stroke-linecap="round" | 373 | stroke-linecap="round" |
379 | stroke-linejoin="round" | 374 | stroke-linejoin="round" |
380 | stroke-width="2" | 375 | stroke-width="2" |
381 | viewBox="0 0 24 24" | 376 | viewBox="0 0 24 24" |
382 | stroke="currentColor" | 377 | stroke="currentColor" |
383 | > | 378 | > |
384 | <path | 379 | <path |
385 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" | 380 | d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" |
386 | ></path> | 381 | ></path> |
387 | </svg> | 382 | </svg> |
388 | <span class="ml-4">Главная страница</span> | 383 | <span class="ml-4">Главная страница</span> |
389 | </a> | 384 | </a> |
390 | </li> | 385 | </li> |
391 | </ul> | 386 | </ul> |
392 | <ul> | 387 | <ul> |
393 | <li class="relative px-6 py-3"> | 388 | <li class="relative px-6 py-3"> |
394 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 389 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
395 | href="{{ route('admin.users') }}"> | 390 | href="{{ route('admin.users') }}"> |
396 | <svg | 391 | <svg |
397 | class="w-5 h-5" | 392 | class="w-5 h-5" |
398 | aria-hidden="true" | 393 | aria-hidden="true" |
399 | fill="none" | 394 | fill="none" |
400 | stroke-linecap="round" | 395 | stroke-linecap="round" |
401 | stroke-linejoin="round" | 396 | stroke-linejoin="round" |
402 | stroke-width="2" | 397 | stroke-width="2" |
403 | viewBox="0 0 24 24" | 398 | viewBox="0 0 24 24" |
404 | stroke="currentColor" | 399 | stroke="currentColor" |
405 | > | 400 | > |
406 | <path | 401 | <path |
407 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 402 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
408 | ></path> | 403 | ></path> |
409 | </svg> | 404 | </svg> |
410 | <span class="ml-4">Пользователи</span> | 405 | <span class="ml-4">Пользователи</span> |
411 | </a> | 406 | </a> |
412 | </li> | 407 | </li> |
413 | <li class="relative px-6 py-3"> | 408 | <li class="relative px-6 py-3"> |
414 | <a | 409 | <a |
415 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 410 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
416 | href="{{ route('admin.employers') }}" | 411 | href="{{ route('admin.employers') }}" |
417 | > | 412 | > |
418 | <svg | 413 | <svg |
419 | class="w-5 h-5" | 414 | class="w-5 h-5" |
420 | aria-hidden="true" | 415 | aria-hidden="true" |
421 | fill="none" | 416 | fill="none" |
422 | stroke-linecap="round" | 417 | stroke-linecap="round" |
423 | stroke-linejoin="round" | 418 | stroke-linejoin="round" |
424 | stroke-width="2" | 419 | stroke-width="2" |
425 | viewBox="0 0 24 24" | 420 | viewBox="0 0 24 24" |
426 | stroke="currentColor" | 421 | stroke="currentColor" |
427 | > | 422 | > |
428 | <path | 423 | <path |
429 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" | 424 | d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" |
430 | ></path> | 425 | ></path> |
431 | </svg> | 426 | </svg> |
432 | <span class="ml-4">Работодатели</span> | 427 | <span class="ml-4">Работодатели</span> |
433 | </a> | 428 | </a> |
434 | </li> | 429 | </li> |
435 | <li class="relative px-6 py-3"> | 430 | <li class="relative px-6 py-3"> |
436 | <a | 431 | <a |
437 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 432 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
438 | href="{{ route('admin.workers') }}" | 433 | href="{{ route('admin.workers') }}" |
439 | > | 434 | > |
440 | <svg | 435 | <svg |
441 | class="w-5 h-5" | 436 | class="w-5 h-5" |
442 | aria-hidden="true" | 437 | aria-hidden="true" |
443 | fill="none" | 438 | fill="none" |
444 | stroke-linecap="round" | 439 | stroke-linecap="round" |
445 | stroke-linejoin="round" | 440 | stroke-linejoin="round" |
446 | stroke-width="2" | 441 | stroke-width="2" |
447 | viewBox="0 0 24 24" | 442 | viewBox="0 0 24 24" |
448 | stroke="currentColor" | 443 | stroke="currentColor" |
449 | > | 444 | > |
450 | <path | 445 | <path |
451 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" | 446 | d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" |
452 | ></path> | 447 | ></path> |
453 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> | 448 | <path d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path> |
454 | </svg> | 449 | </svg> |
455 | <span class="ml-4">Соискатели</span> | 450 | <span class="ml-4">Соискатели</span> |
456 | </a> | 451 | </a> |
457 | </li> | 452 | </li> |
458 | <li class="relative px-6 py-3"> | 453 | <li class="relative px-6 py-3"> |
459 | <a | 454 | <a |
460 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 455 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
461 | href="{{ route('admin.ad-employers') }}" | 456 | href="{{ route('admin.ad-employers') }}" |
462 | > | 457 | > |
463 | <svg | 458 | <svg |
464 | class="w-5 h-5" | 459 | class="w-5 h-5" |
465 | aria-hidden="true" | 460 | aria-hidden="true" |
466 | fill="none" | 461 | fill="none" |
467 | stroke-linecap="round" | 462 | stroke-linecap="round" |
468 | stroke-linejoin="round" | 463 | stroke-linejoin="round" |
469 | stroke-width="2" | 464 | stroke-width="2" |
470 | viewBox="0 0 24 24" | 465 | viewBox="0 0 24 24" |
471 | stroke="currentColor" | 466 | stroke="currentColor" |
472 | > | 467 | > |
473 | <path | 468 | <path |
474 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" | 469 | d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" |
475 | ></path> | 470 | ></path> |
476 | </svg> | 471 | </svg> |
477 | <span class="ml-4">Вакансии</span> | 472 | <span class="ml-4">Вакансии</span> |
478 | </a> | 473 | </a> |
479 | </li> | 474 | </li> |
480 | <li class="relative px-6 py-3"> | 475 | <li class="relative px-6 py-3"> |
481 | <a | 476 | <a |
482 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 477 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
483 | href="{{ route('admin.categories') }}" | 478 | href="{{ route('admin.categories') }}" |
484 | > | 479 | > |
485 | <svg | 480 | <svg |
486 | class="w-5 h-5" | 481 | class="w-5 h-5" |
487 | aria-hidden="true" | 482 | aria-hidden="true" |
488 | fill="none" | 483 | fill="none" |
489 | stroke-linecap="round" | 484 | stroke-linecap="round" |
490 | stroke-linejoin="round" | 485 | stroke-linejoin="round" |
491 | stroke-width="2" | 486 | stroke-width="2" |
492 | viewBox="0 0 24 24" | 487 | viewBox="0 0 24 24" |
493 | stroke="currentColor" | 488 | stroke="currentColor" |
494 | > | 489 | > |
495 | <path | 490 | <path |
496 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" | 491 | d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" |
497 | ></path> | 492 | ></path> |
498 | </svg> | 493 | </svg> |
499 | <span class="ml-4">Категории</span> | 494 | <span class="ml-4">Категории</span> |
500 | </a> | 495 | </a> |
501 | </li> | 496 | </li> |
502 | <li class="relative px-6 py-3"> | 497 | <li class="relative px-6 py-3"> |
503 | <a | 498 | <a |
504 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 499 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
505 | href="{{ route('admin.job-titles') }}" | 500 | href="{{ route('admin.job-titles') }}" |
506 | > | 501 | > |
507 | <svg | 502 | <svg |
508 | class="w-5 h-5" | 503 | class="w-5 h-5" |
509 | aria-hidden="true" | 504 | aria-hidden="true" |
510 | fill="none" | 505 | fill="none" |
511 | stroke-linecap="round" | 506 | stroke-linecap="round" |
512 | stroke-linejoin="round" | 507 | stroke-linejoin="round" |
513 | stroke-width="2" | 508 | stroke-width="2" |
514 | viewBox="0 0 24 24" | 509 | viewBox="0 0 24 24" |
515 | stroke="currentColor" | 510 | stroke="currentColor" |
516 | > | 511 | > |
517 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 512 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
518 | </svg> | 513 | </svg> |
519 | <span class="ml-4">Должности</span> | 514 | <span class="ml-4">Должности</span> |
520 | </a> | 515 | </a> |
521 | </li> | 516 | </li> |
522 | <li class="relative px-6 py-3"> | 517 | <li class="relative px-6 py-3"> |
523 | <a | 518 | <a |
524 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 519 | class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
525 | href="{{ route('admin.messages') }}" | 520 | href="{{ route('admin.messages') }}" |
526 | > | 521 | > |
527 | <svg | 522 | <svg |
528 | class="w-5 h-5" | 523 | class="w-5 h-5" |
529 | aria-hidden="true" | 524 | aria-hidden="true" |
530 | fill="none" | 525 | fill="none" |
531 | stroke-linecap="round" | 526 | stroke-linecap="round" |
532 | stroke-linejoin="round" | 527 | stroke-linejoin="round" |
533 | stroke-width="2" | 528 | stroke-width="2" |
534 | viewBox="0 0 24 24" | 529 | viewBox="0 0 24 24" |
535 | stroke="currentColor" | 530 | stroke="currentColor" |
536 | > | 531 | > |
537 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> | 532 | <path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path> |
538 | </svg> | 533 | </svg> |
539 | <span class="ml-4">Сообщения</span> | 534 | <span class="ml-4">Сообщения</span> |
540 | </a> | 535 | </a> |
541 | </li> | 536 | </li> |
542 | <li class="relative px-6 py-3"> | 537 | <li class="relative px-6 py-3"> |
543 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 538 | <a class="inline-flex items-center w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
544 | href="{{ route('admin.groups') }}"> | 539 | href="{{ route('admin.groups') }}"> |
545 | <svg | 540 | <svg |
546 | class="w-5 h-5" | 541 | class="w-5 h-5" |
547 | aria-hidden="true" | 542 | aria-hidden="true" |
548 | fill="none" | 543 | fill="none" |
549 | stroke-linecap="round" | 544 | stroke-linecap="round" |
550 | stroke-linejoin="round" | 545 | stroke-linejoin="round" |
551 | stroke-width="2" | 546 | stroke-width="2" |
552 | viewBox="0 0 24 24" | 547 | viewBox="0 0 24 24" |
553 | stroke="currentColor" | 548 | stroke="currentColor" |
554 | > | 549 | > |
555 | <path | 550 | <path |
556 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" | 551 | d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" |
557 | ></path> | 552 | ></path> |
558 | </svg> | 553 | </svg> |
559 | <span class="ml-4">Группы пользователей</span> | 554 | <span class="ml-4">Группы пользователей</span> |
560 | </a> | 555 | </a> |
561 | </li> | 556 | </li> |
562 | <li class="relative px-6 py-3"> | 557 | <li class="relative px-6 py-3"> |
563 | <button | 558 | <button |
564 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 559 | class="inline-flex items-center justify-between w-full text-sm font-semibold transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
565 | @click="togglePagesMenu" | 560 | @click="togglePagesMenu" |
566 | aria-haspopup="true" | 561 | aria-haspopup="true" |
567 | > | 562 | > |
568 | <span class="inline-flex items-center"> | 563 | <span class="inline-flex items-center"> |
569 | <svg | 564 | <svg |
570 | class="w-5 h-5" | 565 | class="w-5 h-5" |
571 | aria-hidden="true" | 566 | aria-hidden="true" |
572 | fill="none" | 567 | fill="none" |
573 | stroke-linecap="round" | 568 | stroke-linecap="round" |
574 | stroke-linejoin="round" | 569 | stroke-linejoin="round" |
575 | stroke-width="2" | 570 | stroke-width="2" |
576 | viewBox="0 0 24 24" | 571 | viewBox="0 0 24 24" |
577 | stroke="currentColor" | 572 | stroke="currentColor" |
578 | > | 573 | > |
579 | <path | 574 | <path |
580 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" | 575 | d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" |
581 | ></path> | 576 | ></path> |
582 | </svg> | 577 | </svg> |
583 | <span class="ml-4">Страницы</span> | 578 | <span class="ml-4">Страницы</span> |
584 | </span> | 579 | </span> |
585 | <svg | 580 | <svg |
586 | class="w-4 h-4" | 581 | class="w-4 h-4" |
587 | aria-hidden="true" | 582 | aria-hidden="true" |
588 | fill="currentColor" | 583 | fill="currentColor" |
589 | viewBox="0 0 20 20" | 584 | viewBox="0 0 20 20" |
590 | > | 585 | > |
591 | <path | 586 | <path |
592 | fill-rule="evenodd" | 587 | fill-rule="evenodd" |
593 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" | 588 | d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" |
594 | clip-rule="evenodd" | 589 | clip-rule="evenodd" |
595 | ></path> | 590 | ></path> |
596 | </svg> | 591 | </svg> |
597 | </button> | 592 | </button> |
598 | <template x-if="isPagesMenuOpen"> | 593 | <template x-if="isPagesMenuOpen"> |
599 | <ul | 594 | <ul |
600 | x-transition:enter="transition-all ease-in-out duration-300" | 595 | x-transition:enter="transition-all ease-in-out duration-300" |
601 | x-transition:enter-start="opacity-25 max-h-0" | 596 | x-transition:enter-start="opacity-25 max-h-0" |
602 | x-transition:enter-end="opacity-100 max-h-xl" | 597 | x-transition:enter-end="opacity-100 max-h-xl" |
603 | x-transition:leave="transition-all ease-in-out duration-300" | 598 | x-transition:leave="transition-all ease-in-out duration-300" |
604 | x-transition:leave-start="opacity-100 max-h-xl" | 599 | x-transition:leave-start="opacity-100 max-h-xl" |
605 | x-transition:leave-end="opacity-0 max-h-0" | 600 | x-transition:leave-end="opacity-0 max-h-0" |
606 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" | 601 | class="p-2 mt-2 space-y-2 overflow-hidden text-sm font-medium text-gray-500 rounded-md shadow-inner bg-gray-50 dark:text-gray-400 dark:bg-gray-900" |
607 | aria-label="submenu" | 602 | aria-label="submenu" |
608 | > | 603 | > |
609 | <li | 604 | <li |
610 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 605 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
611 | > | 606 | > |
612 | <a class="w-full" href="pages/login.html">Login</a> | 607 | <a class="w-full" href="pages/login.html">Login</a> |
613 | </li> | 608 | </li> |
614 | <li | 609 | <li |
615 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 610 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
616 | > | 611 | > |
617 | <a class="w-full" href="pages/create-account.html"> | 612 | <a class="w-full" href="pages/create-account.html"> |
618 | Create account | 613 | Create account |
619 | </a> | 614 | </a> |
620 | </li> | 615 | </li> |
621 | <li | 616 | <li |
622 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 617 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
623 | > | 618 | > |
624 | <a class="w-full" href="pages/forgot-password.html"> | 619 | <a class="w-full" href="pages/forgot-password.html"> |
625 | Forgot password | 620 | Forgot password |
626 | </a> | 621 | </a> |
627 | </li> | 622 | </li> |
628 | <li | 623 | <li |
629 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 624 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
630 | > | 625 | > |
631 | <a class="w-full" href="pages/404.html">404</a> | 626 | <a class="w-full" href="pages/404.html">404</a> |
632 | </li> | 627 | </li> |
633 | <li | 628 | <li |
634 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" | 629 | class="px-2 py-1 transition-colors duration-150 hover:text-gray-800 dark:hover:text-gray-200" |
635 | > | 630 | > |
636 | <a class="w-full" href="pages/blank.html">Blank</a> | 631 | <a class="w-full" href="pages/blank.html">Blank</a> |
637 | </li> | 632 | </li> |
638 | </ul> | 633 | </ul> |
639 | </template> | 634 | </template> |
640 | </li> | 635 | </li> |
641 | </ul> | 636 | </ul> |
642 | <!--<div class="px-6 my-6"> | 637 | <!--<div class="px-6 my-6"> |
643 | <button class="flex items-center justify-between px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | 638 | <button class="flex items-center justify-between px-4 py-2 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> |
644 | Create account | 639 | Create account |
645 | <span class="ml-2" aria-hidden="true">+</span> | 640 | <span class="ml-2" aria-hidden="true">+</span> |
646 | </button> | 641 | </button> |
647 | </div>--> | 642 | </div>--> |
648 | </div> | 643 | </div> |
649 | </aside> | 644 | </aside> |
650 | <div class="flex flex-col flex-1 w-full"> | 645 | <div class="flex flex-col flex-1 w-full"> |
651 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> | 646 | <header class="z-10 py-4 bg-white shadow-md dark:bg-gray-800"> |
652 | <div | 647 | <div |
653 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" | 648 | class="container flex items-center justify-between h-full px-6 mx-auto text-purple-600 dark:text-purple-300" |
654 | > | 649 | > |
655 | <!-- Mobile hamburger --> | 650 | <!-- Mobile hamburger --> |
656 | <button | 651 | <button |
657 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" | 652 | class="p-1 mr-5 -ml-1 rounded-md md:hidden focus:outline-none focus:shadow-outline-purple" |
658 | @click="toggleSideMenu" | 653 | @click="toggleSideMenu" |
659 | aria-label="Menu" | 654 | aria-label="Menu" |
660 | > | 655 | > |
661 | <svg | 656 | <svg |
662 | class="w-6 h-6" | 657 | class="w-6 h-6" |
663 | aria-hidden="true" | 658 | aria-hidden="true" |
664 | fill="currentColor" | 659 | fill="currentColor" |
665 | viewBox="0 0 20 20" | 660 | viewBox="0 0 20 20" |
666 | > | 661 | > |
667 | <path | 662 | <path |
668 | fill-rule="evenodd" | 663 | fill-rule="evenodd" |
669 | d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" | 664 | d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" |
670 | clip-rule="evenodd" | 665 | clip-rule="evenodd" |
671 | ></path> | 666 | ></path> |
672 | </svg> | 667 | </svg> |
673 | </button> | 668 | </button> |
674 | <!-- Search input --> | 669 | <!-- Search input --> |
675 | <div class="flex justify-center flex-1 lg:mr-32"> | 670 | <div class="flex justify-center flex-1 lg:mr-32"> |
676 | <div | 671 | <div |
677 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" | 672 | class="relative w-full max-w-xl mr-6 focus-within:text-purple-500" |
678 | > | 673 | > |
679 | <div class="absolute inset-y-0 flex items-center pl-2"> | 674 | <div class="absolute inset-y-0 flex items-center pl-2"> |
680 | <svg | 675 | <svg |
681 | class="w-4 h-4" | 676 | class="w-4 h-4" |
682 | aria-hidden="true" | 677 | aria-hidden="true" |
683 | fill="currentColor" | 678 | fill="currentColor" |
684 | viewBox="0 0 20 20" | 679 | viewBox="0 0 20 20" |
685 | > | 680 | > |
686 | <path | 681 | <path |
687 | fill-rule="evenodd" | 682 | fill-rule="evenodd" |
688 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" | 683 | d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" |
689 | clip-rule="evenodd" | 684 | clip-rule="evenodd" |
690 | ></path> | 685 | ></path> |
691 | </svg> | 686 | </svg> |
692 | </div> | 687 | </div> |
693 | <input | 688 | <input |
694 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" | 689 | class="w-full pl-8 pr-2 text-sm text-gray-700 placeholder-gray-600 bg-gray-100 border-0 rounded-md dark:placeholder-gray-500 dark:focus:shadow-outline-gray dark:focus:placeholder-gray-600 dark:bg-gray-700 dark:text-gray-200 focus:placeholder-gray-500 focus:bg-white focus:border-purple-300 focus:outline-none focus:shadow-outline-purple form-input" |
695 | type="text" | 690 | type="text" |
696 | placeholder="Искать..." | 691 | placeholder="Искать..." |
697 | aria-label="Search" | 692 | aria-label="Search" |
698 | /> | 693 | /> |
699 | </div> | 694 | </div> |
700 | </div> | 695 | </div> |
701 | <ul class="flex items-center flex-shrink-0 space-x-6"> | 696 | <ul class="flex items-center flex-shrink-0 space-x-6"> |
702 | <!-- Theme toggler --> | 697 | <!-- Theme toggler --> |
703 | <li class="flex"> | 698 | <li class="flex"> |
704 | <button | 699 | <button |
705 | class="rounded-md focus:outline-none focus:shadow-outline-purple" | 700 | class="rounded-md focus:outline-none focus:shadow-outline-purple" |
706 | @click="toggleTheme" | 701 | @click="toggleTheme" |
707 | aria-label="Toggle color mode" | 702 | aria-label="Toggle color mode" |
708 | > | 703 | > |
709 | <template x-if="!dark"> | 704 | <template x-if="!dark"> |
710 | <svg | 705 | <svg |
711 | class="w-5 h-5" | 706 | class="w-5 h-5" |
712 | aria-hidden="true" | 707 | aria-hidden="true" |
713 | fill="currentColor" | 708 | fill="currentColor" |
714 | viewBox="0 0 20 20" | 709 | viewBox="0 0 20 20" |
715 | > | 710 | > |
716 | <path | 711 | <path |
717 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" | 712 | d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" |
718 | ></path> | 713 | ></path> |
719 | </svg> | 714 | </svg> |
720 | </template> | 715 | </template> |
721 | <template x-if="dark"> | 716 | <template x-if="dark"> |
722 | <svg | 717 | <svg |
723 | class="w-5 h-5" | 718 | class="w-5 h-5" |
724 | aria-hidden="true" | 719 | aria-hidden="true" |
725 | fill="currentColor" | 720 | fill="currentColor" |
726 | viewBox="0 0 20 20" | 721 | viewBox="0 0 20 20" |
727 | > | 722 | > |
728 | <path | 723 | <path |
729 | fill-rule="evenodd" | 724 | fill-rule="evenodd" |
730 | d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" | 725 | d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" |
731 | clip-rule="evenodd" | 726 | clip-rule="evenodd" |
732 | ></path> | 727 | ></path> |
733 | </svg> | 728 | </svg> |
734 | </template> | 729 | </template> |
735 | </button> | 730 | </button> |
736 | </li> | 731 | </li> |
737 | <!-- Notifications menu --> | 732 | <!-- Notifications menu --> |
738 | <li class="relative"> | 733 | <li class="relative"> |
739 | <button | 734 | <button |
740 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" | 735 | class="relative align-middle rounded-md focus:outline-none focus:shadow-outline-purple" |
741 | @click="toggleNotificationsMenu" | 736 | @click="toggleNotificationsMenu" |
742 | @keydown.escape="closeNotificationsMenu" | 737 | @keydown.escape="closeNotificationsMenu" |
743 | aria-label="Notifications" | 738 | aria-label="Notifications" |
744 | aria-haspopup="true" | 739 | aria-haspopup="true" |
745 | > | 740 | > |
746 | <svg | 741 | <svg |
747 | class="w-5 h-5" | 742 | class="w-5 h-5" |
748 | aria-hidden="true" | 743 | aria-hidden="true" |
749 | fill="currentColor" | 744 | fill="currentColor" |
750 | viewBox="0 0 20 20" | 745 | viewBox="0 0 20 20" |
751 | > | 746 | > |
752 | <path | 747 | <path |
753 | d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z" | 748 | d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z" |
754 | ></path> | 749 | ></path> |
755 | </svg> | 750 | </svg> |
756 | <!-- Notification badge --> | 751 | <!-- Notification badge --> |
757 | <span | 752 | <span |
758 | aria-hidden="true" | 753 | aria-hidden="true" |
759 | class="absolute top-0 right-0 inline-block w-3 h-3 transform translate-x-1 -translate-y-1 bg-red-600 border-2 border-white rounded-full dark:border-gray-800" | 754 | class="absolute top-0 right-0 inline-block w-3 h-3 transform translate-x-1 -translate-y-1 bg-red-600 border-2 border-white rounded-full dark:border-gray-800" |
760 | ></span> | 755 | ></span> |
761 | </button> | 756 | </button> |
762 | <template x-if="isNotificationsMenuOpen"> | 757 | <template x-if="isNotificationsMenuOpen"> |
763 | <ul | 758 | <ul |
764 | x-transition:leave="transition ease-in duration-150" | 759 | x-transition:leave="transition ease-in duration-150" |
765 | x-transition:leave-start="opacity-100" | 760 | x-transition:leave-start="opacity-100" |
766 | x-transition:leave-end="opacity-0" | 761 | x-transition:leave-end="opacity-0" |
767 | @click.away="closeNotificationsMenu" | 762 | @click.away="closeNotificationsMenu" |
768 | @keydown.escape="closeNotificationsMenu" | 763 | @keydown.escape="closeNotificationsMenu" |
769 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:text-gray-300 dark:border-gray-700 dark:bg-gray-700" | 764 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:text-gray-300 dark:border-gray-700 dark:bg-gray-700" |
770 | > | 765 | > |
771 | <li class="flex"> | 766 | <li class="flex"> |
772 | <a | 767 | <a |
773 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 768 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
774 | href="#" | 769 | href="#" |
775 | > | 770 | > |
776 | <span>Сообщения</span> | 771 | <span>Сообщения</span> |
777 | <span | 772 | <span |
778 | class="inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-red-600 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-600" | 773 | class="inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-red-600 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-600" |
779 | > | 774 | > |
780 | 13 | 775 | 13 |
781 | </span> | 776 | </span> |
782 | </a> | 777 | </a> |
783 | </li> | 778 | </li> |
784 | <li class="flex"> | 779 | <li class="flex"> |
785 | <a | 780 | <a |
786 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 781 | class="inline-flex items-center justify-between w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
787 | href="#" | 782 | href="#" |
788 | > | 783 | > |
789 | <span>Логи</span> | 784 | <span>Логи</span> |
790 | </a> | 785 | </a> |
791 | </li> | 786 | </li> |
792 | </ul> | 787 | </ul> |
793 | </template> | 788 | </template> |
794 | </li> | 789 | </li> |
795 | <!-- Profile menu --> | 790 | <!-- Profile menu --> |
796 | <li class="relative"> | 791 | <li class="relative"> |
797 | <button | 792 | <button |
798 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" | 793 | class="align-middle rounded-full focus:shadow-outline-purple focus:outline-none" |
799 | @click="toggleProfileMenu" | 794 | @click="toggleProfileMenu" |
800 | @keydown.escape="closeProfileMenu" | 795 | @keydown.escape="closeProfileMenu" |
801 | aria-label="Account" | 796 | aria-label="Account" |
802 | aria-haspopup="true" | 797 | aria-haspopup="true" |
803 | > | 798 | > |
804 | <img | 799 | <img |
805 | class="object-cover w-8 h-8 rounded-full" | 800 | class="object-cover w-8 h-8 rounded-full" |
806 | src="{{ asset('assets/img/profile.jpg') }}" | 801 | src="{{ asset('assets/img/profile.jpg') }}" |
807 | alt="" | 802 | alt="" |
808 | aria-hidden="true" | 803 | aria-hidden="true" |
809 | /> | 804 | /> |
810 | </button> | 805 | </button> |
811 | <template x-if="isProfileMenuOpen"> | 806 | <template x-if="isProfileMenuOpen"> |
812 | <ul | 807 | <ul |
813 | x-transition:leave="transition ease-in duration-150" | 808 | x-transition:leave="transition ease-in duration-150" |
814 | x-transition:leave-start="opacity-100" | 809 | x-transition:leave-start="opacity-100" |
815 | x-transition:leave-end="opacity-0" | 810 | x-transition:leave-end="opacity-0" |
816 | @click.away="closeProfileMenu" | 811 | @click.away="closeProfileMenu" |
817 | @keydown.escape="closeProfileMenu" | 812 | @keydown.escape="closeProfileMenu" |
818 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:border-gray-700 dark:text-gray-300 dark:bg-gray-700" | 813 | class="absolute right-0 w-56 p-2 mt-2 space-y-2 text-gray-600 bg-white border border-gray-100 rounded-md shadow-md dark:border-gray-700 dark:text-gray-300 dark:bg-gray-700" |
819 | aria-label="submenu" | 814 | aria-label="submenu" |
820 | > | 815 | > |
821 | <li class="flex"> | 816 | <li class="flex"> |
822 | <a | 817 | <a |
823 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 818 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
824 | href="#" | 819 | href="#" |
825 | > | 820 | > |
826 | <svg | 821 | <svg |
827 | class="w-4 h-4 mr-3" | 822 | class="w-4 h-4 mr-3" |
828 | aria-hidden="true" | 823 | aria-hidden="true" |
829 | fill="none" | 824 | fill="none" |
830 | stroke-linecap="round" | 825 | stroke-linecap="round" |
831 | stroke-linejoin="round" | 826 | stroke-linejoin="round" |
832 | stroke-width="2" | 827 | stroke-width="2" |
833 | viewBox="0 0 24 24" | 828 | viewBox="0 0 24 24" |
834 | stroke="currentColor" | 829 | stroke="currentColor" |
835 | > | 830 | > |
836 | <path | 831 | <path |
837 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" | 832 | d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" |
838 | ></path> | 833 | ></path> |
839 | </svg> | 834 | </svg> |
840 | <span>Профиль</span> | 835 | <span>Профиль</span> |
841 | </a> | 836 | </a> |
842 | </li> | 837 | </li> |
843 | <li class="flex"> | 838 | <li class="flex"> |
844 | <a | 839 | <a |
845 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 840 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
846 | href="#" | 841 | href="#" |
847 | > | 842 | > |
848 | <svg | 843 | <svg |
849 | class="w-4 h-4 mr-3" | 844 | class="w-4 h-4 mr-3" |
850 | aria-hidden="true" | 845 | aria-hidden="true" |
851 | fill="none" | 846 | fill="none" |
852 | stroke-linecap="round" | 847 | stroke-linecap="round" |
853 | stroke-linejoin="round" | 848 | stroke-linejoin="round" |
854 | stroke-width="2" | 849 | stroke-width="2" |
855 | viewBox="0 0 24 24" | 850 | viewBox="0 0 24 24" |
856 | stroke="currentColor" | 851 | stroke="currentColor" |
857 | > | 852 | > |
858 | <path | 853 | <path |
859 | d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" | 854 | d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" |
860 | ></path> | 855 | ></path> |
861 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> | 856 | <path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path> |
862 | </svg> | 857 | </svg> |
863 | <span>Настройки</span> | 858 | <span>Настройки</span> |
864 | </a> | 859 | </a> |
865 | </li> | 860 | </li> |
866 | <li class="flex"> | 861 | <li class="flex"> |
867 | <a | 862 | <a |
868 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" | 863 | class="inline-flex items-center w-full px-2 py-1 text-sm font-semibold transition-colors duration-150 rounded-md hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-200" |
869 | href="{{ route('admin.logout') }}" | 864 | href="{{ route('admin.logout') }}" |
870 | > | 865 | > |
871 | <svg | 866 | <svg |
872 | class="w-4 h-4 mr-3" | 867 | class="w-4 h-4 mr-3" |
873 | aria-hidden="true" | 868 | aria-hidden="true" |
874 | fill="none" | 869 | fill="none" |
875 | stroke-linecap="round" | 870 | stroke-linecap="round" |
876 | stroke-linejoin="round" | 871 | stroke-linejoin="round" |
877 | stroke-width="2" | 872 | stroke-width="2" |
878 | viewBox="0 0 24 24" | 873 | viewBox="0 0 24 24" |
879 | stroke="currentColor" | 874 | stroke="currentColor" |
880 | > | 875 | > |
881 | <path | 876 | <path |
882 | d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1" | 877 | d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1" |
883 | ></path> | 878 | ></path> |
884 | </svg> | 879 | </svg> |
885 | <span>Выход</span> | 880 | <span>Выход</span> |
886 | </a> | 881 | </a> |
887 | </li> | 882 | </li> |
888 | </ul> | 883 | </ul> |
889 | </template> | 884 | </template> |
890 | </li> | 885 | </li> |
891 | </ul> | 886 | </ul> |
892 | </div> | 887 | </div> |
893 | </header> | 888 | </header> |
894 | <main class="h-full overflow-y-auto"> | 889 | <main class="h-full overflow-y-auto"> |
895 | <div class="container px-6 mx-auto grid"> | 890 | <div class="container px-6 mx-auto grid"> |
896 | <h2 | 891 | <h2 |
897 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" | 892 | class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200" |
898 | > | 893 | > |
899 | {{$title}} | 894 | {{$title}} |
900 | </h2> | 895 | </h2> |
901 | <!-- CTA --> | 896 | <!-- CTA --> |
902 | <a | 897 | <a |
903 | class="flex items-center justify-between p-4 mb-8 text-sm font-semibold text-purple-100 bg-purple-600 rounded-lg shadow-md focus:outline-none focus:shadow-outline-purple" | 898 | class="flex items-center justify-between p-4 mb-8 text-sm font-semibold text-purple-100 bg-purple-600 rounded-lg shadow-md focus:outline-none focus:shadow-outline-purple" |
904 | href="https://github.com/estevanmaito/windmill-dashboard" | 899 | href="{{ route('admin.admin-users') }}" |
905 | > | 900 | > |
906 | <div class="flex items-center"> | 901 | <div class="flex items-center"> |
907 | <svg | 902 | <svg |
908 | class="w-5 h-5 mr-2" | 903 | class="w-5 h-5 mr-2" |
909 | fill="currentColor" | 904 | fill="currentColor" |
910 | viewBox="0 0 20 20" | 905 | viewBox="0 0 20 20" |
911 | > | 906 | > |
912 | <path | 907 | <path |
913 | d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" | 908 | d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" |
914 | ></path> | 909 | ></path> |
915 | </svg> | 910 | </svg> |
916 | <span>Вход в админку только для пользователей-админов</span> | 911 | <span>Вход в админку только для пользователей-админов</span> |
917 | </div> | 912 | </div> |
918 | <span>Список админов →</span> | 913 | <span>Список админов →</span> |
919 | </a> | 914 | </a> |
920 | 915 | ||
921 | @yield('content') | 916 | @yield('content') |
922 | 917 | ||
923 | <!-- Cards | 918 | <!-- Cards |
924 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 919 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
925 | 920 | ||
926 | <div | 921 | <div |
927 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 922 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
928 | > | 923 | > |
929 | <div | 924 | <div |
930 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" | 925 | class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500" |
931 | > | 926 | > |
932 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 927 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
933 | <path | 928 | <path |
934 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z" | 929 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z" |
935 | ></path> | 930 | ></path> |
936 | </svg> | 931 | </svg> |
937 | </div> | 932 | </div> |
938 | <div> | 933 | <div> |
939 | <p | 934 | <p |
940 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 935 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
941 | > | 936 | > |
942 | Total clients | 937 | Total clients |
943 | </p> | 938 | </p> |
944 | <p | 939 | <p |
945 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 940 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
946 | > | 941 | > |
947 | 6389 | 942 | 6389 |
948 | </p> | 943 | </p> |
949 | </div> | 944 | </div> |
950 | </div> | 945 | </div> |
951 | 946 | ||
952 | <div | 947 | <div |
953 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 948 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
954 | > | 949 | > |
955 | <div | 950 | <div |
956 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" | 951 | class="p-3 mr-4 text-green-500 bg-green-100 rounded-full dark:text-green-100 dark:bg-green-500" |
957 | > | 952 | > |
958 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 953 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
959 | <path | 954 | <path |
960 | fill-rule="evenodd" | 955 | fill-rule="evenodd" |
961 | d="M4 4a2 2 0 00-2 2v4a2 2 0 002 2V6h10a2 2 0 00-2-2H4zm2 6a2 2 0 012-2h8a2 2 0 012 2v4a2 2 0 01-2 2H8a2 2 0 01-2-2v-4zm6 4a2 2 0 100-4 2 2 0 000 4z" | 956 | d="M4 4a2 2 0 00-2 2v4a2 2 0 002 2V6h10a2 2 0 00-2-2H4zm2 6a2 2 0 012-2h8a2 2 0 012 2v4a2 2 0 01-2 2H8a2 2 0 01-2-2v-4zm6 4a2 2 0 100-4 2 2 0 000 4z" |
962 | clip-rule="evenodd" | 957 | clip-rule="evenodd" |
963 | ></path> | 958 | ></path> |
964 | </svg> | 959 | </svg> |
965 | </div> | 960 | </div> |
966 | <div> | 961 | <div> |
967 | <p | 962 | <p |
968 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 963 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
969 | > | 964 | > |
970 | Account balance | 965 | Account balance |
971 | </p> | 966 | </p> |
972 | <p | 967 | <p |
973 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 968 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
974 | > | 969 | > |
975 | $ 46,760.89 | 970 | $ 46,760.89 |
976 | </p> | 971 | </p> |
977 | </div> | 972 | </div> |
978 | </div> | 973 | </div> |
979 | 974 | ||
980 | <div | 975 | <div |
981 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 976 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
982 | > | 977 | > |
983 | <div | 978 | <div |
984 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" | 979 | class="p-3 mr-4 text-blue-500 bg-blue-100 rounded-full dark:text-blue-100 dark:bg-blue-500" |
985 | > | 980 | > |
986 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 981 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
987 | <path | 982 | <path |
988 | d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" | 983 | d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" |
989 | ></path> | 984 | ></path> |
990 | </svg> | 985 | </svg> |
991 | </div> | 986 | </div> |
992 | <div> | 987 | <div> |
993 | <p | 988 | <p |
994 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 989 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
995 | > | 990 | > |
996 | New sales | 991 | New sales |
997 | </p> | 992 | </p> |
998 | <p | 993 | <p |
999 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 994 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1000 | > | 995 | > |
1001 | 376 | 996 | 376 |
1002 | </p> | 997 | </p> |
1003 | </div> | 998 | </div> |
1004 | </div> | 999 | </div> |
1005 | 1000 | ||
1006 | <div | 1001 | <div |
1007 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1002 | class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1008 | > | 1003 | > |
1009 | <div | 1004 | <div |
1010 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" | 1005 | class="p-3 mr-4 text-teal-500 bg-teal-100 rounded-full dark:text-teal-100 dark:bg-teal-500" |
1011 | > | 1006 | > |
1012 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 1007 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
1013 | <path | 1008 | <path |
1014 | fill-rule="evenodd" | 1009 | fill-rule="evenodd" |
1015 | d="M18 5v8a2 2 0 01-2 2h-5l-5 4v-4H4a2 2 0 01-2-2V5a2 2 0 012-2h12a2 2 0 012 2zM7 8H5v2h2V8zm2 0h2v2H9V8zm6 0h-2v2h2V8z" | 1010 | d="M18 5v8a2 2 0 01-2 2h-5l-5 4v-4H4a2 2 0 01-2-2V5a2 2 0 012-2h12a2 2 0 012 2zM7 8H5v2h2V8zm2 0h2v2H9V8zm6 0h-2v2h2V8z" |
1016 | clip-rule="evenodd" | 1011 | clip-rule="evenodd" |
1017 | ></path> | 1012 | ></path> |
1018 | </svg> | 1013 | </svg> |
1019 | </div> | 1014 | </div> |
1020 | <div> | 1015 | <div> |
1021 | <p | 1016 | <p |
1022 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" | 1017 | class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400" |
1023 | > | 1018 | > |
1024 | Pending contacts | 1019 | Pending contacts |
1025 | </p> | 1020 | </p> |
1026 | <p | 1021 | <p |
1027 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" | 1022 | class="text-lg font-semibold text-gray-700 dark:text-gray-200" |
1028 | > | 1023 | > |
1029 | 35 | 1024 | 35 |
1030 | </p> | 1025 | </p> |
1031 | </div> | 1026 | </div> |
1032 | </div> | 1027 | </div> |
1033 | </div> | 1028 | </div> |
1034 | --> | 1029 | --> |
1035 | <!-- New Table | 1030 | <!-- New Table |
1036 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> | 1031 | <div class="w-full overflow-hidden rounded-lg shadow-xs"> |
1037 | <div class="w-full overflow-x-auto"> | 1032 | <div class="w-full overflow-x-auto"> |
1038 | <table class="w-full whitespace-no-wrap"> | 1033 | <table class="w-full whitespace-no-wrap"> |
1039 | <thead> | 1034 | <thead> |
1040 | <tr | 1035 | <tr |
1041 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 1036 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
1042 | > | 1037 | > |
1043 | <th class="px-4 py-3">Client</th> | 1038 | <th class="px-4 py-3">Client</th> |
1044 | <th class="px-4 py-3">Amount</th> | 1039 | <th class="px-4 py-3">Amount</th> |
1045 | <th class="px-4 py-3">Status</th> | 1040 | <th class="px-4 py-3">Status</th> |
1046 | <th class="px-4 py-3">Date</th> | 1041 | <th class="px-4 py-3">Date</th> |
1047 | </tr> | 1042 | </tr> |
1048 | </thead> | 1043 | </thead> |
1049 | <tbody | 1044 | <tbody |
1050 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" | 1045 | class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800" |
1051 | > | 1046 | > |
1052 | <tr class="text-gray-700 dark:text-gray-400"> | 1047 | <tr class="text-gray-700 dark:text-gray-400"> |
1053 | <td class="px-4 py-3"> | 1048 | <td class="px-4 py-3"> |
1054 | <div class="flex items-center text-sm"> | 1049 | <div class="flex items-center text-sm"> |
1055 | 1050 | ||
1056 | <div | 1051 | <div |
1057 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1052 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1058 | > | 1053 | > |
1059 | <img | 1054 | <img |
1060 | class="object-cover w-full h-full rounded-full" | 1055 | class="object-cover w-full h-full rounded-full" |
1061 | src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1056 | src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1062 | alt="" | 1057 | alt="" |
1063 | loading="lazy" | 1058 | loading="lazy" |
1064 | /> | 1059 | /> |
1065 | <div | 1060 | <div |
1066 | class="absolute inset-0 rounded-full shadow-inner" | 1061 | class="absolute inset-0 rounded-full shadow-inner" |
1067 | aria-hidden="true" | 1062 | aria-hidden="true" |
1068 | ></div> | 1063 | ></div> |
1069 | </div> | 1064 | </div> |
1070 | <div> | 1065 | <div> |
1071 | <p class="font-semibold">Hans Burger</p> | 1066 | <p class="font-semibold">Hans Burger</p> |
1072 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1067 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1073 | 10x Developer | 1068 | 10x Developer |
1074 | </p> | 1069 | </p> |
1075 | </div> | 1070 | </div> |
1076 | </div> | 1071 | </div> |
1077 | </td> | 1072 | </td> |
1078 | <td class="px-4 py-3 text-sm"> | 1073 | <td class="px-4 py-3 text-sm"> |
1079 | $ 863.45 | 1074 | $ 863.45 |
1080 | </td> | 1075 | </td> |
1081 | <td class="px-4 py-3 text-xs"> | 1076 | <td class="px-4 py-3 text-xs"> |
1082 | <span | 1077 | <span |
1083 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1078 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1084 | > | 1079 | > |
1085 | Approved | 1080 | Approved |
1086 | </span> | 1081 | </span> |
1087 | </td> | 1082 | </td> |
1088 | <td class="px-4 py-3 text-sm"> | 1083 | <td class="px-4 py-3 text-sm"> |
1089 | 6/10/2020 | 1084 | 6/10/2020 |
1090 | </td> | 1085 | </td> |
1091 | </tr> | 1086 | </tr> |
1092 | 1087 | ||
1093 | <tr class="text-gray-700 dark:text-gray-400"> | 1088 | <tr class="text-gray-700 dark:text-gray-400"> |
1094 | <td class="px-4 py-3"> | 1089 | <td class="px-4 py-3"> |
1095 | <div class="flex items-center text-sm"> | 1090 | <div class="flex items-center text-sm"> |
1096 | 1091 | ||
1097 | <div | 1092 | <div |
1098 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1093 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1099 | > | 1094 | > |
1100 | <img | 1095 | <img |
1101 | class="object-cover w-full h-full rounded-full" | 1096 | class="object-cover w-full h-full rounded-full" |
1102 | src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&facepad=3&fit=facearea&s=707b9c33066bf8808c934c8ab394dff6" | 1097 | src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&facepad=3&fit=facearea&s=707b9c33066bf8808c934c8ab394dff6" |
1103 | alt="" | 1098 | alt="" |
1104 | loading="lazy" | 1099 | loading="lazy" |
1105 | /> | 1100 | /> |
1106 | <div | 1101 | <div |
1107 | class="absolute inset-0 rounded-full shadow-inner" | 1102 | class="absolute inset-0 rounded-full shadow-inner" |
1108 | aria-hidden="true" | 1103 | aria-hidden="true" |
1109 | ></div> | 1104 | ></div> |
1110 | </div> | 1105 | </div> |
1111 | <div> | 1106 | <div> |
1112 | <p class="font-semibold">Jolina Angelie</p> | 1107 | <p class="font-semibold">Jolina Angelie</p> |
1113 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1108 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1114 | Unemployed | 1109 | Unemployed |
1115 | </p> | 1110 | </p> |
1116 | </div> | 1111 | </div> |
1117 | </div> | 1112 | </div> |
1118 | </td> | 1113 | </td> |
1119 | <td class="px-4 py-3 text-sm"> | 1114 | <td class="px-4 py-3 text-sm"> |
1120 | $ 369.95 | 1115 | $ 369.95 |
1121 | </td> | 1116 | </td> |
1122 | <td class="px-4 py-3 text-xs"> | 1117 | <td class="px-4 py-3 text-xs"> |
1123 | <span | 1118 | <span |
1124 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" | 1119 | class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600" |
1125 | > | 1120 | > |
1126 | Pending | 1121 | Pending |
1127 | </span> | 1122 | </span> |
1128 | </td> | 1123 | </td> |
1129 | <td class="px-4 py-3 text-sm"> | 1124 | <td class="px-4 py-3 text-sm"> |
1130 | 6/10/2020 | 1125 | 6/10/2020 |
1131 | </td> | 1126 | </td> |
1132 | </tr> | 1127 | </tr> |
1133 | 1128 | ||
1134 | <tr class="text-gray-700 dark:text-gray-400"> | 1129 | <tr class="text-gray-700 dark:text-gray-400"> |
1135 | <td class="px-4 py-3"> | 1130 | <td class="px-4 py-3"> |
1136 | <div class="flex items-center text-sm"> | 1131 | <div class="flex items-center text-sm"> |
1137 | 1132 | ||
1138 | <div | 1133 | <div |
1139 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1134 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1140 | > | 1135 | > |
1141 | <img | 1136 | <img |
1142 | class="object-cover w-full h-full rounded-full" | 1137 | class="object-cover w-full h-full rounded-full" |
1143 | src="https://images.unsplash.com/photo-1551069613-1904dbdcda11?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1138 | src="https://images.unsplash.com/photo-1551069613-1904dbdcda11?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1144 | alt="" | 1139 | alt="" |
1145 | loading="lazy" | 1140 | loading="lazy" |
1146 | /> | 1141 | /> |
1147 | <div | 1142 | <div |
1148 | class="absolute inset-0 rounded-full shadow-inner" | 1143 | class="absolute inset-0 rounded-full shadow-inner" |
1149 | aria-hidden="true" | 1144 | aria-hidden="true" |
1150 | ></div> | 1145 | ></div> |
1151 | </div> | 1146 | </div> |
1152 | <div> | 1147 | <div> |
1153 | <p class="font-semibold">Sarah Curry</p> | 1148 | <p class="font-semibold">Sarah Curry</p> |
1154 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1149 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1155 | Designer | 1150 | Designer |
1156 | </p> | 1151 | </p> |
1157 | </div> | 1152 | </div> |
1158 | </div> | 1153 | </div> |
1159 | </td> | 1154 | </td> |
1160 | <td class="px-4 py-3 text-sm"> | 1155 | <td class="px-4 py-3 text-sm"> |
1161 | $ 86.00 | 1156 | $ 86.00 |
1162 | </td> | 1157 | </td> |
1163 | <td class="px-4 py-3 text-xs"> | 1158 | <td class="px-4 py-3 text-xs"> |
1164 | <span | 1159 | <span |
1165 | class="px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-700" | 1160 | class="px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-full dark:text-red-100 dark:bg-red-700" |
1166 | > | 1161 | > |
1167 | Denied | 1162 | Denied |
1168 | </span> | 1163 | </span> |
1169 | </td> | 1164 | </td> |
1170 | <td class="px-4 py-3 text-sm"> | 1165 | <td class="px-4 py-3 text-sm"> |
1171 | 6/10/2020 | 1166 | 6/10/2020 |
1172 | </td> | 1167 | </td> |
1173 | </tr> | 1168 | </tr> |
1174 | 1169 | ||
1175 | <tr class="text-gray-700 dark:text-gray-400"> | 1170 | <tr class="text-gray-700 dark:text-gray-400"> |
1176 | <td class="px-4 py-3"> | 1171 | <td class="px-4 py-3"> |
1177 | <div class="flex items-center text-sm"> | 1172 | <div class="flex items-center text-sm"> |
1178 | 1173 | ||
1179 | <div | 1174 | <div |
1180 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1175 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1181 | > | 1176 | > |
1182 | <img | 1177 | <img |
1183 | class="object-cover w-full h-full rounded-full" | 1178 | class="object-cover w-full h-full rounded-full" |
1184 | src="https://images.unsplash.com/photo-1551006917-3b4c078c47c9?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1179 | src="https://images.unsplash.com/photo-1551006917-3b4c078c47c9?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1185 | alt="" | 1180 | alt="" |
1186 | loading="lazy" | 1181 | loading="lazy" |
1187 | /> | 1182 | /> |
1188 | <div | 1183 | <div |
1189 | class="absolute inset-0 rounded-full shadow-inner" | 1184 | class="absolute inset-0 rounded-full shadow-inner" |
1190 | aria-hidden="true" | 1185 | aria-hidden="true" |
1191 | ></div> | 1186 | ></div> |
1192 | </div> | 1187 | </div> |
1193 | <div> | 1188 | <div> |
1194 | <p class="font-semibold">Rulia Joberts</p> | 1189 | <p class="font-semibold">Rulia Joberts</p> |
1195 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1190 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1196 | Actress | 1191 | Actress |
1197 | </p> | 1192 | </p> |
1198 | </div> | 1193 | </div> |
1199 | </div> | 1194 | </div> |
1200 | </td> | 1195 | </td> |
1201 | <td class="px-4 py-3 text-sm"> | 1196 | <td class="px-4 py-3 text-sm"> |
1202 | $ 1276.45 | 1197 | $ 1276.45 |
1203 | </td> | 1198 | </td> |
1204 | <td class="px-4 py-3 text-xs"> | 1199 | <td class="px-4 py-3 text-xs"> |
1205 | <span | 1200 | <span |
1206 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1201 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1207 | > | 1202 | > |
1208 | Approved | 1203 | Approved |
1209 | </span> | 1204 | </span> |
1210 | </td> | 1205 | </td> |
1211 | <td class="px-4 py-3 text-sm"> | 1206 | <td class="px-4 py-3 text-sm"> |
1212 | 6/10/2020 | 1207 | 6/10/2020 |
1213 | </td> | 1208 | </td> |
1214 | </tr> | 1209 | </tr> |
1215 | 1210 | ||
1216 | <tr class="text-gray-700 dark:text-gray-400"> | 1211 | <tr class="text-gray-700 dark:text-gray-400"> |
1217 | <td class="px-4 py-3"> | 1212 | <td class="px-4 py-3"> |
1218 | <div class="flex items-center text-sm"> | 1213 | <div class="flex items-center text-sm"> |
1219 | 1214 | ||
1220 | <div | 1215 | <div |
1221 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1216 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1222 | > | 1217 | > |
1223 | <img | 1218 | <img |
1224 | class="object-cover w-full h-full rounded-full" | 1219 | class="object-cover w-full h-full rounded-full" |
1225 | src="https://images.unsplash.com/photo-1546456073-6712f79251bb?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1220 | src="https://images.unsplash.com/photo-1546456073-6712f79251bb?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1226 | alt="" | 1221 | alt="" |
1227 | loading="lazy" | 1222 | loading="lazy" |
1228 | /> | 1223 | /> |
1229 | <div | 1224 | <div |
1230 | class="absolute inset-0 rounded-full shadow-inner" | 1225 | class="absolute inset-0 rounded-full shadow-inner" |
1231 | aria-hidden="true" | 1226 | aria-hidden="true" |
1232 | ></div> | 1227 | ></div> |
1233 | </div> | 1228 | </div> |
1234 | <div> | 1229 | <div> |
1235 | <p class="font-semibold">Wenzel Dashington</p> | 1230 | <p class="font-semibold">Wenzel Dashington</p> |
1236 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1231 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1237 | Actor | 1232 | Actor |
1238 | </p> | 1233 | </p> |
1239 | </div> | 1234 | </div> |
1240 | </div> | 1235 | </div> |
1241 | </td> | 1236 | </td> |
1242 | <td class="px-4 py-3 text-sm"> | 1237 | <td class="px-4 py-3 text-sm"> |
1243 | $ 863.45 | 1238 | $ 863.45 |
1244 | </td> | 1239 | </td> |
1245 | <td class="px-4 py-3 text-xs"> | 1240 | <td class="px-4 py-3 text-xs"> |
1246 | <span | 1241 | <span |
1247 | class="px-2 py-1 font-semibold leading-tight text-gray-700 bg-gray-100 rounded-full dark:text-gray-100 dark:bg-gray-700" | 1242 | class="px-2 py-1 font-semibold leading-tight text-gray-700 bg-gray-100 rounded-full dark:text-gray-100 dark:bg-gray-700" |
1248 | > | 1243 | > |
1249 | Expired | 1244 | Expired |
1250 | </span> | 1245 | </span> |
1251 | </td> | 1246 | </td> |
1252 | <td class="px-4 py-3 text-sm"> | 1247 | <td class="px-4 py-3 text-sm"> |
1253 | 6/10/2020 | 1248 | 6/10/2020 |
1254 | </td> | 1249 | </td> |
1255 | </tr> | 1250 | </tr> |
1256 | 1251 | ||
1257 | <tr class="text-gray-700 dark:text-gray-400"> | 1252 | <tr class="text-gray-700 dark:text-gray-400"> |
1258 | <td class="px-4 py-3"> | 1253 | <td class="px-4 py-3"> |
1259 | <div class="flex items-center text-sm"> | 1254 | <div class="flex items-center text-sm"> |
1260 | 1255 | ||
1261 | <div | 1256 | <div |
1262 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1257 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1263 | > | 1258 | > |
1264 | <img | 1259 | <img |
1265 | class="object-cover w-full h-full rounded-full" | 1260 | class="object-cover w-full h-full rounded-full" |
1266 | src="https://images.unsplash.com/photo-1502720705749-871143f0e671?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&s=b8377ca9f985d80264279f277f3a67f5" | 1261 | src="https://images.unsplash.com/photo-1502720705749-871143f0e671?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&s=b8377ca9f985d80264279f277f3a67f5" |
1267 | alt="" | 1262 | alt="" |
1268 | loading="lazy" | 1263 | loading="lazy" |
1269 | /> | 1264 | /> |
1270 | <div | 1265 | <div |
1271 | class="absolute inset-0 rounded-full shadow-inner" | 1266 | class="absolute inset-0 rounded-full shadow-inner" |
1272 | aria-hidden="true" | 1267 | aria-hidden="true" |
1273 | ></div> | 1268 | ></div> |
1274 | </div> | 1269 | </div> |
1275 | <div> | 1270 | <div> |
1276 | <p class="font-semibold">Dave Li</p> | 1271 | <p class="font-semibold">Dave Li</p> |
1277 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1272 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1278 | Influencer | 1273 | Influencer |
1279 | </p> | 1274 | </p> |
1280 | </div> | 1275 | </div> |
1281 | </div> | 1276 | </div> |
1282 | </td> | 1277 | </td> |
1283 | <td class="px-4 py-3 text-sm"> | 1278 | <td class="px-4 py-3 text-sm"> |
1284 | $ 863.45 | 1279 | $ 863.45 |
1285 | </td> | 1280 | </td> |
1286 | <td class="px-4 py-3 text-xs"> | 1281 | <td class="px-4 py-3 text-xs"> |
1287 | <span | 1282 | <span |
1288 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1283 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1289 | > | 1284 | > |
1290 | Approved | 1285 | Approved |
1291 | </span> | 1286 | </span> |
1292 | </td> | 1287 | </td> |
1293 | <td class="px-4 py-3 text-sm"> | 1288 | <td class="px-4 py-3 text-sm"> |
1294 | 6/10/2020 | 1289 | 6/10/2020 |
1295 | </td> | 1290 | </td> |
1296 | </tr> | 1291 | </tr> |
1297 | 1292 | ||
1298 | <tr class="text-gray-700 dark:text-gray-400"> | 1293 | <tr class="text-gray-700 dark:text-gray-400"> |
1299 | <td class="px-4 py-3"> | 1294 | <td class="px-4 py-3"> |
1300 | <div class="flex items-center text-sm"> | 1295 | <div class="flex items-center text-sm"> |
1301 | 1296 | ||
1302 | <div | 1297 | <div |
1303 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1298 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1304 | > | 1299 | > |
1305 | <img | 1300 | <img |
1306 | class="object-cover w-full h-full rounded-full" | 1301 | class="object-cover w-full h-full rounded-full" |
1307 | src="https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1302 | src="https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1308 | alt="" | 1303 | alt="" |
1309 | loading="lazy" | 1304 | loading="lazy" |
1310 | /> | 1305 | /> |
1311 | <div | 1306 | <div |
1312 | class="absolute inset-0 rounded-full shadow-inner" | 1307 | class="absolute inset-0 rounded-full shadow-inner" |
1313 | aria-hidden="true" | 1308 | aria-hidden="true" |
1314 | ></div> | 1309 | ></div> |
1315 | </div> | 1310 | </div> |
1316 | <div> | 1311 | <div> |
1317 | <p class="font-semibold">Maria Ramovic</p> | 1312 | <p class="font-semibold">Maria Ramovic</p> |
1318 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1313 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1319 | Runner | 1314 | Runner |
1320 | </p> | 1315 | </p> |
1321 | </div> | 1316 | </div> |
1322 | </div> | 1317 | </div> |
1323 | </td> | 1318 | </td> |
1324 | <td class="px-4 py-3 text-sm"> | 1319 | <td class="px-4 py-3 text-sm"> |
1325 | $ 863.45 | 1320 | $ 863.45 |
1326 | </td> | 1321 | </td> |
1327 | <td class="px-4 py-3 text-xs"> | 1322 | <td class="px-4 py-3 text-xs"> |
1328 | <span | 1323 | <span |
1329 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1324 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1330 | > | 1325 | > |
1331 | Approved | 1326 | Approved |
1332 | </span> | 1327 | </span> |
1333 | </td> | 1328 | </td> |
1334 | <td class="px-4 py-3 text-sm"> | 1329 | <td class="px-4 py-3 text-sm"> |
1335 | 6/10/2020 | 1330 | 6/10/2020 |
1336 | </td> | 1331 | </td> |
1337 | </tr> | 1332 | </tr> |
1338 | 1333 | ||
1339 | <tr class="text-gray-700 dark:text-gray-400"> | 1334 | <tr class="text-gray-700 dark:text-gray-400"> |
1340 | <td class="px-4 py-3"> | 1335 | <td class="px-4 py-3"> |
1341 | <div class="flex items-center text-sm"> | 1336 | <div class="flex items-center text-sm"> |
1342 | 1337 | ||
1343 | <div | 1338 | <div |
1344 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1339 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1345 | > | 1340 | > |
1346 | <img | 1341 | <img |
1347 | class="object-cover w-full h-full rounded-full" | 1342 | class="object-cover w-full h-full rounded-full" |
1348 | src="https://images.unsplash.com/photo-1566411520896-01e7ca4726af?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1343 | src="https://images.unsplash.com/photo-1566411520896-01e7ca4726af?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1349 | alt="" | 1344 | alt="" |
1350 | loading="lazy" | 1345 | loading="lazy" |
1351 | /> | 1346 | /> |
1352 | <div | 1347 | <div |
1353 | class="absolute inset-0 rounded-full shadow-inner" | 1348 | class="absolute inset-0 rounded-full shadow-inner" |
1354 | aria-hidden="true" | 1349 | aria-hidden="true" |
1355 | ></div> | 1350 | ></div> |
1356 | </div> | 1351 | </div> |
1357 | <div> | 1352 | <div> |
1358 | <p class="font-semibold">Hitney Wouston</p> | 1353 | <p class="font-semibold">Hitney Wouston</p> |
1359 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1354 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1360 | Singer | 1355 | Singer |
1361 | </p> | 1356 | </p> |
1362 | </div> | 1357 | </div> |
1363 | </div> | 1358 | </div> |
1364 | </td> | 1359 | </td> |
1365 | <td class="px-4 py-3 text-sm"> | 1360 | <td class="px-4 py-3 text-sm"> |
1366 | $ 863.45 | 1361 | $ 863.45 |
1367 | </td> | 1362 | </td> |
1368 | <td class="px-4 py-3 text-xs"> | 1363 | <td class="px-4 py-3 text-xs"> |
1369 | <span | 1364 | <span |
1370 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1365 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1371 | > | 1366 | > |
1372 | Approved | 1367 | Approved |
1373 | </span> | 1368 | </span> |
1374 | </td> | 1369 | </td> |
1375 | <td class="px-4 py-3 text-sm"> | 1370 | <td class="px-4 py-3 text-sm"> |
1376 | 6/10/2020 | 1371 | 6/10/2020 |
1377 | </td> | 1372 | </td> |
1378 | </tr> | 1373 | </tr> |
1379 | 1374 | ||
1380 | <tr class="text-gray-700 dark:text-gray-400"> | 1375 | <tr class="text-gray-700 dark:text-gray-400"> |
1381 | <td class="px-4 py-3"> | 1376 | <td class="px-4 py-3"> |
1382 | <div class="flex items-center text-sm"> | 1377 | <div class="flex items-center text-sm"> |
1383 | 1378 | ||
1384 | <div | 1379 | <div |
1385 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 1380 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
1386 | > | 1381 | > |
1387 | <img | 1382 | <img |
1388 | class="object-cover w-full h-full rounded-full" | 1383 | class="object-cover w-full h-full rounded-full" |
1389 | src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" | 1384 | src="https://images.unsplash.com/flagged/photo-1570612861542-284f4c12e75f?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjE3Nzg0fQ" |
1390 | alt="" | 1385 | alt="" |
1391 | loading="lazy" | 1386 | loading="lazy" |
1392 | /> | 1387 | /> |
1393 | <div | 1388 | <div |
1394 | class="absolute inset-0 rounded-full shadow-inner" | 1389 | class="absolute inset-0 rounded-full shadow-inner" |
1395 | aria-hidden="true" | 1390 | aria-hidden="true" |
1396 | ></div> | 1391 | ></div> |
1397 | </div> | 1392 | </div> |
1398 | <div> | 1393 | <div> |
1399 | <p class="font-semibold">Hans Burger</p> | 1394 | <p class="font-semibold">Hans Burger</p> |
1400 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 1395 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
1401 | 10x Developer | 1396 | 10x Developer |
1402 | </p> | 1397 | </p> |
1403 | </div> | 1398 | </div> |
1404 | </div> | 1399 | </div> |
1405 | </td> | 1400 | </td> |
1406 | <td class="px-4 py-3 text-sm"> | 1401 | <td class="px-4 py-3 text-sm"> |
1407 | $ 863.45 | 1402 | $ 863.45 |
1408 | </td> | 1403 | </td> |
1409 | <td class="px-4 py-3 text-xs"> | 1404 | <td class="px-4 py-3 text-xs"> |
1410 | <span | 1405 | <span |
1411 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" | 1406 | class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100" |
1412 | > | 1407 | > |
1413 | Approved | 1408 | Approved |
1414 | </span> | 1409 | </span> |
1415 | </td> | 1410 | </td> |
1416 | <td class="px-4 py-3 text-sm"> | 1411 | <td class="px-4 py-3 text-sm"> |
1417 | 6/10/2020 | 1412 | 6/10/2020 |
1418 | </td> | 1413 | </td> |
1419 | </tr> | 1414 | </tr> |
1420 | </tbody> | 1415 | </tbody> |
1421 | </table> | 1416 | </table> |
1422 | </div> | 1417 | </div> |
1423 | <div | 1418 | <div |
1424 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" | 1419 | class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800" |
1425 | > | 1420 | > |
1426 | <span class="flex items-center col-span-3"> | 1421 | <span class="flex items-center col-span-3"> |
1427 | Showing 21-30 of 100 | 1422 | Showing 21-30 of 100 |
1428 | </span> | 1423 | </span> |
1429 | <span class="col-span-2"></span> | 1424 | <span class="col-span-2"></span> |
1430 | 1425 | ||
1431 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> | 1426 | <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end"> |
1432 | <nav aria-label="Table navigation"> | 1427 | <nav aria-label="Table navigation"> |
1433 | <ul class="inline-flex items-center"> | 1428 | <ul class="inline-flex items-center"> |
1434 | <li> | 1429 | <li> |
1435 | <button | 1430 | <button |
1436 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" | 1431 | class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none focus:shadow-outline-purple" |
1437 | aria-label="Previous" | 1432 | aria-label="Previous" |
1438 | > | 1433 | > |
1439 | <svg | 1434 | <svg |
1440 | aria-hidden="true" | 1435 | aria-hidden="true" |
1441 | class="w-4 h-4 fill-current" | 1436 | class="w-4 h-4 fill-current" |
1442 | viewBox="0 0 20 20" | 1437 | viewBox="0 0 20 20" |
1443 | > | 1438 | > |
1444 | <path | 1439 | <path |
1445 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" | 1440 | d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" |
1446 | clip-rule="evenodd" | 1441 | clip-rule="evenodd" |
1447 | fill-rule="evenodd" | 1442 | fill-rule="evenodd" |
1448 | ></path> | 1443 | ></path> |
1449 | </svg> | 1444 | </svg> |
1450 | </button> | 1445 | </button> |
1451 | </li> | 1446 | </li> |
1452 | <li> | 1447 | <li> |
1453 | <button | 1448 | <button |
1454 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1449 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1455 | > | 1450 | > |
1456 | 1 | 1451 | 1 |
1457 | </button> | 1452 | </button> |
1458 | </li> | 1453 | </li> |
1459 | <li> | 1454 | <li> |
1460 | <button | 1455 | <button |
1461 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1456 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1462 | > | 1457 | > |
1463 | 2 | 1458 | 2 |
1464 | </button> | 1459 | </button> |
1465 | </li> | 1460 | </li> |
1466 | <li> | 1461 | <li> |
1467 | <button | 1462 | <button |
1468 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" | 1463 | class="px-3 py-1 text-white transition-colors duration-150 bg-purple-600 border border-r-0 border-purple-600 rounded-md focus:outline-none focus:shadow-outline-purple" |
1469 | > | 1464 | > |
1470 | 3 | 1465 | 3 |
1471 | </button> | 1466 | </button> |
1472 | </li> | 1467 | </li> |
1473 | <li> | 1468 | <li> |
1474 | <button | 1469 | <button |
1475 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1470 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1476 | > | 1471 | > |
1477 | 4 | 1472 | 4 |
1478 | </button> | 1473 | </button> |
1479 | </li> | 1474 | </li> |
1480 | <li> | 1475 | <li> |
1481 | <span class="px-3 py-1">...</span> | 1476 | <span class="px-3 py-1">...</span> |
1482 | </li> | 1477 | </li> |
1483 | <li> | 1478 | <li> |
1484 | <button | 1479 | <button |
1485 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1480 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1486 | > | 1481 | > |
1487 | 8 | 1482 | 8 |
1488 | </button> | 1483 | </button> |
1489 | </li> | 1484 | </li> |
1490 | <li> | 1485 | <li> |
1491 | <button | 1486 | <button |
1492 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" | 1487 | class="px-3 py-1 rounded-md focus:outline-none focus:shadow-outline-purple" |
1493 | > | 1488 | > |
1494 | 9 | 1489 | 9 |
1495 | </button> | 1490 | </button> |
1496 | </li> | 1491 | </li> |
1497 | <li> | 1492 | <li> |
1498 | <button | 1493 | <button |
1499 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" | 1494 | class="px-3 py-1 rounded-md rounded-r-lg focus:outline-none focus:shadow-outline-purple" |
1500 | aria-label="Next" | 1495 | aria-label="Next" |
1501 | > | 1496 | > |
1502 | <svg | 1497 | <svg |
1503 | class="w-4 h-4 fill-current" | 1498 | class="w-4 h-4 fill-current" |
1504 | aria-hidden="true" | 1499 | aria-hidden="true" |
1505 | viewBox="0 0 20 20" | 1500 | viewBox="0 0 20 20" |
1506 | > | 1501 | > |
1507 | <path | 1502 | <path |
1508 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" | 1503 | d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" |
1509 | clip-rule="evenodd" | 1504 | clip-rule="evenodd" |
1510 | fill-rule="evenodd" | 1505 | fill-rule="evenodd" |
1511 | ></path> | 1506 | ></path> |
1512 | </svg> | 1507 | </svg> |
1513 | </button> | 1508 | </button> |
1514 | </li> | 1509 | </li> |
1515 | </ul> | 1510 | </ul> |
1516 | </nav> | 1511 | </nav> |
1517 | </span> | 1512 | </span> |
1518 | </div> | 1513 | </div> |
1519 | </div> | 1514 | </div> |
1520 | --> | 1515 | --> |
1521 | <!-- Charts --> | 1516 | <!-- Charts --> |
1522 | <!-- | 1517 | <!-- |
1523 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> | 1518 | <h2 class="my-6 text-2xl font-semibold text-gray-700 dark:text-gray-200"> |
1524 | Графики | 1519 | Графики |
1525 | </h2> | 1520 | </h2> |
1526 | <div class="grid gap-6 mb-8 md:grid-cols-2"> | 1521 | <div class="grid gap-6 mb-8 md:grid-cols-2"> |
1527 | <div | 1522 | <div |
1528 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1523 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1529 | > | 1524 | > |
1530 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1525 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1531 | Revenue | 1526 | Revenue |
1532 | </h4> | 1527 | </h4> |
1533 | <canvas id="pie"></canvas> | 1528 | <canvas id="pie"></canvas> |
1534 | <div | 1529 | <div |
1535 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 1530 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1536 | > | 1531 | > |
1537 | 1532 | ||
1538 | <div class="flex items-center"> | 1533 | <div class="flex items-center"> |
1539 | <span | 1534 | <span |
1540 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" | 1535 | class="inline-block w-3 h-3 mr-1 bg-blue-500 rounded-full" |
1541 | ></span> | 1536 | ></span> |
1542 | <span>Shirts</span> | 1537 | <span>Shirts</span> |
1543 | </div> | 1538 | </div> |
1544 | <div class="flex items-center"> | 1539 | <div class="flex items-center"> |
1545 | <span | 1540 | <span |
1546 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 1541 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1547 | ></span> | 1542 | ></span> |
1548 | <span>Shoes</span> | 1543 | <span>Shoes</span> |
1549 | </div> | 1544 | </div> |
1550 | <div class="flex items-center"> | 1545 | <div class="flex items-center"> |
1551 | <span | 1546 | <span |
1552 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 1547 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1553 | ></span> | 1548 | ></span> |
1554 | <span>Bags</span> | 1549 | <span>Bags</span> |
1555 | </div> | 1550 | </div> |
1556 | </div> | 1551 | </div> |
1557 | </div> | 1552 | </div> |
1558 | <div | 1553 | <div |
1559 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" | 1554 | class="min-w-0 p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800" |
1560 | > | 1555 | > |
1561 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> | 1556 | <h4 class="mb-4 font-semibold text-gray-800 dark:text-gray-300"> |
1562 | Traffic | 1557 | Traffic |
1563 | </h4> | 1558 | </h4> |
1564 | <canvas id="line"></canvas> | 1559 | <canvas id="line"></canvas> |
1565 | <div | 1560 | <div |
1566 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" | 1561 | class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400" |
1567 | > | 1562 | > |
1568 | 1563 | ||
1569 | <div class="flex items-center"> | 1564 | <div class="flex items-center"> |
1570 | <span | 1565 | <span |
1571 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" | 1566 | class="inline-block w-3 h-3 mr-1 bg-teal-600 rounded-full" |
1572 | ></span> | 1567 | ></span> |
1573 | <span>Organic</span> | 1568 | <span>Organic</span> |
1574 | </div> | 1569 | </div> |
1575 | <div class="flex items-center"> | 1570 | <div class="flex items-center"> |
1576 | <span | 1571 | <span |
1577 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" | 1572 | class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full" |
1578 | ></span> | 1573 | ></span> |
1579 | <span>Paid</span> | 1574 | <span>Paid</span> |
1580 | </div> | 1575 | </div> |
1581 | </div> | 1576 | </div> |
1582 | </div> | 1577 | </div> |
1583 | </div> | 1578 | </div> |
1584 | --> | 1579 | --> |
1585 | </div> | 1580 | </div> |
1586 | </main> | 1581 | </main> |
1587 | </div> | 1582 | </div> |
1588 | </div> | 1583 | </div> |
1589 | </body> | 1584 | </body> |
1585 | @yield('script') | ||
1590 | </html> | 1586 | </html> |
routes/web.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | use App\Http\Controllers\Admin\AdminController; | 3 | use App\Http\Controllers\Admin\AdminController; |
4 | use App\Http\Controllers\Admin\EmployersController; | ||
5 | use App\Http\Controllers\Admin\UsersController; | ||
6 | use App\Http\Controllers\Admin\WorkersController; | ||
4 | use App\Http\Controllers\Auth\LoginController; | 7 | use App\Http\Controllers\Auth\LoginController; |
5 | use App\Http\Controllers\Auth\RegisterController; | 8 | use App\Http\Controllers\Auth\RegisterController; |
6 | use App\Models\User; | 9 | use App\Models\User; |
7 | use App\Http\Controllers\MainController; | 10 | use App\Http\Controllers\MainController; |
8 | use App\Http\Controllers\HomeController; | 11 | use App\Http\Controllers\HomeController; |
9 | use Illuminate\Support\Facades\Route; | 12 | use Illuminate\Support\Facades\Route; |
10 | 13 | ||
11 | /* | 14 | /* |
12 | |-------------------------------------------------------------------------- | 15 | |-------------------------------------------------------------------------- |
13 | | Web Routes | 16 | | Web Routes |
14 | |-------------------------------------------------------------------------- | 17 | |-------------------------------------------------------------------------- |
15 | | | 18 | | |
16 | | Here is where you can register web routes for your application. These | 19 | | Here is where you can register web routes for your application. These |
17 | | routes are loaded by the RouteServiceProvider within a group which | 20 | | routes are loaded by the RouteServiceProvider within a group which |
18 | | contains the "web" middleware group. Now create something great! | 21 | | contains the "web" middleware group. Now create something great! |
19 | | | 22 | | |
20 | */ | 23 | */ |
21 | /* | 24 | /* |
22 | Route::get('/', function () { | 25 | Route::get('/', function () { |
23 | return view('welcome'); | 26 | return view('welcome'); |
24 | })->name('index'); | 27 | })->name('index'); |
25 | */ | 28 | */ |
26 | Route::get('/', [MainController::class, 'index'])->name('index'); | 29 | Route::get('/', [MainController::class, 'index'])->name('index'); |
27 | 30 | ||
28 | //Роуты авторизации, регистрации, восстановления, аутентификации | 31 | //Роуты авторизации, регистрации, восстановления, аутентификации |
29 | Auth::routes(['verify' => true]); | 32 | Auth::routes(['verify' => true]); |
30 | //Личный кабинет пользователя | 33 | //Личный кабинет пользователя |
31 | Route::get('/home', [HomeController::class, 'index'])->name('home'); | 34 | Route::get('/home', [HomeController::class, 'index'])->name('home'); |
32 | 35 | ||
33 | /* | 36 | /* |
34 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { | 37 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { |
35 | $user = User::where('email',$request->input('email'))->first(); | 38 | $user = User::where('email',$request->input('email'))->first(); |
36 | 39 | ||
37 | $user->sendEmailVerificationNotification(); | 40 | $user->sendEmailVerificationNotification(); |
38 | 41 | ||
39 | return 'your response'; | 42 | return 'your response'; |
40 | })->middleware('throttle:6,1')->name('verification.resend'); | 43 | })->middleware('throttle:6,1')->name('verification.resend'); |
41 | */ | 44 | */ |
42 | 45 | ||
43 | // Авторизация, регистрация в админку | 46 | // Авторизация, регистрация в админку |
44 | Route::group([ | 47 | Route::group([ |
45 | 'as' => 'admin.', // имя маршрута, например auth.index | 48 | 'as' => 'admin.', // имя маршрута, например auth.index |
46 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 49 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
47 | 'middleware' => ['guest'], | 50 | 'middleware' => ['guest'], |
48 | ], function () { | 51 | ], function () { |
49 | // Форма регистрации | 52 | // Форма регистрации |
50 | Route::get('register', [AdminController::class, 'register'])->name('register'); | 53 | Route::get('register', [AdminController::class, 'register'])->name('register'); |
51 | 54 | ||
52 | // Создание пользователя | 55 | // Создание пользователя |
53 | Route::post('register', [AdminController::class, 'create'])->name('create'); | 56 | Route::post('register', [AdminController::class, 'create'])->name('create'); |
54 | //Форма входа | 57 | //Форма входа |
55 | Route::get('login', [AdminController::class, 'login'])->name('login'); | 58 | Route::get('login', [AdminController::class, 'login'])->name('login'); |
56 | 59 | ||
57 | // аутентификация | 60 | // аутентификация |
58 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); | 61 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); |
59 | 62 | ||
60 | }); | 63 | }); |
61 | 64 | ||
62 | // Личный кабинет админки | 65 | // Личный кабинет админки |
63 | Route::group([ | 66 | Route::group([ |
64 | 'as' => 'admin.', // имя маршрута, например auth.index | 67 | 'as' => 'admin.', // имя маршрута, например auth.index |
65 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 68 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
66 | 'middleware' => ['auth'], ['admin'], | 69 | 'middleware' => ['auth'], ['admin'], |
67 | ], function() { | 70 | ], function() { |
68 | 71 | ||
69 | // выход | 72 | // выход |
70 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); | 73 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); |
71 | 74 | ||
72 | // кабинет главная страница | 75 | // кабинет главная страница |
73 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); | 76 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); |
74 | 77 | ||
75 | // кабинет - пользователи | 78 | // кабинет - пользователи |
76 | Route::get('users', [AdminController::class, 'index'])->name('users'); | 79 | Route::get('users', [UsersController::class, 'index'])->name('users'); |
80 | |||
81 | // кабинет - пользователи | ||
82 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); | ||
77 | 83 | ||
78 | // кабинет - работодатели | 84 | // кабинет - работодатели |
79 | Route::get('employers', [AdminController::class, 'index'])->name('employers'); | 85 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); |
80 | 86 | ||
81 | // кабинет - соискатели | 87 | // кабинет - соискатели |
82 | Route::get('workers', [AdminController::class, 'index'])->name('workers'); | 88 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); |
83 | 89 | ||
84 | // кабинет - вакансии | 90 | // кабинет - вакансии |
85 | Route::get('ad-employers', [AdminController::class, 'index'])->name('ad-employers'); | 91 | Route::get('ad-employers', [AdminController::class, 'index'])->name('ad-employers'); |
86 | 92 | ||
87 | // кабинет - категории | 93 | // кабинет - категории |
88 | Route::get('categories', [AdminController::class, 'index'])->name('categories'); | 94 | Route::get('categories', [AdminController::class, 'index'])->name('categories'); |
89 | 95 | ||
90 | // кабинет - должности | 96 | // кабинет - должности |
91 | Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); | 97 | Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); |
92 | 98 | ||
93 | // кабинет - сообщения | 99 | // кабинет - сообщения |
94 | Route::get('messages', [AdminController::class, 'index'])->name('messages'); | 100 | Route::get('messages', [AdminController::class, 'index'])->name('messages'); |
95 | 101 | ||
96 | // кабинет - группы пользователей | 102 | // кабинет - группы пользователей |
97 | Route::get('groups', [AdminController::class, 'index'])->name('groups'); | 103 | Route::get('groups', [AdminController::class, 'index'])->name('groups'); |
98 | 104 | ||
99 | // кабинет - список админов | 105 | // кабинет - список админов |
100 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); | 106 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); |
101 | }); | 107 | }); |
102 | 108 |