diff --git a/.env.example b/.env.example deleted file mode 100644 index ea0665b..0000000 --- a/.env.example +++ /dev/null @@ -1,59 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY= -APP_DEBUG=true -APP_URL=http://localhost - -LOG_CHANNEL=stack -LOG_DEPRECATIONS_CHANNEL=null -LOG_LEVEL=debug - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailpit -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS="hello@example.com" -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_USE_PATH_STYLE_ENDPOINT=false - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_HOST= -PUSHER_PORT=443 -PUSHER_SCHEME=https -PUSHER_APP_CLUSTER=mt1 - -VITE_APP_NAME="${APP_NAME}" -VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -VITE_PUSHER_HOST="${PUSHER_HOST}" -VITE_PUSHER_PORT="${PUSHER_PORT}" -VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" -VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/app/Http/Controllers/API/LoginApiController.php b/app/Http/Controllers/API/LoginApiController.php new file mode 100644 index 0000000..bdff943 --- /dev/null +++ b/app/Http/Controllers/API/LoginApiController.php @@ -0,0 +1,127 @@ +middleware('auth:api', ['except' => ['login', 'register', 'hai']]); + } + + /** + * Get a JWT via given credentials. + * + * @return \Illuminate\Http\JsonResponse + */ + public function login() + { + // $request->validate([ + // 'email' => 'required|string|email', + // 'password' => 'required', + // ]); + + $credentials = request(['email', 'password']); + + if (!($token = auth()->attempt($credentials))) { + return response()->json(['error' => 'Unauthorized'], 401); + } + + return $this->respondWithToken($token); + } + + /** + * Get the authenticated User. + * + * @return \Illuminate\Http\JsonResponse + */ + public function me() + { + return response()->json(Auth::user()); + } + + public function hai() + { + return response()->json([ + 'message' => 'Hello from API', + ]); + } + + /** + * Log the user out (Invalidate the token). + * + * @return \Illuminate\Http\JsonResponse + */ + public function logout() + { + auth()->logout(); + + return response()->json(['message' => 'Successfully logged out']); + } + + /** + * Refresh a token. + * + * @return \Illuminate\Http\JsonResponse + */ + public function refresh() + { + return $this->respondWithToken(Auth::refresh()); + } + + /** + * Get the token array structure. + * + * @param string $token + * + * @return \Illuminate\Http\JsonResponse + */ + protected function respondWithToken($token) + { + return response()->json([ + 'user' => auth()->user(), + 'access_token' => $token, + 'token_type' => 'bearer', + 'expires_in' => Auth::factory()->getTTL() * 60, + // 'status' => auth()->check(), + ]); + } + + public function register(Request $request) + { + $request->validate([ + 'name' => 'required|string|max:255', + 'email' => 'required|string|email|unique:users', + 'password' => 'required|string|min:8', + ]); + + $user = User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password' => Hash::make($request->password), + ]); + + return response()->json([ + 'message' => 'User created successfully', + 'user' => $user, + ]); + } + + // public function check() + // { + // return response()->json([ + // 'status' => auth()->check(), + // ]); + // } +} diff --git a/app/Http/Controllers/Admin/AdminDashboardController.php b/app/Http/Controllers/Admin/AdminDashboardController.php new file mode 100644 index 0000000..7c04963 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminDashboardController.php @@ -0,0 +1,82 @@ +month; + $currentYear = Carbon::now()->year; + + $countSuccess = Transaction::where('status', 'settlement') + ->whereMonth('updated_at', $currentMonth) + ->whereYear('updated_at', $currentYear) + ->count(); + + $countPending = Transaction::where('status', 'pending') + ->whereMonth('updated_at', $currentMonth) + ->whereYear('updated_at', $currentYear) + ->count(); + + $countCancelled = Transaction::where('status', 'cancel') + ->whereMonth('updated_at', $currentMonth) + ->whereYear('updated_at', $currentYear) + ->count(); + + $countRefund = Transaction::where('status', 'refund') + ->whereMonth('updated_at', $currentMonth) + ->whereYear('updated_at', $currentYear) + ->count(); + + $totalTransaction = Transaction::whereMonth('updated_at', $currentMonth) + ->whereYear('updated_at', $currentYear) + ->count(); + + $dataChartTransaction = []; + $dataChartRefund = []; + + $totalRefund = Transaction::where('status', 'refund')->count(); + $dataChartTotalRefund = []; + + $totalUser = User::where('status', 'Finished')->count(); + $dataChartTotalUser = []; + + for ($bulan = 1; $bulan <= 12; $bulan++) { + $transaction = Transaction::whereMonth('updated_at', $bulan) + ->whereYear('updated_at', $currentYear) + ->where('status', 'settlement') + ->sum('total_bayar'); + + $refund = Transaction::whereMonth('updated_at', $bulan) + ->whereYear('updated_at', $currentYear) + ->where('status', 'partial refund') + ->sum('total_harga'); + + $dataChartTransaction[] = intval($transaction); + $dataChartRefund[] = intval($refund); + } + + return view('admin.index', compact('transactions', 'countSuccess', 'countPending', 'countCancelled', 'countRefund', 'totalRefund', 'totalUser', 'totalTransaction', 'dataChartTransaction', 'dataChartRefund', 'dataChartTotalUser', 'dataChartTotalRefund')); + } + + public function getChartByMonth() + { + $dataChartLaporan = []; + $tahun = Carbon::now()->year; + } + + public function getCharByYear() + { + } +} diff --git a/app/Http/Controllers/Admin/AdminRefundController.php b/app/Http/Controllers/Admin/AdminRefundController.php new file mode 100644 index 0000000..13e9657 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminRefundController.php @@ -0,0 +1,47 @@ + Refund::latest()->get() + ]); + } + + /** + * Display the specified resource. + */ + public function show($id) + { + $refund = Refund::find($id); + $refundDescription = RefundDescription::where('refund_id',$id)->get(); + return view('admin.refund.detail-refund',[ + "refund"=> $refund, + 'descriptions' => $refundDescription + ]); + } + + public function aprroveRefund($id){ + $query = Refund::where('id',$id)->update([ + + ]); + } + + public function denyRefund($id){ + $query = Refund::where('id',$id)->update([ + + ]); + } +} diff --git a/app/Http/Controllers/Admin/AdminSettingController.php b/app/Http/Controllers/Admin/AdminSettingController.php new file mode 100644 index 0000000..2e4e6c7 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminSettingController.php @@ -0,0 +1,88 @@ + $settings, + ]); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + try{ + DB::beginTransaction(); + + Setting::updateOrCreate( + ['bulan' => $request->bulan, 'tahun' => $request->tahun], + ['persentase' => $request->persentase] + ); + + DB::commit(); + + return response()->json(['status' => true, 'message' => 'Berhasil menambah']); + + }catch(Throwable $e){ + DB::rollBack(); + + Log::error($e->getMessage()); + + return response()->json(['status' => false, 'message' => 'Terjadi Kesalahan pada sisi server', 'data' => $request]); + } + + } + + /** + * Update the specified resource in storage. + */ + public function activeSetting(Request $request) + { + $setting = Setting::findOrFail($request->id); + if ($setting->status == 'Active') { + $setting->status = 'Nonactive'; + $result = $setting->save(); + if ($result) { + return response()->json([ + 'message' => "Berhasil update kebijakan", + 'status' => true, + ]); + } else { + return response()->json([ + 'message' => "Gagal update kebijakan", + 'status' => true, + ]); + } + } else { + $setting->status = 'Active'; + $result = $setting->save(); + if ($result) { + return response()->json([ + 'message' => "Berhasil update kebijakan", + 'status' => true, + ]); + } else { + return response()->json([ + 'message' => "Gagal update kebijakan", + 'status' => true, + ]); + } + } + } +} diff --git a/app/Http/Controllers/Admin/AdminTransactionController.php b/app/Http/Controllers/Admin/AdminTransactionController.php new file mode 100644 index 0000000..ec6439a --- /dev/null +++ b/app/Http/Controllers/Admin/AdminTransactionController.php @@ -0,0 +1,35 @@ + Transaction::latest() + ->get(), + ]); + } + + /** + * Display the specified resource. + */ + public function show($id) + { + return view('admin.transaction.detail-transaction', [ + 'transaction' => Transaction::findOrFail($id), + 'trackings' => TransactionDescription::where('transaction_id', $id) + ->latest() + ->get(), + ]); + } +} diff --git a/app/Http/Controllers/Admin/AdminUserController.php b/app/Http/Controllers/Admin/AdminUserController.php new file mode 100644 index 0000000..ed0f8bd --- /dev/null +++ b/app/Http/Controllers/Admin/AdminUserController.php @@ -0,0 +1,88 @@ +orderByRaw("CASE WHEN status = 'Progress' THEN 1 WHEN status = 'Finished' THEN 2 WHEN status = 'Rejected' THEN 3 ELSE 4 END ASC") + ->latest() + ->get(); + return view('admin.users.index', ['users' => $users]); + } + + /** + * Display the specified resource. + */ + public function show($id) + { + $user = User::find($id); + return view('admin.users.detail-user', ['user' => $user]); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + try { + $result = User::destroy($id); + if ($result) { + return response()->json([ + 'message' => 'Berhasil hapus data', + 'status' => true, + ]); + } + } catch (\Exception $e) { + return response()->json([ + 'message' => 'Gagal hapus data, karena ' . $e, + 'status' => false, + ]); + } + } + + public function approveUser($id) + { + $user = User::findOrFail($id); + $user->status = 'Finished'; + $result = $user->save(); + if ($result) { + return response()->json([ + 'message' => 'Akun telah disetujui dan dapat digunakan', + 'status' => true, + ]); + } else { + return response()->json([ + 'message' => 'Akun gagal disetujui karena ' + $result, + 'status' => false, + ]); + } + } + + public function denyUser($id) + { + $user = User::findOrFail($id); + $user->status = 'Rejected'; + $result = $user->save(); + if ($result) { + return response()->json([ + 'message' => 'Akun telah ditolak dan tidak dapat digunakan', + 'status' => true, + ]); + } else { + return response()->json([ + 'message' => 'Akun gagal ditolak karena ' + $result, + 'status' => false, + ]); + } + } +} diff --git a/app/Http/Controllers/Login/LoginController.php b/app/Http/Controllers/Login/LoginController.php new file mode 100644 index 0000000..985a772 --- /dev/null +++ b/app/Http/Controllers/Login/LoginController.php @@ -0,0 +1,336 @@ +validate( + [ + 'email' => ['required', 'email'], + 'password' => ['required', 'min:8'], + ], + [ + 'email.required' => 'Alamat email wajib diisi.', + 'email.email' => 'Alamat email harus berformat valid.', + 'password.required' => 'Password wajib diisi.', + 'password.min' => 'Password harus memiliki panjang minimal 8 karakter.', + ] + ); + + if (Auth::attempt($credentials)) { + if (Auth::user()->status == 'Finished') { + $request->session()->regenerate(); + if (ucwords(Auth::user()->role) == 'Admin') { + return redirect()->intended('admin'); + } else { + return redirect()->intended('user'); + } + } else if(Auth::user()->status == 'Rejected'){ + Session::flash('message', 'Akun ditolak karena tidak memenuhi persyaratan'); + return redirect()->back(); + } else { + Session::flash('message', 'Akun tidak ditemukan atau sedang dalam pengajuan'); + return redirect()->back(); + } + }else{ + return redirect() + ->back() + ->withErrors($credentials) + ->onlyInput('email'); + } + } + + /** + * Log the user out (Invalidate the token). + * + * @return \Illuminate\Http\JsonResponse + */ + public function logout(Request $request) + { + Auth::logout(); + + $request->session()->invalidate(); + + $request->session()->regenerateToken(); + + return redirect()->route('login'); + } + + public function register(Request $request) + { + $nama_depan = $request->get('nama-depan'); + $nama_belakang = $request->get('nama-belakang'); + $tanggal_lahir = $request->get('tanggal-lahir'); + $new_password = $request->get('new-password'); + $nik = $request->get('nik'); + $email = $request->get('email'); + $nohp = $request->get('nohp'); + $alamat = $request->get('alamat'); + $foto_ktp = ''; + $foto_wajah = ''; + $persentase_kemiripan = 0; + $gender = $request->get('gender'); + $kode_kelurahan = $request->get('kode-kelurahan'); + + $ktpBase64 = $request->request->get('ktp'); + $wajahBase64 = $request->request->get('wajah'); + + $validatedData['email_verified_at'] = now(); + + if ($ktpBase64 && $wajahBase64) { + // Konversi string Base64 ke file gambar + $ktpFile = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $ktpBase64)); + $wajahFile = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $wajahBase64)); + + $foto_ktp = 'Foto-KTP-' . $nama_depan . '-' . $nama_belakang . '.jpg'; + $foto_wajah = 'Foto-Wajah-' . $nama_depan . '-' . $nama_belakang . '.jpg'; + + file_put_contents(public_path('storage/foto-ktp/' . $foto_ktp), $ktpFile); + file_put_contents(public_path('storage/foto-wajah/' . $foto_wajah), $wajahFile); + } + + //OCR + try { + $fotoKTP = public_path('storage/foto-ktp/' . $foto_ktp); + + $image = Image::make($fotoKTP); + + $image->greyscale(); // Convert to grayscale + $image->contrast(10); // Increase contrast, adjust the value as needed + + $preprocessedfotoKTP = public_path('storage/preprocessed/preprocessed_image.jpg'); + $image->save($preprocessedfotoKTP); + + $result = (new TesseractOCR($preprocessedfotoKTP))->run(); + + // (5) Normalize + + $lines = explode("\n", $result); + $namaOCR = ''; + $nikOCR = ''; + $nikInputan = $nik; + $namaInputan = $nama_depan . ' ' . $nama_belakang; + + foreach ($lines as $line) { + // Mencari NIK + if (strpos($line, $nikInputan) !== false) { + $nikOCR = preg_replace('/[^0-9]/', '', $line); + } + + // Mencari nama + if (strpos($line, $namaInputan) !== false) { + $namaOCR = trim(substr($line, strpos($line, ':') + 1)); + } + } + + //Selesai + + $persentase_kemiripan = (similar_text($nikInputan, $nikOCR, $percent) + similar_text($namaOCR, $namaOCR, $percent)) / 2; + // $status = 'Progress'; + + // if (similar_text($nikInputan, $nikOCR, $percent) >= 70 && similar_text($namaOCR, $namaOCR, $percent) >= 70) { + // $status = 'Progress'; + // } else { + // $status = 'Progress'; + // } + } catch (\Exception $e) { + // $status = 'Progress'; + } + //OCR + + //Deteksi wajah belum + + $password = Hash::make($new_password); + + $result = User::create([ + 'id' => Uuid::uuid4(), + 'nama_depan' => $nama_depan, + 'nama_belakang' => $nama_belakang, + 'tanggal_lahir' => $tanggal_lahir, + 'email' => $email, + 'email_verified_at' => now(), + 'password' => $password, + 'nohp' => $nohp, + 'nik' => $nik, + 'alamat' => $alamat, + 'foto_ktp' => $foto_ktp, + 'foto_wajah' => $foto_wajah, + 'foto_profile' => null, + 'persentase_kemiripan' => $persentase_kemiripan, + 'gender' => $gender, + 'kode_kelurahan' => $kode_kelurahan, + 'remember_token' => Str::random(10), + ]); + + if ($result) { + return response()->json([ + 'status' => true, + 'message' => 'Akun anda sudah terdaftar dan butuh verifikasi hingga maksimal 1 hari kerja', + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => 'Akun anda gagal terdaftar. Coba lagi! ' + $result, + ]); + } + } + + public function accountStatus($email) + { + $result = User::where('email', $email)->get(); + if ($result->isNotEmpty()) { + return response()->json([ + 'status' => true, + 'message' => $result, + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => $result, + ]); + } + } + + public function searchProvince() + { + $data = Province::where('name', 'LIKE', '%' . strtoupper(request('q')) . '%')->paginate(10); + + return response()->json($data); + } + + public function searchCity($code) + { + $data = City::where('province_code', $code) + ->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%') + ->paginate(10); + + return response()->json($data); + } + + public function searchDistrict($code) + { + $data = District::where('city_code', $code) + ->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%') + ->paginate(10); + + return response()->json($data); + } + + public function searchVillage($code) + { + $data = Village::where('district_code', $code) + ->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%') + ->paginate(10); + + return response()->json($data); + } + + public function sendVerificationCode(Request $request) + { + $email = $request->get('email'); + $code = $request->get('code'); + + $verificationEmail = [ + 'code' => $code, + 'email' => $email, + ]; + try { + Mail::to($email)->send(new verificationMail($verificationEmail)); + return response()->json([ + 'message' => 'Kode verifikasi berhasil dikirim ke email. Silahkan cek di email anda.', + 'status' => true, + ]); + } catch (\Exception $e) { + return response()->json([ + 'message' => 'Kode verifikasi gagal dikirim ke email. ' . $e, + 'status' => false, + ]); + } + } + + public function getOcr() + { + //OCR + // dd(phpinfo()); + try { + $fotoKTP = public_path('storage/foto-ktp/ktp.jpg'); + + $image = Image::make($fotoKTP); + + $image->greyscale(); // Convert to grayscale + $image->contrast(10); // Increase contrast, adjust the value as needed + + $preprocessedfotoKTP = public_path('storage/preprocessed/preprocessed_image.jpg'); + $image->save($preprocessedfotoKTP); + + $result = (new TesseractOCR($preprocessedfotoKTP))->run(); + + // (5) Normalize + + $lines = explode("\n", $result); + $nikOCR = ''; + $namaOCR = ''; + $nikInputan = '3471140209790001'; + $namaInputan = 'RIYANTO. SE'; + + foreach ($lines as $line) { + // Mencari NIK + if (strpos($line, $nikInputan) !== false) { + $nikOCR = preg_replace('/[^0-9]/', '', $line); + } + + // Mencari nama + if (strpos($line, $namaInputan) !== false) { + $namaOCR = trim(substr($line, strpos($line, ':') + 1)); + } + } + + //Selesai + + $persentase_kemiripan = (similar_text($nikInputan, $nikOCR, $percent) + similar_text($namaOCR, $namaOCR, $percent)) / 2; + // $status = 'Progress'; + + dd([$persentase_kemiripan, $lines]); + + // if (similar_text($nikInputan, $nikOCR, $percent) >= 70 && similar_text($namaOCR, $namaOCR, $percent) >= 70) { + // $status = 'Progress'; + // } else { + // $status = 'Progress'; + // } + } catch (\Exception $e) { + // $status = 'Progress'; + dd($e); + } + //OCR + } +} diff --git a/app/Http/Controllers/Profile/ProfileController.php b/app/Http/Controllers/Profile/ProfileController.php new file mode 100644 index 0000000..ca7dc51 --- /dev/null +++ b/app/Http/Controllers/Profile/ProfileController.php @@ -0,0 +1,105 @@ +user()->village->district->city->province->code)->get(); + $districts = District::where('city_code', auth()->user()->village->district->city->code)->get(); + $villages = Village::where('district_code', auth()->user()->village->district->code)->get(); + return view('profile.index', compact('provinces', 'cities', 'districts', 'villages')); + } + + public function updateProfile(Request $request) + { + $nama_depan = str_replace(' ', '_', $request->nama_depan); + $nama_belakang = str_replace(' ', '_', $request->nama_belakang); + $nohp = $request->nohp; + $kode_kelurahan = $request->kelurahan; + $alamat = $request->alamat; + $nama_bank = $request->nama_bank; + $no_rek = $request->no_rek; + $foto_profile = ''; + if ($request->hasFile('foto')) { + $file = $request->file('foto'); + $foto_profile = 'Foto_Profil_' . $nama_depan . '_' . $nama_belakang .'.'. $file->getClientOriginalExtension(); + $path = 'foto-profile/' . $foto_profile; + + Storage::disk('public')->put($path, file_get_contents($file)); + } + + try { + DB::beginTransaction(); + + User::where('id', Auth::user()->id)->update([ + 'nama_depan' => $nama_depan, + 'nama_belakang' => $nama_belakang, + 'nohp' => $nohp, + 'kode_kelurahan' => $kode_kelurahan, + 'alamat' => $alamat, + 'nama_bank' => $nama_bank, + 'no_rek' => $no_rek, + 'foto_profile' => $foto_profile, + ]); + + DB::commit(); + + return response()->json(['status' => true, 'message' => 'Data Profile berhasil diupdate']); + } catch (Throwable $e) { + DB::rollBack(); + + Log::error($e->getMessage()); + + return response()->json(['status' => false, 'message' => 'Terjadi Kesalahan pada sisi server']); + } + } + + public function changePassword(Request $request){ + $currentPassword = $request->currentPassword; + $newPassword = $request->newPassword; + $renewPassword = $request->renewPassword; + + if(!Hash::check($currentPassword, auth()->user()->password)){ + return response()->json(['status' => false, 'message' => 'Password sekarang tidak sama','password' => $currentPassword]); + } + + if($renewPassword != $newPassword){ + return response()->json(['status' => false, 'message' => 'Ketikan ulang password baru']); + } + + try{ + DB::beginTransaction(); + + User::where('id', auth()->user()->id)->update([ + 'password' => Hash::make($newPassword) + ]); + + DB::commit(); + + return response()->json(['status' => true, 'message' => 'Password Berhasil diubah']); + }catch(Throwable $e){ + DB::rollBack(); + + Log::error($e->getMessage()); + + return response()->json(['status' => false, 'message' => 'Terjadi Kesalahan pada sisi server']); + } + } +} diff --git a/app/Http/Controllers/RefundController.php b/app/Http/Controllers/RefundController.php deleted file mode 100644 index f28ed3c..0000000 --- a/app/Http/Controllers/RefundController.php +++ /dev/null @@ -1,67 +0,0 @@ - $refundData]); - } - - /** - * Show the form for creating a new resource. - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - */ - public function store(StoreRefundRequest $request) - { - // - } - - /** - * Display the specified resource. - */ - public function show(Refund $refund) - { - // - } - - /** - * Show the form for editing the specified resource. - */ - public function edit(Refund $refund) - { - // - } - - /** - * Update the specified resource in storage. - */ - public function update(UpdateRefundRequest $request, Refund $refund) - { - // - } - - /** - * Remove the specified resource from storage. - */ - public function destroy(Refund $refund) - { - // - } -} \ No newline at end of file diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/RefundDescriptionController.php similarity index 62% rename from app/Http/Controllers/UsersController.php rename to app/Http/Controllers/RefundDescriptionController.php index ed374ce..f7a69c5 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/RefundDescriptionController.php @@ -2,11 +2,10 @@ namespace App\Http\Controllers; -use App\Models\Users; -use App\Http\Requests\StoreUsersRequest; -use App\Http\Requests\UpdateUsersRequest; +use App\Models\RefundDescription; +use Illuminate\Http\Request; -class UsersController extends Controller +class RefundDescriptionController extends Controller { /** * Display a listing of the resource. @@ -27,7 +26,7 @@ class UsersController extends Controller /** * Store a newly created resource in storage. */ - public function store(StoreUsersRequest $request) + public function store(Request $request) { // } @@ -35,7 +34,7 @@ class UsersController extends Controller /** * Display the specified resource. */ - public function show(Users $users) + public function show(RefundDescription $refundDescription) { // } @@ -43,7 +42,7 @@ class UsersController extends Controller /** * Show the form for editing the specified resource. */ - public function edit(Users $users) + public function edit(RefundDescription $refundDescription) { // } @@ -51,7 +50,7 @@ class UsersController extends Controller /** * Update the specified resource in storage. */ - public function update(UpdateUsersRequest $request, Users $users) + public function update(Request $request, RefundDescription $refundDescription) { // } @@ -59,7 +58,7 @@ class UsersController extends Controller /** * Remove the specified resource from storage. */ - public function destroy(Users $users) + public function destroy(RefundDescription $refundDescription) { // } diff --git a/app/Http/Controllers/TransactionController.php b/app/Http/Controllers/TransactionController.php deleted file mode 100644 index 78f8f90..0000000 --- a/app/Http/Controllers/TransactionController.php +++ /dev/null @@ -1,66 +0,0 @@ -email)->get(); + return view('user.contact.index', ['contacts' => $contacts]); + } + + public function getContact() + { + $data = DB::table('contacts') + ->select('contacts.relasi_kontak', 'users.nama_depan', 'users.nama_belakang') + ->join('users', 'contacts.relasi_kontak', '=', 'users.email') + ->where('contacts.pemilik_kontak','=',Auth::user()->email) + ->paginate(10); + return response()->json($data); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $email_relasi = $request->input('email'); + if ($email_relasi == Auth::user()->email) { + return response()->json([ + 'status' => false, + 'message' => 'Kontak yang ingin didaftarkan tidak boleh sama', + ]); + } else { + $result = Contact::create([ + 'pemilik_kontak' => Auth::user()->email, + 'relasi_kontak' => $request->input('email'), + ]); + + if ($result) { + return response()->json([ + 'status' => true, + 'message' => 'Akun berhasil masuk ke kontak', + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => 'Akun gagal masuk ke kontak', + ]); + } + } + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + try { + $result = Contact::destroy($id); + if ($result) { + return response()->json([ + 'message' => 'Berhasil hapus data', + 'status' => true, + ]); + } else { + return response()->json([ + 'message' => 'Gagal hapus data karena ' . $result, + 'status' => false, + ]); + } + } catch (\Exception $e) { + return response()->json([ + 'message' => 'Gagal hapus data, karena ' . $e, + 'status' => false, + ]); + } + } + + public function cekEmail($email) + { + $result = User::where('email', $email)->first(); + if ($result->isNotEmpty() && $result[0]->role == 'User' && $result[0]->status != 'Rejected') { + if ($result[0]->status == 'Finished') { + return response()->json([ + 'status' => true, + 'message' => $result, + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => 'Akun dengen email ' . $email . ' tersedia dan belum diverifikasi', + ]); + } + } else { + return response()->json([ + 'status' => false, + 'message' => 'Akun dengen email ' . $email . ' tidak tersedia atau ditolak', + ]); + } + } +} diff --git a/app/Http/Controllers/User/UserDashboardController.php b/app/Http/Controllers/User/UserDashboardController.php new file mode 100644 index 0000000..c36c55d --- /dev/null +++ b/app/Http/Controllers/User/UserDashboardController.php @@ -0,0 +1,20 @@ +RefundUser::HistoryRefundUser(), + ]); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 494c050..7376373 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -64,5 +64,7 @@ class Kernel extends HttpKernel 'signed' => \App\Http\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'admin' => \App\Http\Middleware\Admin::class, + 'user' => \App\Http\Middleware\User::class, ]; } diff --git a/app/Http/Middleware/Admin.php b/app/Http/Middleware/Admin.php new file mode 100644 index 0000000..70d9ac8 --- /dev/null +++ b/app/Http/Middleware/Admin.php @@ -0,0 +1,24 @@ +role != 'Admin'){ + return redirect()->back(); + } + return $next($request); + } +} diff --git a/app/Http/Middleware/User.php b/app/Http/Middleware/User.php new file mode 100644 index 0000000..955456a --- /dev/null +++ b/app/Http/Middleware/User.php @@ -0,0 +1,24 @@ +role != 'User'){ + return redirect()->back(); + } + return $next($request); + } +} diff --git a/app/Mail/verificationMail.php b/app/Mail/verificationMail.php new file mode 100644 index 0000000..d546d59 --- /dev/null +++ b/app/Mail/verificationMail.php @@ -0,0 +1,59 @@ +verificationEmail = $verificationEmail; + } + + /** + * Get the message envelope. + */ + // public function envelope(): Envelope + // { + // return new Envelope( + // subject: 'Verification Mail', + // ); + // } + + /** + * Get the message content definition. + */ + // public function content(): Content + // { + // return new Content( + // view: 'view.name', + // ); + // } + + /** + * Get the attachments for the message. + * + * @return array + */ + // public function attachments(): array + // { + // return []; + // } + + public function build(){ + return $this->subject('Kode Verifikasi')->view('email.verification-email'); + } +} diff --git a/app/Models/Contact.php b/app/Models/Contact.php new file mode 100644 index 0000000..233a15f --- /dev/null +++ b/app/Models/Contact.php @@ -0,0 +1,37 @@ + + */ + protected $fillable = [ + 'pemilik_kontak', + 'relasi_kontak', + ]; + + protected $casts = [ + 'id' => 'string', + ]; + + + //Relasi + public function pemilikKontak(){ + return $this->belongsTo(User::class, 'pemilik_kontak', 'email'); + } + + public function relasiKontak(){ + return $this->belongsTo(User::class, 'relasi_kontak', 'email'); + } + + //Relasi +} diff --git a/app/Models/Refund.php b/app/Models/Refund.php index 1422261..b0056db 100644 --- a/app/Models/Refund.php +++ b/app/Models/Refund.php @@ -5,76 +5,30 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -// class Refund extends Model{ -// protected $table = 'refund'; -// use HasFactory; -// } -class Refund +class Refund extends Model { - private static $history_refund=[ - [ - "no"=>"1", - "orderId" => "INV-1234", - "customer" => "Okta", - "seller" => "dodo", - "total" => "Rp. 15000", - "date" => "July 19, 2023 ", - "status"=>"Process Refund" - ], - [ - "no"=>"2", - "orderId" => "INV-0000", - "customer" => "Selvi", - "seller" => "dedo", - "total" => "Rp. 11000", - "date" => "August 19, 2023 ", - "status"=>"Refund Success" - ], - [ - "no"=>"3", - "orderId" => "INV-2313", - "customer" => "Septa", - "seller" => "dido", - "total" => "Rp. 15000", - "date" => "July 29, 2023 ", - "status"=>"Process Refund" - ], - [ - "no"=>"4", - "orderId" => "INV-5664", - "customer" => "Padia", - "seller" => "dedo", - "total" => "Rp. 14000", - "date" => "July 18, 2023 ", - "status"=>"Refunds Refused" - ], - [ - "no"=>"5", - "orderId" => "INV-9090", - "customer" => "hantu", - "seller" => "dado", - "total" => "Rp. 45000", - "date" => "2023-08-14 ", - "status"=>"Refunds Refused" - ] - ]; + use HasFactory; - public static $detail_refund=[ - [ - "orderId" => "INV-9090", - "customer" => "hantu", - "seller" => "dado", - "total" => "Rp. 45000", - "date" => "2023-08-14 ", - "complaint" =>" Lorem ipsum dolor sit, amet consectetur adipisicing elit. Aliquam inventore, sit enim iure itaque fuga voluptates alias, eveniet quos ex reiciendis! Dolore mollitia ea inventore, excepturi hic fugiat id, magnam molestias sint ut enim repellendus, cum dolorum dolores sapiente adipisci tempora nihil omnis! Accusantium, non perspiciatis? Molestias modi debitis perferendis reprehenderit excepturi voluptates? Sit incidunt consequuntur iusto odit sapiente inventore nemo commodi, quam vero magnam temporibus ducimus praesentium assumenda blanditiis possimus perferendis totam placeat maiores. Quae ut id libero atque pariatur veritatis rerum culpa tempore consequatur quod corrupti corporis nobis quia repellendus iste quidem illum, voluptates aspernatur cumque officia. Tenetur.", - "image"=>"assets/images/dashboard/img_2.jpg" - ] - ]; - public static function HistoryRefund(){ - return self::$history_refund; + /** + * The attributes that are mass assignable. + * + * @var array + */ + protected $fillable = [ + 'transaction_id', + 'total', + 'due_date', + 'status', + ]; - } - public static function DetailRefund(){ - return self::$detail_refund; - } -} \ No newline at end of file + protected $casts = [ + 'id' => 'string', + ]; + + + //Relasi + public function transaction(){ + return $this->belongsTo(Transaction::class, 'transaction_id', 'id'); + } + //Relasi +} diff --git a/app/Models/RefundDescription.php b/app/Models/RefundDescription.php new file mode 100644 index 0000000..258393c --- /dev/null +++ b/app/Models/RefundDescription.php @@ -0,0 +1,28 @@ + + */ + protected $fillable = [ + 'refund_id', + 'filename', + 'type', + ]; + + //Relasi + public function refunds(){ + return $this->belongsTo(Refund::class, 'refund_id', 'id'); + } + //Relasi +} diff --git a/app/Models/RefundUser.php b/app/Models/RefundUser.php new file mode 100644 index 0000000..f517ccc --- /dev/null +++ b/app/Models/RefundUser.php @@ -0,0 +1,44 @@ + "INV-1234", + "Customer" => "npannisa", + "seller" => "rayhan", + "Total" => " Rp.200.000", + "dueDate"=>"29 juni 2023", + "status"=>"diterima", + "uploadBukti" => "5.jpg" + ], + [ + "orderId" => "INV-1234", + "Customer" => "hantu", + "seller" => "rayhan", + "Total" => " Rp.200.000", + "dueDate"=>"29 juni 2023", + "status"=>"ditolak", + "uploadBukti" => "5.jpg" + ], + [ + "orderId" => "INV-1234", + "Customer" => "pocong", + "seller" => "rayhan", + "Total" => " Rp.200.000", + "dueDate"=>"29 juni 2023", + "status"=>"diterima", + "uploadBukti" => "5.jpg" + ], + ]; + public static function HistoryRefundUser(){ + return self::$history_refundUser; + } +} diff --git a/app/Models/Refunds.php b/app/Models/Refunds.php new file mode 100644 index 0000000..55765a5 --- /dev/null +++ b/app/Models/Refunds.php @@ -0,0 +1,80 @@ +"1", + "orderId" => "INV-1234", + "customer" => "Okta", + "seller" => "dodo", + "total" => "Rp. 15000", + "date" => "July 19, 2023 ", + "status"=>"Process Refund" + ], + [ + "no"=>"2", + "orderId" => "INV-0000", + "customer" => "Selvi", + "seller" => "dedo", + "total" => "Rp. 11000", + "date" => "August 19, 2023 ", + "status"=>"Refund Success" + ], + [ + "no"=>"3", + "orderId" => "INV-2313", + "customer" => "Septa", + "seller" => "dido", + "total" => "Rp. 15000", + "date" => "July 29, 2023 ", + "status"=>"Process Refund" + ], + [ + "no"=>"4", + "orderId" => "INV-5664", + "customer" => "Padia", + "seller" => "dedo", + "total" => "Rp. 14000", + "date" => "July 18, 2023 ", + "status"=>"Refunds Refused" + ], + [ + "no"=>"5", + "orderId" => "INV-9090", + "customer" => "hantu", + "seller" => "dado", + "total" => "Rp. 45000", + "date" => "2023-08-14 ", + "status"=>"Refunds Refused" + ] + ]; + + public static $detail_refund=[ + [ + "orderId" => "INV-9090", + "customer" => "hantu", + "seller" => "dado", + "total" => "Rp. 45000", + "date" => "2023-08-14 ", + "complaint" =>" Lorem ipsum dolor sit, amet consectetur adipisicing elit. Aliquam inventore, sit enim iure itaque fuga voluptates alias, eveniet quos ex reiciendis! Dolore mollitia ea inventore, excepturi hic fugiat id, magnam molestias sint ut enim repellendus, cum dolorum dolores sapiente adipisci tempora nihil omnis! Accusantium, non perspiciatis? Molestias modi debitis perferendis reprehenderit excepturi voluptates? Sit incidunt consequuntur iusto odit sapiente inventore nemo commodi, quam vero magnam temporibus ducimus praesentium assumenda blanditiis possimus perferendis totam placeat maiores. Quae ut id libero atque pariatur veritatis rerum culpa tempore consequatur quod corrupti corporis nobis quia repellendus iste quidem illum, voluptates aspernatur cumque officia. Tenetur.", + "image"=>"assets/images/dashboard/img_2.jpg" + ] + ]; + public static function HistoryRefund(){ + return self::$history_refund; + + } + public static function DetailRefund(){ + return self::$detail_refund; + } +} diff --git a/app/Models/Setting.php b/app/Models/Setting.php index f4249ea..42f58a6 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -5,46 +5,23 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -class Setting +class Setting extends Model { - static $History_Setting=[ - [ - "no" => "1", - "month" => "January", - "year" =>"2021", - "persentase" =>"50%", - "status" =>"Active" - ], - [ - "no" => "2", - "month" => "February", - "year" =>"2022", - "persentase" =>"40%", - "status" =>"Non Active" - ], - [ - "no" => "3", - "month" => "March", - "year" =>"2023", - "persentase" =>"30%", - "status" =>"Non Active" - ], - [ - "no" => "4", - "month" => "April", - "year" =>"2021", - "persentase" =>"60%", - "status" =>"Non Active" - ], - [ - "no" => "5", - "month" => "May", - "year" =>"2023", - "persentase" =>"20%", - "status" =>"Non Active" - ] - ]; - public static function HistorySetting(){ - return self::$History_Setting; - } -} \ No newline at end of file + use HasFactory; + + /** + * The attributes that are mass assignable. + * + * @var array + */ + protected $fillable = [ + 'bulan', + 'tahun', + 'persentase', + ]; + + protected $casts = [ + 'id' => 'string', + ]; + +} diff --git a/app/Models/Settings.php b/app/Models/Settings.php new file mode 100644 index 0000000..6603b6f --- /dev/null +++ b/app/Models/Settings.php @@ -0,0 +1,50 @@ + "1", + "month" => "January", + "year" =>"2021", + "persentase" =>"50%", + "status" =>"Active" + ], + [ + "no" => "2", + "month" => "February", + "year" =>"2022", + "persentase" =>"40%", + "status" =>"Non Active" + ], + [ + "no" => "3", + "month" => "March", + "year" =>"2023", + "persentase" =>"30%", + "status" =>"Non Active" + ], + [ + "no" => "4", + "month" => "April", + "year" =>"2021", + "persentase" =>"60%", + "status" =>"Non Active" + ], + [ + "no" => "5", + "month" => "May", + "year" =>"2023", + "persentase" =>"20%", + "status" =>"Non Active" + ] + ]; + public static function HistorySetting(){ + return self::$History_Setting; + } +} diff --git a/app/Models/TransactionDescription.php b/app/Models/TransactionDescription.php new file mode 100644 index 0000000..66aebdd --- /dev/null +++ b/app/Models/TransactionDescription.php @@ -0,0 +1,36 @@ + + */ + protected $fillable = [ + 'order_id', + 'user', + 'judul', + 'status', + 'status_code', + 'background', + 'deskripsi' + ]; + + //Relasi + public function order(){ + return $this->belongsTo(Transaction::class, 'order_id', 'id'); + } + + public function user(){ + return $this->belongsTo(User::class, 'email', 'user'); + } + //Relasi +} diff --git a/app/Models/TransactionUser.php b/app/Models/TransactionUser.php new file mode 100644 index 0000000..82f86d8 --- /dev/null +++ b/app/Models/TransactionUser.php @@ -0,0 +1,57 @@ + "NPA-9876", + "orderId" => "INV-1234", + "Customer" => "Nurul Prima", + "seller" => "Jilhan", + "total" => "Rp.500.000", + "dueDate"=>"29 juni 2023", + "status"=>"OnProgress", + "action" => "" + ], + [ + "userId" => "NPA-9879", + "orderId" => "INV-1234", + "Customer" => "Nurul Prima Annisa", + "seller" => "Raihan", + "total" => "Rp.500.000", + "dueDate"=>"29 juni 2025", + "status"=>"Diterima", + "action" => "" + ], + + // [ + // "userId" => "NPA-9877", + // "orderId" => "INV-1235", + // "Customer" => "Nurul Annisa", + // "seller" => "Rayhan", + // "total" => "Rp.900.000", + // "dueDate"=>"29 Juli 2023", + // "status"=>"Pembeli", + // "action" => "" + // ], + + // [ + // "userId" => "NPA-9878", + // "orderId" => "INV-1236", + // "Customer" => "Nurul Prima Annisa", + // "seller" => "Rayhan", + // "total" => "Rp.900.000", + // "dueDate"=>"29 Juli 2023", + // "status"=>"Pembeli", + // "action" => "" + // ], + ]; + public static function HistoryTransaction(){ + return self::$history_transaction; + } +} diff --git a/app/Models/Transactions.php b/app/Models/Transactions.php new file mode 100644 index 0000000..b424369 --- /dev/null +++ b/app/Models/Transactions.php @@ -0,0 +1,90 @@ + '1', + 'orderId' => 'INV-1234', + 'customer' => 'Jilhan', + 'seller' => 'dodo', + 'total' => 'Rp. 15000', + 'date' => 'July 19, 2023 ', + 'status' => 'paid', + ], + [ + 'no' => '2', + 'orderId' => 'INV-0000', + 'customer' => 'hmmm', + 'seller' => 'dodo', + 'total' => 'Rp. 11000', + 'date' => 'August 19, 2023 ', + 'status' => 'pending', + ], + [ + 'no' => '3', + 'orderId' => 'INV-2313', + 'customer' => 'nurul', + 'seller' => 'dido', + 'total' => 'Rp. 15000', + 'date' => 'July 29, 2023 ', + 'status' => 'unpaid', + ], + [ + 'no' => '4', + 'orderId' => 'INV-5664', + 'customer' => 'raihan', + 'seller' => 'dedo', + 'total' => 'Rp. 14000', + 'date' => 'July 18, 2023 ', + 'status' => 'pending', + ], + [ + 'no' => '5', + 'orderId' => 'INV-9090', + 'customer' => 'testing', + 'seller' => 'dado', + 'total' => 'Rp. 45000', + 'date' => 'June 19, 2023 ', + 'status' => 'paid', + ], + ]; + + private static $detail_transaction = [ + [ + 'idTransaction' => 'INV-76899', + 'side' => 'SELL', + 'marketPair' => 'IDR', + 'email' => 'JilhanHaura07@gmail.com', + 'amountTransaction' => 'Rp. 900000', + 'feeTransaction' => '10%', + 'total' => '68,00989.00 IDR', + 'paymentDetail' => 'Bank', + 'bankName' => 'BNI', + 'accountNumber' => '123', + 'statusTransaction' => 'Success', + + // "tracking_number" => "09102919209", + // "orderId" => "INV-9090", + // "status"=>"Pending", + // "estimated" => "June 20, 2023", + // "tracking_detail1"=> "August 10: processed payment", + // "tracking_detail2"=> "August 12: payment in system", + // "tracking_detail3"=> "August 14: payment has been received by the seller", + ], + ]; + public static function allTransactions() + { + return self::$list_transaction; + } + + public static function allDetailTransactions() + { + return self::$detail_transaction; + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 4d7f70f..f6b5cc2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,6 +7,8 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; +use Tymon\JWTAuth\Contracts\JWTSubject; +use Illuminate\Database\Eloquent\Concerns\HasUuids; class User extends Authenticatable { @@ -18,9 +20,24 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', + 'id', + 'nama_depan', + 'nama_belakang', + 'tanggal_lahir', + 'nik', 'email', 'password', + 'role', + 'nohp', + 'alamat', + 'foto_ktp', + 'foto_wajah', + 'foto_profile', + 'persentase_kemiripan', + 'status', + 'gender', + 'kode_kelurahan', + 'remember_token', ]; /** @@ -41,5 +58,72 @@ class User extends Authenticatable protected $casts = [ 'email_verified_at' => 'datetime', 'password' => 'hashed', + 'id' => 'string', + 'status' => 'string', ]; + + //JWT + + /** + * Get the identifier that will be stored in the subject claim of the JWT. + * + * @return mixed + */ + public function getJWTIdentifier() + { + return $this->getKey(); + } + + /** + * Return a key value array, containing any custom claims to be added to the JWT. + * + * @return array + */ + public function getJWTCustomClaims() + { + return []; + } + + //JWT + + + //Relasi + public function pemilik_kontak(){ + return $this->hasMany(Contact::class, 'email', 'pemilik_kontak'); + } + + public function relasi_kontak(){ + return $this->hasMany(Contact::class, 'email', 'relasi_kontak'); + } + + public function pembeli(){ + return $this->hasMany(Transaction::class, 'email', 'pembeli'); + } + + public function penjual(){ + return $this->hasMany(Transaction::class, 'email', 'penjual'); + } + + public function village(){ + return $this->belongsTo('Laravolt\Indonesia\Models\Village', 'kode_kelurahan', 'code'); + } + //Relasi + + //function alamat + public function getVillageName(){ + return $this->village->name; + } + + public function getDistrictName(){ + return $this->village->district->name; + } + + public function getCityName(){ + return $this->village->district->city->name; + } + + public function getProvinceName(){ + return $this->village->district->city->province->name; + } + } diff --git a/app/Models/Users.php b/app/Models/Users.php deleted file mode 100644 index af24443..0000000 --- a/app/Models/Users.php +++ /dev/null @@ -1,55 +0,0 @@ - "1", - "userId" => "U1290", - "fullname" => "Tsalsabila Jilhan Haura", - "email" => "jilhanhaura07@gmail.com", - "gender" => "Female", - "date" => "August 23, 2023", - "status" => "Finished" - ], - [ - "no" => "2", - "userId" => "U4567", - "fullname" => "Boncel", - "email" => "boncel@gmail.com", - "gender" => "Male", - "date" => "August 22, 2023", - "status" => "Progress" - ], - - ]; - public static function listUsers(){ - return self::$list_users; - } - - private static $detail_user=[ - [ - "userId" => "91029138", - "nik" => "214141413414131414", - "name" => "Jilhan Haura", - "gender" => "Female", - "religion" => "Muslim", - "bloodType" => "AB", - "email" => "jilhanhaura07@gmail.com", - "phoneNumber" => "08909098102099", - "province" => "Sumatera Barat", - "city" => "Padang", - "district" => "Padang", - "village" => "Balai Baru", - "detail" => "Jl Simpang komplek polda balai baru" - ] - ]; - public static function detailUser(){ - return self::$detail_user; - } -} \ No newline at end of file diff --git a/app/Models/transaction.php b/app/Models/transaction.php index e0dab44..9f5ae37 100644 --- a/app/Models/transaction.php +++ b/app/Models/transaction.php @@ -5,58 +5,10 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -class transaction +class Transaction extends Model { - private static $list_transaction =[ - [ - "no"=>"1", - "orderId" => "INV-1234", - "customer" => "Jilhan", - "seller" => "dodo", - "total" => "Rp. 15000", - "date" => "July 19, 2023 ", - "status"=>"paid" - ], - [ - "no"=>"2", - "orderId" => "INV-0000", - "customer" => "hmmm", - "seller" => "dodo", - "total" => "Rp. 11000", - "date" => "August 19, 2023 ", - "status"=>"pending" - ], - [ - "no"=>"3", - "orderId" => "INV-2313", - "customer" => "nurul", - "seller" => "dido", - "total" => "Rp. 15000", - "date" => "July 29, 2023 ", - "status"=>"unpaid" - ], - [ - "no"=>"4", - "orderId" => "INV-5664", - "customer" => "raihan", - "seller" => "dedo", - "total" => "Rp. 14000", - "date" => "July 18, 2023 ", - "status"=>"pending" - ], - [ - "no"=>"5", - "orderId" => "INV-9090", - "customer" => "testing", - "seller" => "dado", - "total" => "Rp. 45000", - "date" => "June 19, 2023 ", - "status"=>"paid" - ] + use HasFactory; -<<<<<<< Updated upstream - ]; -======= /** * The attributes that are mass assignable. * @@ -80,40 +32,33 @@ class transaction 'batas_pengiriman_barang_awal', 'batas_pengiriman_barang_akhir', ]; ->>>>>>> Stashed changes - private static $detail_transaction=[ - [ - "idTransaction" => "INV-76899", - "side" =>"SELL", - "marketPair"=>"IDR", - "email" =>"JilhanHaura07@gmail.com", - "amountTransaction" => "Rp. 900000", - "feeTransaction" =>"10%", - "total" => "68,00989.00 IDR", - "paymentDetail" => "Bank", - "bankName" => "BNI", - "accountNumber" => "123", - "statusTransaction" => "Success" + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'batas_pembayaran' => 'datetime', + 'batas_pengiriman_barang' => 'datetime', + 'id' => 'string', + ]; + //Relasi + public function data_pembeli(){ + return $this->belongsTo(User::class, 'pembeli', 'email'); + } - // "tracking_number" => "09102919209", - // "orderId" => "INV-9090", - // "status"=>"Pending", - // "estimated" => "June 20, 2023", - // "tracking_detail1"=> "August 10: processed payment", - // "tracking_detail2"=> "August 12: payment in system", - // "tracking_detail3"=> "August 14: payment has been received by the seller", - ], + public function data_penjual(){ + return $this->belongsTo(User::class, 'penjual', 'email'); + } - ]; - public static function allTransactions() - { - return self::$list_transaction; - } + public function refunds(){ + return $this->hasMany(Refund::class, 'transaction_id', 'id'); + } - public static function allDetailTransactions() - { - return self::$detail_transaction; - } -} \ No newline at end of file + public function transactionDescription(){ + return $this->hasMany(TransactionDescription::class, 'transaction_id', 'id'); + } + //Relasi +} diff --git a/composer.json b/composer.json index e1fb449..baec890 100644 --- a/composer.json +++ b/composer.json @@ -2,14 +2,26 @@ "name": "laravel/laravel", "type": "project", "description": "The skeleton application for the Laravel framework.", - "keywords": ["laravel", "framework"], + "keywords": [ + "laravel", + "framework" + ], "license": "MIT", "require": { "php": "^8.1", "guzzlehttp/guzzle": "^7.2", + "intervention/image": "^2.7", "laravel/framework": "^10.10", "laravel/sanctum": "^3.2", - "laravel/tinker": "^2.8" + "laravel/tinker": "^2.8", + "laravolt/indonesia": "^0.34.0", + "midtrans/midtrans-php": "^2.5", + "nesbot/carbon": "^2.69", + "pusher/pusher-php-server": "^7.2", + "ramsey/uuid": "^4.7", + "stichoza/google-translate-php": "^5.1", + "thiagoalessio/tesseract_ocr": "^2.12", + "tymon/jwt-auth": "^2.0" }, "require-dev": { "fakerphp/faker": "^1.9.1", diff --git a/composer.lock b/composer.lock index 62b62d5..e91429d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "aa322c53454393ed775cfe4807d54a50", + "content-hash": "7c67133036db6b4f4df2682df682403c", "packages": [ { "name": "brick/math", @@ -367,16 +367,16 @@ }, { "name": "egulias/email-validator", - "version": "4.0.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { @@ -385,8 +385,8 @@ "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^4.30" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -422,7 +422,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -430,25 +430,25 @@ "type": "github" } ], - "time": "2023-01-14T14:17:03+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "fruitcake/php-cors", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" + "symfony/http-foundation": "^4.4|^5.4|^6|^7" }, "require-dev": { "phpstan/phpstan": "^1.4", @@ -458,7 +458,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -489,7 +489,7 @@ ], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" }, "funding": [ { @@ -501,7 +501,7 @@ "type": "github" } ], - "time": "2022-02-20T15:07:15+00:00" + "time": "2023-10-12T05:21:21+00:00" }, { "name": "graham-campbell/result-type", @@ -567,22 +567,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.7.0", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -673,7 +673,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.0" }, "funding": [ { @@ -689,7 +689,7 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2023-08-27T10:20:53+00:00" }, { "name": "guzzlehttp/promises", @@ -776,16 +776,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.6.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77" + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/8bd7c33a0734ae1c5d074360512beb716bef3f77", - "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", "shasum": "" }, "require": { @@ -872,7 +872,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.1" }, "funding": [ { @@ -888,20 +888,20 @@ "type": "tidelift" } ], - "time": "2023-08-03T15:06:02+00:00" + "time": "2023-08-27T10:13:57+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.1", + "version": "v1.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d", "shasum": "" }, "require": { @@ -909,15 +909,11 @@ "symfony/polyfill-php80": "^1.17" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", "phpunit/phpunit": "^8.5.19 || ^9.5.8", "uri-template/tests": "1.0.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { "psr-4": { "GuzzleHttp\\UriTemplate\\": "src" @@ -956,7 +952,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.2" }, "funding": [ { @@ -972,20 +968,104 @@ "type": "tidelift" } ], - "time": "2021-10-07T12:57:01+00:00" + "time": "2023-08-27T10:19:19+00:00" }, { - "name": "laravel/framework", - "version": "v10.19.0", + "name": "intervention/image", + "version": "2.7.2", "source": { "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "b8557e4a708a1bd2bc8229bd53feecfa2ac1c6fb" + "url": "https://github.com/Intervention/image.git", + "reference": "04be355f8d6734c826045d02a1079ad658322dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b8557e4a708a1bd2bc8229bd53feecfa2ac1c6fb", - "reference": "b8557e4a708a1bd2bc8229bd53feecfa2ac1c6fb", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1 || ^2.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } + } + }, + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-05-21T17:30:32+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.29.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "2d002849a16ad131110a50cbea4d64dbb78515a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/2d002849a16ad131110a50cbea4d64dbb78515a3", + "reference": "2d002849a16ad131110a50cbea4d64dbb78515a3", "shasum": "" }, "require": { @@ -1003,7 +1083,7 @@ "ext-tokenizer": "*", "fruitcake/php-cors": "^1.2", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1", + "laravel/prompts": "^0.1.9", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", @@ -1018,7 +1098,7 @@ "symfony/console": "^6.2", "symfony/error-handler": "^6.2", "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.2", + "symfony/http-foundation": "^6.3", "symfony/http-kernel": "^6.2", "symfony/mailer": "^6.2", "symfony/mime": "^6.2", @@ -1085,13 +1165,15 @@ "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.4", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.12", "pda/pheanstalk": "^4.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.0.7", "predis/predis": "^2.0.2", "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4" + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", @@ -1172,27 +1254,31 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-08-15T13:42:57+00:00" + "time": "2023-10-24T13:48:53+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.5", + "version": "v0.1.12", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "d880a909df144a4bf5760ebd09aba114f79d9adc" + "reference": "b35f249028c22016e45e48626e19e5d42fd827ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/d880a909df144a4bf5760ebd09aba114f79d9adc", - "reference": "d880a909df144a4bf5760ebd09aba114f79d9adc", + "url": "https://api.github.com/repos/laravel/prompts/zipball/b35f249028c22016e45e48626e19e5d42fd827ff", + "reference": "b35f249028c22016e45e48626e19e5d42fd827ff", "shasum": "" }, "require": { "ext-mbstring": "*", "illuminate/collections": "^10.0|^11.0", "php": "^8.1", - "symfony/console": "^6.2" + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" }, "require-dev": { "mockery/mockery": "^1.5", @@ -1204,6 +1290,11 @@ "ext-pcntl": "Required for the spinner to be animated." }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, "autoload": { "files": [ "src/helpers.php" @@ -1218,22 +1309,22 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.5" + "source": "https://github.com/laravel/prompts/tree/v0.1.12" }, - "time": "2023-08-15T14:29:44+00:00" + "time": "2023-10-18T14:18:57+00:00" }, { "name": "laravel/sanctum", - "version": "v3.2.5", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "8ebda85d59d3c414863a7f4d816ef8302faad876" + "reference": "338f633e6487e76b255470d3373fbc29228aa971" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/8ebda85d59d3c414863a7f4d816ef8302faad876", - "reference": "8ebda85d59d3c414863a7f4d816ef8302faad876", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/338f633e6487e76b255470d3373fbc29228aa971", + "reference": "338f633e6487e76b255470d3373fbc29228aa971", "shasum": "" }, "require": { @@ -1246,9 +1337,9 @@ }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^7.0|^8.0", + "orchestra/testbench": "^7.28.2|^8.8.3", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6" }, "type": "library", "extra": { @@ -1286,20 +1377,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2023-05-01T19:39:51+00:00" + "time": "2023-09-07T15:46:33+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.1", + "version": "v1.3.2", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" + "reference": "076fe2cf128bd54b4341cdc6d49b95b34e101e4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/076fe2cf128bd54b4341cdc6d49b95b34e101e4c", + "reference": "076fe2cf128bd54b4341cdc6d49b95b34e101e4c", "shasum": "" }, "require": { @@ -1346,20 +1437,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-07-14T13:56:28+00:00" + "time": "2023-10-17T13:38:16+00:00" }, { "name": "laravel/tinker", - "version": "v2.8.1", + "version": "v2.8.2", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10" + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", - "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", + "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", "shasum": "" }, "require": { @@ -1372,6 +1463,7 @@ }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { @@ -1412,22 +1504,244 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.8.1" + "source": "https://github.com/laravel/tinker/tree/v2.8.2" }, - "time": "2023-02-15T16:40:09+00:00" + "time": "2023-08-15T14:27:00+00:00" }, { - "name": "league/commonmark", - "version": "2.4.0", + "name": "laravolt/indonesia", + "version": "v0.34", "source": { "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048" + "url": "https://github.com/laravolt/indonesia.git", + "reference": "dfb584207f277e38c7706412d7414c8753dc78d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d44a24690f16b8c1808bf13b1bd54ae4c63ea048", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048", + "url": "https://api.github.com/repos/laravolt/indonesia/zipball/dfb584207f277e38c7706412d7414c8753dc78d5", + "reference": "dfb584207f277e38c7706412d7414c8753dc78d5", + "shasum": "" + }, + "require": { + "illuminate/support": "^8.0|^9.0|^10.0", + "php": "^7.3|^8.0" + }, + "require-dev": { + "orchestra/testbench": "^6.0|^7.0|^8.0", + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^9.0" + }, + "suggest": { + "laravolt/suitable": "Required if you want to access editor panel", + "spatie/geocoder": "Synchronize latitude longitude data directly using Google's Geocoding Service" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Laravolt\\Indonesia\\ServiceProvider" + ], + "aliases": { + "Indonesia": "Laravolt\\Indonesia\\Facade" + } + } + }, + "autoload": { + "psr-4": { + "Laravolt\\Indonesia\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bayu Hendra Winata", + "email": "bayu.hendra@javan.co.id" + }, + { + "name": "Akbar Adhatama", + "email": "am.adhatama@gmail.com" + }, + { + "name": "Deri Ramdani", + "email": "deri.ramdani1@gmail.com" + } + ], + "description": "Package Laravel yang berisi data Provinsi, Kabupaten/Kota, Kecamatan, dan Keluarahan/Desa di seluruh Indonesia.", + "keywords": [ + "desa", + "indonesia", + "kabupaten", + "kecamatan", + "kelurahan", + "kota", + "laravel", + "laravolt", + "provinsi" + ], + "support": { + "issues": "https://github.com/laravolt/indonesia/issues", + "source": "https://github.com/laravolt/indonesia/tree/v0.34" + }, + "time": "2023-03-05T15:16:54+00:00" + }, + { + "name": "lcobucci/clock", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/clock.git", + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/c7aadcd6fd97ed9e199114269c0be3f335e38876", + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0", + "stella-maris/clock": "^0.1.7" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "infection/infection": "^0.26", + "lcobucci/coding-standard": "^9.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.27" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com" + } + ], + "description": "Yet another clock abstraction", + "support": { + "issues": "https://github.com/lcobucci/clock/issues", + "source": "https://github.com/lcobucci/clock/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2022-12-19T14:38:11+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "55564265fddf810504110bd68ca311932324b0e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/55564265fddf810504110bd68ca311932324b0e9", + "reference": "55564265fddf810504110bd68ca311932324b0e9", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-openssl": "*", + "lcobucci/clock": "^2.0", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "infection/infection": "^0.20", + "lcobucci/coding-standard": "^6.0", + "mikey179/vfsstream": "^1.6", + "phpbench/phpbench": "^0.17", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/php-invoker": "^3.1", + "phpunit/phpunit": "^9.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "support": { + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2021-09-28T19:18:28+00:00" + }, + { + "name": "league/commonmark", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", "shasum": "" }, "require": { @@ -1520,7 +1834,7 @@ "type": "tidelift" } ], - "time": "2023-03-24T15:16:10+00:00" + "time": "2023-08-30T16:55:00+00:00" }, { "name": "league/config", @@ -1606,16 +1920,16 @@ }, { "name": "league/flysystem", - "version": "3.15.1", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed" + "reference": "015633a05aee22490495159237a5944091d8281e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/015633a05aee22490495159237a5944091d8281e", + "reference": "015633a05aee22490495159237a5944091d8281e", "shasum": "" }, "require": { @@ -1624,6 +1938,8 @@ "php": "^8.0.2" }, "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", "aws/aws-sdk-php": "3.209.31 || 3.210.0", "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1", @@ -1631,8 +1947,8 @@ "symfony/http-client": "<5.2" }, "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.1", + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", "aws/aws-sdk-php": "^3.220.0", "composer/semver": "^3.0", "ext-fileinfo": "*", @@ -1642,8 +1958,8 @@ "google/cloud-storage": "^1.23", "microsoft/azure-storage-blob": "^1.1", "phpseclib/phpseclib": "^3.0.14", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", "sabre/dav": "^4.3.1" }, "type": "library", @@ -1678,7 +1994,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.15.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.18.0" }, "funding": [ { @@ -1690,20 +2006,20 @@ "type": "github" } ], - "time": "2023-05-04T09:04:26+00:00" + "time": "2023-10-20T17:59:40+00:00" }, { "name": "league/flysystem-local", - "version": "3.15.0", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3" + "reference": "e7381ef7643f658b87efb7dbe98fe538fb1bbf32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/543f64c397fefdf9cfeac443ffb6beff602796b3", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e7381ef7643f658b87efb7dbe98fe538fb1bbf32", + "reference": "e7381ef7643f658b87efb7dbe98fe538fb1bbf32", "shasum": "" }, "require": { @@ -1738,7 +2054,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.15.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.18.0" }, "funding": [ { @@ -1750,20 +2066,20 @@ "type": "github" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2023-10-19T20:07:13+00:00" }, { "name": "league/mime-type-detection", - "version": "1.13.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", "shasum": "" }, "require": { @@ -1794,7 +2110,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" }, "funding": [ { @@ -1806,20 +2122,75 @@ "type": "tidelift" } ], - "time": "2023-08-05T12:09:49+00:00" + "time": "2023-10-17T14:13:20+00:00" }, { - "name": "monolog/monolog", - "version": "3.4.0", + "name": "midtrans/midtrans-php", + "version": "2.5.2", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d" + "url": "https://github.com/Midtrans/midtrans-php.git", + "reference": "a1ad0c824449ca8c68c4cf11b3417ad518311d2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d", + "url": "https://api.github.com/repos/Midtrans/midtrans-php/zipball/a1ad0c824449ca8c68c4cf11b3417ad518311d2b", + "reference": "a1ad0c824449ca8c68c4cf11b3417ad518311d2b", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": ">=5.4" + }, + "require-dev": { + "phpunit/phpunit": "5.7.*", + "psy/psysh": "0.4.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Midtrans\\": "Midtrans/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andri Setiawan", + "email": "andri.setiawan@veritrans.co.id" + }, + { + "name": "Alvin Litani", + "email": "alvin.litani@veritrans.co.id" + }, + { + "name": "Ismail Faruqi", + "email": "ismail.faruqi@veritrans.co.id" + } + ], + "description": "PHP Wrapper for Midtrans Payment API.", + "homepage": "https://midtrans.com", + "support": { + "issues": "https://github.com/Midtrans/midtrans-php/issues", + "source": "https://github.com/Midtrans/midtrans-php/tree/2.5.2" + }, + "time": "2021-08-23T08:52:05+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", "shasum": "" }, "require": { @@ -1895,7 +2266,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.4.0" + "source": "https://github.com/Seldaek/monolog/tree/3.5.0" }, "funding": [ { @@ -1907,29 +2278,33 @@ "type": "tidelift" } ], - "time": "2023-06-21T08:46:11+00:00" + "time": "2023-10-27T15:32:31+00:00" }, { "name": "nesbot/carbon", - "version": "2.68.1", + "version": "2.71.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da" + "reference": "98276233188583f2ff845a0f992a235472d9466a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4f991ed2a403c85efbc4f23eb4030063fdbe01da", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a", + "reference": "98276233188583f2ff845a0f992a235472d9466a", "shasum": "" }, "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { "doctrine/dbal": "^2.0 || ^3.1.4", "doctrine/orm": "^2.7", @@ -2009,20 +2384,20 @@ "type": "tidelift" } ], - "time": "2023-06-20T18:29:04+00:00" + "time": "2023-09-25T11:31:05+00:00" }, { "name": "nette/schema", - "version": "v1.2.4", + "version": "v1.2.5", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab" + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/c9ff517a53903b3d4e29ec547fb20feecb05b8ab", - "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab", + "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", "shasum": "" }, "require": { @@ -2069,22 +2444,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.4" + "source": "https://github.com/nette/schema/tree/v1.2.5" }, - "time": "2023-08-05T18:56:25+00:00" + "time": "2023-10-05T20:37:59+00:00" }, { "name": "nette/utils", - "version": "v4.0.1", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e" + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/9124157137da01b1f5a5a22d6486cb975f26db7e", - "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e", + "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", "shasum": "" }, "require": { @@ -2106,8 +2481,7 @@ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, "type": "library", "extra": { @@ -2156,9 +2530,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.1" + "source": "https://github.com/nette/utils/tree/v4.0.3" }, - "time": "2023-07-30T15:42:21+00:00" + "time": "2023-10-29T21:02:13+00:00" }, { "name": "nikic/php-parser", @@ -2302,6 +2676,142 @@ ], "time": "2023-02-08T01:06:31+00:00" }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, + { + "name": "paragonie/sodium_compat", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "shasum": "" + }, + "require": { + "paragonie/random_compat": ">=1", + "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9" + }, + "suggest": { + "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", + "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + }, + "type": "library", + "autoload": { + "files": [ + "autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" + ], + "support": { + "issues": "https://github.com/paragonie/sodium_compat/issues", + "source": "https://github.com/paragonie/sodium_compat/tree/v1.20.0" + }, + "time": "2023-04-30T00:54:53+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.1", @@ -2377,6 +2887,54 @@ ], "time": "2023-02-25T19:38:58+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "2.0.2", @@ -2482,16 +3040,16 @@ }, { "name": "psr/http-client", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { @@ -2528,9 +3086,9 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "source": "https://github.com/php-fig/http-client" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -2743,16 +3301,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.20", + "version": "v0.11.22", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b" + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0fa27040553d1d280a67a4393194df5228afea5b", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", "shasum": "" }, "require": { @@ -2781,7 +3339,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.11.x-dev" + "dev-0.11": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false } }, "autoload": { @@ -2813,9 +3375,70 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.20" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" }, - "time": "2023-07-31T14:32:22+00:00" + "time": "2023-10-14T21:56:36+00:00" + }, + { + "name": "pusher/pusher-php-server", + "version": "7.2.3", + "source": { + "type": "git", + "url": "https://github.com/pusher/pusher-http-php.git", + "reference": "416e68dd5f640175ad5982131c42a7a666d1d8e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/416e68dd5f640175ad5982131c42a7a666d1d8e9", + "reference": "416e68dd5f640175ad5982131c42a7a666d1d8e9", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "guzzlehttp/guzzle": "^7.2", + "paragonie/sodium_compat": "^1.6", + "php": "^7.3|^8.0", + "psr/log": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "overtrue/phplint": "^2.3", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Pusher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Library for interacting with the Pusher REST API", + "keywords": [ + "events", + "messaging", + "php-pusher-server", + "publish", + "push", + "pusher", + "real time", + "real-time", + "realtime", + "rest", + "trigger" + ], + "support": { + "issues": "https://github.com/pusher/pusher-http-php/issues", + "source": "https://github.com/pusher/pusher-http-php/tree/7.2.3" + }, + "time": "2023-05-17T16:00:06+00:00" }, { "name": "ralouphie/getallheaders", @@ -3043,17 +3666,144 @@ "time": "2023-04-15T23:01:58+00:00" }, { - "name": "symfony/console", - "version": "v6.3.2", + "name": "stella-maris/clock", + "version": "0.1.7", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" + "url": "https://github.com/stella-maris-solutions/clock.git", + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", + "url": "https://api.github.com/repos/stella-maris-solutions/clock/zipball/fa23ce16019289a18bb3446fdecd45befcdd94f8", + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "psr/clock": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "StellaMaris\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Heigl", + "role": "Maintainer" + } + ], + "description": "A pre-release of the proposed PSR-20 Clock-Interface", + "homepage": "https://gitlab.com/stella-maris/clock", + "keywords": [ + "clock", + "datetime", + "point in time", + "psr20" + ], + "support": { + "source": "https://github.com/stella-maris-solutions/clock/tree/0.1.7" + }, + "time": "2022-11-25T16:15:06+00:00" + }, + { + "name": "stichoza/google-translate-php", + "version": "v5.1.2", + "source": { + "type": "git", + "url": "https://github.com/Stichoza/google-translate-php.git", + "reference": "e43089e0c6fcc366027e8bf593060bb4e9c2c839" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Stichoza/google-translate-php/zipball/e43089e0c6fcc366027e8bf593060bb4e9c2c839", + "reference": "e43089e0c6fcc366027e8bf593060bb4e9c2c839", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/guzzle": "^7.0", + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Stichoza\\GoogleTranslate\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Levan Velijanashvili", + "email": "me@stichoza.com" + } + ], + "description": "Free Google Translate API PHP Package", + "homepage": "https://github.com/Stichoza/google-translate-php", + "keywords": [ + "google", + "php", + "translate", + "translating", + "translator" + ], + "support": { + "issues": "https://github.com/Stichoza/google-translate-php/issues", + "source": "https://github.com/Stichoza/google-translate-php/tree/v5.1.2" + }, + "funding": [ + { + "url": "https://btc.com/bc1qc25j4x7yahghm8nnn6lypnw59nptylsw32nkfl", + "type": "custom" + }, + { + "url": "https://www.paypal.me/stichoza", + "type": "custom" + }, + { + "url": "https://ko-fi.com/stichoza", + "type": "ko_fi" + }, + { + "url": "https://liberapay.com/stichoza", + "type": "liberapay" + }, + { + "url": "https://opencollective.com/stichoza", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/stichoza", + "type": "patreon" + } + ], + "time": "2023-08-04T01:11:03+00:00" + }, + { + "name": "symfony/console", + "version": "v6.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", "shasum": "" }, "require": { @@ -3114,7 +3864,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.2" + "source": "https://github.com/symfony/console/tree/v6.3.4" }, "funding": [ { @@ -3130,7 +3880,7 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:17:28+00:00" + "time": "2023-08-16T10:10:12+00:00" }, { "name": "symfony/css-selector", @@ -3266,16 +4016,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.2", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" + "reference": "1f69476b64fb47105c06beef757766c376b548c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", + "reference": "1f69476b64fb47105c06beef757766c376b548c4", "shasum": "" }, "require": { @@ -3320,7 +4070,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.2" + "source": "https://github.com/symfony/error-handler/tree/v6.3.5" }, "funding": [ { @@ -3336,7 +4086,7 @@ "type": "tidelift" } ], - "time": "2023-07-16T17:05:46+00:00" + "time": "2023-09-12T06:57:20+00:00" }, { "name": "symfony/event-dispatcher", @@ -3496,16 +4246,16 @@ }, { "name": "symfony/finder", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", "shasum": "" }, "require": { @@ -3540,7 +4290,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.3" + "source": "https://github.com/symfony/finder/tree/v6.3.5" }, "funding": [ { @@ -3556,20 +4306,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:31:44+00:00" + "time": "2023-09-26T12:56:25+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.2", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3" + "reference": "59d1837d5d992d16c2628cd0d6b76acf8d69b33e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", - "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/59d1837d5d992d16c2628cd0d6b76acf8d69b33e", + "reference": "59d1837d5d992d16c2628cd0d6b76acf8d69b33e", "shasum": "" }, "require": { @@ -3579,12 +4329,12 @@ "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.2" + "symfony/cache": "<6.3" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^5.4|^6.0", + "symfony/cache": "^6.3", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", @@ -3617,7 +4367,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.2" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.7" }, "funding": [ { @@ -3633,20 +4383,20 @@ "type": "tidelift" } ], - "time": "2023-07-23T21:58:39+00:00" + "time": "2023-10-28T23:55:27+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.3", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee" + "reference": "6d4098095f93279d9536a0e9124439560cc764d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d3b567f0addf695e10b0c6d57564a9bea2e058ee", - "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6d4098095f93279d9536a0e9124439560cc764d0", + "reference": "6d4098095f93279d9536a0e9124439560cc764d0", "shasum": "" }, "require": { @@ -3655,7 +4405,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.3", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^6.2.7", + "symfony/http-foundation": "^6.3.4", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -3663,7 +4413,7 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.3", + "symfony/dependency-injection": "<6.3.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", @@ -3687,7 +4437,7 @@ "symfony/config": "^6.1", "symfony/console": "^5.4|^6.0", "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.3", + "symfony/dependency-injection": "^6.3.4", "symfony/dom-crawler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", @@ -3730,7 +4480,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.3" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.7" }, "funding": [ { @@ -3746,20 +4496,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T10:33:00+00:00" + "time": "2023-10-29T14:31:45+00:00" }, { "name": "symfony/mailer", - "version": "v6.3.0", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d89611a7830d51b5e118bca38e390dea92f9ea06", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06", "shasum": "" }, "require": { @@ -3810,7 +4560,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.3.0" + "source": "https://github.com/symfony/mailer/tree/v6.3.5" }, "funding": [ { @@ -3826,20 +4576,20 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2023-09-06T09:47:15+00:00" }, { "name": "symfony/mime", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", + "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", "shasum": "" }, "require": { @@ -3894,7 +4644,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.3" + "source": "https://github.com/symfony/mime/tree/v6.3.5" }, "funding": [ { @@ -3910,20 +4660,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-09-29T06:59:36+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -3938,7 +4688,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3976,7 +4726,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -3992,20 +4742,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -4017,7 +4767,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4057,7 +4807,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -4073,20 +4823,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { @@ -4100,7 +4850,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4144,7 +4894,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -4160,20 +4910,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -4185,7 +4935,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4228,7 +4978,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -4244,20 +4994,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -4272,7 +5022,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4311,7 +5061,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -4327,20 +5077,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, "require": { @@ -4349,7 +5099,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4387,7 +5137,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" }, "funding": [ { @@ -4403,20 +5153,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -4425,7 +5175,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4470,7 +5220,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -4486,20 +5236,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57" + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { @@ -4509,7 +5259,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4522,7 +5272,10 @@ ], "psr-4": { "Symfony\\Polyfill\\Php83\\": "" - } + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4547,7 +5300,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" }, "funding": [ { @@ -4563,20 +5316,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-08-16T06:22:46+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166" + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", "shasum": "" }, "require": { @@ -4591,7 +5344,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4629,7 +5382,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" }, "funding": [ { @@ -4645,20 +5398,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/process", - "version": "v6.3.2", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d" + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", - "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", + "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", "shasum": "" }, "require": { @@ -4690,7 +5443,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.2" + "source": "https://github.com/symfony/process/tree/v6.3.4" }, "funding": [ { @@ -4706,20 +5459,20 @@ "type": "tidelift" } ], - "time": "2023-07-12T16:00:22+00:00" + "time": "2023-08-07T10:39:22+00:00" }, { "name": "symfony/routing", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", + "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31", "shasum": "" }, "require": { @@ -4773,7 +5526,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.3" + "source": "https://github.com/symfony/routing/tree/v6.3.5" }, "funding": [ { @@ -4789,7 +5542,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-09-20T16:05:51+00:00" }, { "name": "symfony/service-contracts", @@ -4875,16 +5628,16 @@ }, { "name": "symfony/string", - "version": "v6.3.2", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "53d1a83225002635bca3482fcbf963001313fb68" + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", - "reference": "53d1a83225002635bca3482fcbf963001313fb68", + "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", "shasum": "" }, "require": { @@ -4941,7 +5694,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.2" + "source": "https://github.com/symfony/string/tree/v6.3.5" }, "funding": [ { @@ -4957,20 +5710,20 @@ "type": "tidelift" } ], - "time": "2023-07-05T08:41:27+00:00" + "time": "2023-09-18T10:38:32+00:00" }, { "name": "symfony/translation", - "version": "v6.3.3", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "url": "https://api.github.com/repos/symfony/translation/zipball/30212e7c87dcb79c83f6362b00bde0e0b1213499", + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499", "shasum": "" }, "require": { @@ -5036,7 +5789,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.3" + "source": "https://github.com/symfony/translation/tree/v6.3.7" }, "funding": [ { @@ -5052,7 +5805,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { "name": "symfony/translation-contracts", @@ -5208,16 +5961,16 @@ }, { "name": "symfony/var-dumper", - "version": "v6.3.3", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "77fb4f2927f6991a9843633925d111147449ee7a" + "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/77fb4f2927f6991a9843633925d111147449ee7a", - "reference": "77fb4f2927f6991a9843633925d111147449ee7a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/999ede244507c32b8e43aebaa10e9fce20de7c97", + "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97", "shasum": "" }, "require": { @@ -5272,7 +6025,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.6" }, "funding": [ { @@ -5288,7 +6041,56 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-10-12T18:45:56+00:00" + }, + { + "name": "thiagoalessio/tesseract_ocr", + "version": "2.13.0", + "source": { + "type": "git", + "url": "https://github.com/thiagoalessio/tesseract-ocr-for-php.git", + "reference": "232a8cb9d571992f9bd1e263f2f6909cf6c173a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thiagoalessio/tesseract-ocr-for-php/zipball/232a8cb9d571992f9bd1e263f2f6909cf6c173a1", + "reference": "232a8cb9d571992f9bd1e263f2f6909cf6c173a1", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/php-code-coverage": "^2.2.4 || ^9.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "thiagoalessio\\TesseractOCR\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "thiagoalessio", + "email": "thiagoalessio@me.com" + } + ], + "description": "A wrapper to work with Tesseract OCR inside PHP.", + "keywords": [ + "OCR", + "Tesseract", + "text recognition" + ], + "support": { + "irc": "irc://irc.freenode.net/tesseract-ocr-for-php", + "issues": "https://github.com/thiagoalessio/tesseract-ocr-for-php/issues", + "source": "https://github.com/thiagoalessio/tesseract-ocr-for-php" + }, + "time": "2023-10-05T21:14:48+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -5343,6 +6145,90 @@ }, "time": "2023-01-03T09:29:04+00:00" }, + { + "name": "tymon/jwt-auth", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/tymondesigns/jwt-auth.git", + "reference": "b0868a5b00801889a9e0c81a737963d8004e708c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/b0868a5b00801889a9e0c81a737963d8004e708c", + "reference": "b0868a5b00801889a9e0c81a737963d8004e708c", + "shasum": "" + }, + "require": { + "illuminate/auth": "^9.0|^10.0", + "illuminate/contracts": "^9.0|^10.0", + "illuminate/http": "^9.0|^10.0", + "illuminate/support": "^9.0|^10.0", + "lcobucci/jwt": "^4.0", + "nesbot/carbon": "^2.0", + "php": "^8.0" + }, + "require-dev": { + "illuminate/console": "^9.0|^10.0", + "illuminate/database": "^9.0|^10.0", + "illuminate/routing": "^9.0|^10.0", + "mockery/mockery": ">=0.9.9", + "phpunit/phpunit": "^9.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "1.0-dev", + "dev-2.x": "2.0-dev" + }, + "laravel": { + "aliases": { + "JWTAuth": "Tymon\\JWTAuth\\Facades\\JWTAuth", + "JWTFactory": "Tymon\\JWTAuth\\Facades\\JWTFactory" + }, + "providers": [ + "Tymon\\JWTAuth\\Providers\\LaravelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Tymon\\JWTAuth\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sean Tymon", + "email": "tymon148@gmail.com", + "homepage": "https://tymon.xyz", + "role": "Developer" + } + ], + "description": "JSON Web Token Authentication for Laravel and Lumen", + "homepage": "https://github.com/tymondesigns/jwt-auth", + "keywords": [ + "Authentication", + "JSON Web Token", + "auth", + "jwt", + "laravel" + ], + "support": { + "issues": "https://github.com/tymondesigns/jwt-auth/issues", + "source": "https://github.com/tymondesigns/jwt-auth" + }, + "funding": [ + { + "url": "https://www.patreon.com/seantymon", + "type": "patreon" + } + ], + "time": "2023-02-16T16:29:41+00:00" + }, { "name": "vlucas/phpdotenv", "version": "v5.5.0", @@ -5753,16 +6639,16 @@ }, { "name": "laravel/pint", - "version": "v1.11.0", + "version": "v1.13.5", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "88e835bf922b94017778bde89ef8f215e1ea40db" + "reference": "df105cf8ce7a8f0b8a9425ff45cd281a5448e423" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/88e835bf922b94017778bde89ef8f215e1ea40db", - "reference": "88e835bf922b94017778bde89ef8f215e1ea40db", + "url": "https://api.github.com/repos/laravel/pint/zipball/df105cf8ce7a8f0b8a9425ff45cd281a5448e423", + "reference": "df105cf8ce7a8f0b8a9425ff45cd281a5448e423", "shasum": "" }, "require": { @@ -5773,13 +6659,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.21.1", - "illuminate/view": "^10.5.1", - "laravel-zero/framework": "^10.1.1", - "mockery/mockery": "^1.5.1", - "nunomaduro/larastan": "^2.5.1", + "friendsofphp/php-cs-fixer": "^3.34.1", + "illuminate/view": "^10.26.2", + "laravel-zero/framework": "^10.1.2", + "mockery/mockery": "^1.6.6", + "nunomaduro/larastan": "^2.6.4", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.4.0" + "pestphp/pest": "^2.20.0" }, "bin": [ "builds/pint" @@ -5815,31 +6701,31 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-08-15T15:30:00+00:00" + "time": "2023-10-26T09:26:10+00:00" }, { "name": "laravel/sail", - "version": "v1.23.3", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "e5536ac1df10eacd72a6569dc1b0db49b9ddbb85" + "reference": "c60fe037004e272efd0d81f416ed2bfc623d70b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/e5536ac1df10eacd72a6569dc1b0db49b9ddbb85", - "reference": "e5536ac1df10eacd72a6569dc1b0db49b9ddbb85", + "url": "https://api.github.com/repos/laravel/sail/zipball/c60fe037004e272efd0d81f416ed2bfc623d70b4", + "reference": "c60fe037004e272efd0d81f416ed2bfc623d70b4", "shasum": "" }, "require": { - "illuminate/console": "^8.0|^9.0|^10.0", - "illuminate/contracts": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", + "illuminate/console": "^9.0|^10.0|^11.0", + "illuminate/contracts": "^9.0|^10.0|^11.0", + "illuminate/support": "^9.0|^10.0|^11.0", "php": "^8.0", - "symfony/yaml": "^6.0" + "symfony/yaml": "^6.0|^7.0" }, "require-dev": { - "orchestra/testbench": "^6.0|^7.0|^8.0", + "orchestra/testbench": "^7.0|^8.0|^9.0", "phpstan/phpstan": "^1.10" }, "bin": [ @@ -5880,7 +6766,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-08-14T14:22:21+00:00" + "time": "2023-10-18T13:57:15+00:00" }, { "name": "mockery/mockery", @@ -6028,37 +6914,40 @@ }, { "name": "nunomaduro/collision", - "version": "v7.8.1", + "version": "v7.10.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "61553ad3260845d7e3e49121b7074619233d361b" + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/61553ad3260845d7e3e49121b7074619233d361b", - "reference": "61553ad3260845d7e3e49121b7074619233d361b", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", "shasum": "" }, "require": { "filp/whoops": "^2.15.3", "nunomaduro/termwind": "^1.15.1", "php": "^8.1.0", - "symfony/console": "^6.3.2" + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" }, "require-dev": { - "brianium/paratest": "^7.2.4", - "laravel/framework": "^10.17.1", - "laravel/pint": "^1.10.5", - "laravel/sail": "^1.23.1", - "laravel/sanctum": "^3.2.5", - "laravel/tinker": "^2.8.1", + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", "nunomaduro/larastan": "^2.6.4", - "orchestra/testbench-core": "^8.5.9", - "pestphp/pest": "^2.12.1", - "phpunit/phpunit": "^10.3.1", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", "sebastian/environment": "^6.0.1", - "spatie/laravel-ignition": "^2.2.0" + "spatie/laravel-ignition": "^2.3.1" }, "type": "library", "extra": { @@ -6117,7 +7006,7 @@ "type": "patreon" } ], - "time": "2023-08-07T08:03:21+00:00" + "time": "2023-10-11T15:45:01+00:00" }, { "name": "phar-io/manifest", @@ -6232,16 +7121,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.3", + "version": "10.1.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d" + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be1fe461fdc917de2a29a452ccf2657d325b443d", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/355324ca4980b8916c18b9db29f3ef484078f26e", + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e", "shasum": "" }, "require": { @@ -6298,7 +7187,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.3" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.7" }, "funding": [ { @@ -6306,20 +7195,20 @@ "type": "github" } ], - "time": "2023-07-26T13:45:28+00:00" + "time": "2023-10-04T15:34:17+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.0.2", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -6359,7 +7248,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -6367,7 +7256,7 @@ "type": "github" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", @@ -6434,16 +7323,16 @@ }, { "name": "phpunit/php-text-template", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -6481,7 +7370,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -6489,7 +7379,7 @@ "type": "github" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", @@ -6552,16 +7442,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.3.2", + "version": "10.4.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1" + "reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0dafb1175c366dd274eaa9a625e914451506bcd1", - "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/cacd8b9dd224efa8eb28beb69004126c7ca1a1a1", + "reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1", "shasum": "" }, "require": { @@ -6575,7 +7465,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", + "phpunit/php-code-coverage": "^10.1.5", "phpunit/php-file-iterator": "^4.0", "phpunit/php-invoker": "^4.0", "phpunit/php-text-template": "^3.0", @@ -6585,7 +7475,7 @@ "sebastian/comparator": "^5.0", "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", + "sebastian/exporter": "^5.1", "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", @@ -6601,7 +7491,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.3-dev" + "dev-main": "10.4-dev" } }, "autoload": { @@ -6633,7 +7523,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.2" }, "funding": [ { @@ -6649,7 +7539,7 @@ "type": "tidelift" } ], - "time": "2023-08-15T05:34:23+00:00" + "time": "2023-10-26T07:21:45+00:00" }, { "name": "sebastian/cli-parser", @@ -6897,16 +7787,16 @@ }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", "shasum": "" }, "require": { @@ -6919,7 +7809,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.1-dev" } }, "autoload": { @@ -6942,7 +7832,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" }, "funding": [ { @@ -6950,7 +7841,7 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-09-28T11:50:59+00:00" }, { "name": "sebastian/diff", @@ -7085,16 +7976,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { @@ -7108,7 +7999,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7150,7 +8041,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -7158,7 +8050,7 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", @@ -7224,16 +8116,16 @@ }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", "shasum": "" }, "require": { @@ -7269,7 +8161,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" }, "funding": [ { @@ -7277,7 +8170,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-08-31T09:25:50+00:00" }, { "name": "sebastian/object-enumerator", @@ -7627,35 +8520,35 @@ }, { "name": "spatie/flare-client-php", - "version": "1.4.2", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544" + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5f2c6a7a0d2c1d90c12559dc7828fd942911a544", - "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", "shasum": "" }, "require": { - "illuminate/pipeline": "^8.0|^9.0|^10.0", + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", "nesbot/carbon": "^2.62.1", "php": "^8.0", "spatie/backtrace": "^1.5.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" }, "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" + "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" }, "type": "library", "extra": { @@ -7685,7 +8578,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.4.2" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.3" }, "funding": [ { @@ -7693,20 +8586,20 @@ "type": "github" } ], - "time": "2023-07-28T08:07:24+00:00" + "time": "2023-10-17T15:54:07+00:00" }, { "name": "spatie/ignition", - "version": "1.9.0", + "version": "1.11.3", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973" + "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/de24ff1e01814d5043bd6eb4ab36a5a852a04973", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973", + "url": "https://api.github.com/repos/spatie/ignition/zipball/3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", + "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", "shasum": "" }, "require": { @@ -7715,19 +8608,19 @@ "php": "^8.0", "spatie/backtrace": "^1.5.3", "spatie/flare-client-php": "^1.4.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "require-dev": { - "illuminate/cache": "^9.52", + "illuminate/cache": "^9.52|^10.0|^11.0", "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "psr/simple-cache-implementation": "*", - "symfony/cache": "^6.0", - "symfony/process": "^5.4|^6.0", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", "vlucas/phpdotenv": "^5.5" }, "suggest": { @@ -7776,20 +8669,20 @@ "type": "github" } ], - "time": "2023-06-28T13:24:59+00:00" + "time": "2023-10-18T14:09:40+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.2.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "dd15fbe82ef5392798941efae93c49395a87d943" + "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/dd15fbe82ef5392798941efae93c49395a87d943", - "reference": "dd15fbe82ef5392798941efae93c49395a87d943", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/bf21cd15aa47fa4ec5d73bbc932005c70261efc8", + "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8", "shasum": "" }, "require": { @@ -7868,20 +8761,20 @@ "type": "github" } ], - "time": "2023-06-28T13:51:52+00:00" + "time": "2023-10-09T12:55:26+00:00" }, { "name": "symfony/yaml", - "version": "v6.3.3", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" + "reference": "9758b6c69d179936435d0ffb577c3708d57e38a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", + "url": "https://api.github.com/repos/symfony/yaml/zipball/9758b6c69d179936435d0ffb577c3708d57e38a8", + "reference": "9758b6c69d179936435d0ffb577c3708d57e38a8", "shasum": "" }, "require": { @@ -7924,7 +8817,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.3" + "source": "https://github.com/symfony/yaml/tree/v6.3.7" }, "funding": [ { @@ -7940,7 +8833,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-10-28T23:31:00+00:00" }, { "name": "theseer/tokenizer", @@ -8002,5 +8895,5 @@ "php": "^8.1" }, "platform-dev": [], - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } diff --git a/config/app.php b/config/app.php index 4c231b4..db4e206 100644 --- a/config/app.php +++ b/config/app.php @@ -70,7 +70,7 @@ return [ | */ - 'timezone' => 'UTC', + 'timezone' => 'Asia/Jakarta', /* |-------------------------------------------------------------------------- @@ -109,7 +109,7 @@ return [ | */ - 'faker_locale' => 'en_US', + 'faker_locale' => 'id_ID', /* |-------------------------------------------------------------------------- diff --git a/config/auth.php b/config/auth.php index 9548c15..04998ad 100644 --- a/config/auth.php +++ b/config/auth.php @@ -40,6 +40,10 @@ return [ 'driver' => 'session', 'provider' => 'users', ], + 'api' => [ + 'driver' => 'jwt', + 'provider' => 'users', + ] ], /* diff --git a/config/broadcasting.php b/config/broadcasting.php index 2410485..546f4f2 100644 --- a/config/broadcasting.php +++ b/config/broadcasting.php @@ -35,13 +35,17 @@ return [ 'key' => env('PUSHER_APP_KEY'), 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), + // 'options' => [ + // 'cluster' => env('PUSHER_APP_CLUSTER'), + // 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', + // 'port' => env('PUSHER_PORT', 443), + // 'scheme' => env('PUSHER_SCHEME', 'https'), + // 'encrypted' => true, + // 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', + // ], 'options' => [ - 'cluster' => env('PUSHER_APP_CLUSTER'), - 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', - 'port' => env('PUSHER_PORT', 443), - 'scheme' => env('PUSHER_SCHEME', 'https'), - 'encrypted' => true, - 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', + 'cluster' => 'ap1', + 'useTLS' => true, ], 'client_options' => [ // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html diff --git a/config/flare.php b/config/flare.php new file mode 100644 index 0000000..a4896f3 --- /dev/null +++ b/config/flare.php @@ -0,0 +1,80 @@ + env('FLARE_KEY'), + + /* + |-------------------------------------------------------------------------- + | Middleware + |-------------------------------------------------------------------------- + | + | These middleware will modify the contents of the report sent to Flare. + | + */ + + 'flare_middleware' => [ + RemoveRequestIp::class, + AddGitInformation::class, + AddNotifierName::class, + AddEnvironmentInformation::class, + AddExceptionInformation::class, + AddDumps::class, + AddLogs::class => [ + 'maximum_number_of_collected_logs' => 200, + ], + AddQueries::class => [ + 'maximum_number_of_collected_queries' => 200, + 'report_query_bindings' => true, + ], + AddJobs::class => [ + 'max_chained_job_reporting_depth' => 5, + ], + CensorRequestBodyFields::class => [ + 'censor_fields' => [ + 'password', + 'password_confirmation', + ], + ], + CensorRequestHeaders::class => [ + 'headers' => [ + 'API-KEY', + ] + ] + ], + + /* + |-------------------------------------------------------------------------- + | Reporting log statements + |-------------------------------------------------------------------------- + | + | If this setting is `false` log statements won't be sent as events to Flare, + | no matter which error level you specified in the Flare log channel. + | + */ + + 'send_logs_as_events' => true, +]; diff --git a/config/ignition.php b/config/ignition.php new file mode 100644 index 0000000..a77d972 --- /dev/null +++ b/config/ignition.php @@ -0,0 +1,279 @@ + env('IGNITION_EDITOR', 'phpstorm'), + + /* + |-------------------------------------------------------------------------- + | Theme + |-------------------------------------------------------------------------- + | + | Here you may specify which theme Ignition should use. + | + | Supported: "light", "dark", "auto" + | + */ + + 'theme' => env('IGNITION_THEME', 'auto'), + + /* + |-------------------------------------------------------------------------- + | Sharing + |-------------------------------------------------------------------------- + | + | You can share local errors with colleagues or others around the world. + | Sharing is completely free and doesn't require an account on Flare. + | + | If necessary, you can completely disable sharing below. + | + */ + + 'enable_share_button' => env('IGNITION_SHARING_ENABLED', true), + + /* + |-------------------------------------------------------------------------- + | Register Ignition commands + |-------------------------------------------------------------------------- + | + | Ignition comes with an additional make command that lets you create + | new solution classes more easily. To keep your default Laravel + | installation clean, this command is not registered by default. + | + | You can enable the command registration below. + | + */ + + 'register_commands' => env('REGISTER_IGNITION_COMMANDS', false), + + /* + |-------------------------------------------------------------------------- + | Solution Providers + |-------------------------------------------------------------------------- + | + | You may specify a list of solution providers (as fully qualified class + | names) that shouldn't be loaded. Ignition will ignore these classes + | and possible solutions provided by them will never be displayed. + | + */ + + 'solution_providers' => [ + // from spatie/ignition + BadMethodCallSolutionProvider::class, + MergeConflictSolutionProvider::class, + UndefinedPropertySolutionProvider::class, + + // from spatie/laravel-ignition + IncorrectValetDbCredentialsSolutionProvider::class, + MissingAppKeySolutionProvider::class, + DefaultDbNameSolutionProvider::class, + TableNotFoundSolutionProvider::class, + MissingImportSolutionProvider::class, + InvalidRouteActionSolutionProvider::class, + ViewNotFoundSolutionProvider::class, + RunningLaravelDuskInProductionProvider::class, + MissingColumnSolutionProvider::class, + UnknownValidationSolutionProvider::class, + MissingMixManifestSolutionProvider::class, + MissingViteManifestSolutionProvider::class, + MissingLivewireComponentSolutionProvider::class, + UndefinedViewVariableSolutionProvider::class, + GenericLaravelExceptionSolutionProvider::class, + OpenAiSolutionProvider::class, + SailNetworkSolutionProvider::class, + ], + + /* + |-------------------------------------------------------------------------- + | Ignored Solution Providers + |-------------------------------------------------------------------------- + | + | You may specify a list of solution providers (as fully qualified class + | names) that shouldn't be loaded. Ignition will ignore these classes + | and possible solutions provided by them will never be displayed. + | + */ + + 'ignored_solution_providers' => [ + + ], + + /* + |-------------------------------------------------------------------------- + | Runnable Solutions + |-------------------------------------------------------------------------- + | + | Some solutions that Ignition displays are runnable and can perform + | various tasks. By default, runnable solutions are only enabled when your + | app has debug mode enabled and the environment is `local` or + | `development`. + | + | Using the `IGNITION_ENABLE_RUNNABLE_SOLUTIONS` environment variable, you + | can override this behaviour and enable or disable runnable solutions + | regardless of the application's environment. + | + | Default: env('IGNITION_ENABLE_RUNNABLE_SOLUTIONS') + | + */ + + 'enable_runnable_solutions' => env('IGNITION_ENABLE_RUNNABLE_SOLUTIONS'), + + /* + |-------------------------------------------------------------------------- + | Remote Path Mapping + |-------------------------------------------------------------------------- + | + | If you are using a remote dev server, like Laravel Homestead, Docker, or + | even a remote VPS, it will be necessary to specify your path mapping. + | + | Leaving one, or both of these, empty or null will not trigger the remote + | URL changes and Ignition will treat your editor links as local files. + | + | "remote_sites_path" is an absolute base path for your sites or projects + | in Homestead, Vagrant, Docker, or another remote development server. + | + | Example value: "/home/vagrant/Code" + | + | "local_sites_path" is an absolute base path for your sites or projects + | on your local computer where your IDE or code editor is running on. + | + | Example values: "/Users//Code", "C:\Users\\Documents\Code" + | + */ + + 'remote_sites_path' => env('IGNITION_REMOTE_SITES_PATH', base_path()), + 'local_sites_path' => env('IGNITION_LOCAL_SITES_PATH', ''), + + /* + |-------------------------------------------------------------------------- + | Housekeeping Endpoint Prefix + |-------------------------------------------------------------------------- + | + | Ignition registers a couple of routes when it is enabled. Below you may + | specify a route prefix that will be used to host all internal links. + | + */ + + 'housekeeping_endpoint_prefix' => '_ignition', + + /* + |-------------------------------------------------------------------------- + | Settings File + |-------------------------------------------------------------------------- + | + | Ignition allows you to save your settings to a specific global file. + | + | If no path is specified, a file with settings will be saved to the user's + | home directory. The directory depends on the OS and its settings but it's + | typically `~/.ignition.json`. In this case, the settings will be applied + | to all of your projects where Ignition is used and the path is not + | specified. + | + | However, if you want to store your settings on a project basis, or you + | want to keep them in another directory, you can specify a path where + | the settings file will be saved. The path should be an existing directory + | with correct write access. + | For example, create a new `ignition` folder in the storage directory and + | use `storage_path('ignition')` as the `settings_file_path`. + | + | Default value: '' (empty string) + */ + + 'settings_file_path' => '', + + /* + |-------------------------------------------------------------------------- + | Recorders + |-------------------------------------------------------------------------- + | + | Ignition registers a couple of recorders when it is enabled. Below you may + | specify a recorders will be used to record specific events. + | + */ + + 'recorders' => [ + DumpRecorder::class, + JobRecorder::class, + LogRecorder::class, + QueryRecorder::class, + ], + + /* + * When a key is set, we'll send your exceptions to Open AI to generate a solution + */ + 'open_ai_key' => env('IGNITION_OPEN_AI_KEY'), + + /* + |-------------------------------------------------------------------------- + | Include arguments + |-------------------------------------------------------------------------- + | + | Ignition show you stack traces of exceptions with the arguments that were + | passed to each method. This feature can be disabled here. + | + */ + + 'with_stack_frame_arguments' => true, + + /* + |-------------------------------------------------------------------------- + | Argument reducers + |-------------------------------------------------------------------------- + | + | Ignition show you stack traces of exceptions with the arguments that were + | passed to each method. To make these variables more readable, you can + | specify a list of classes here which summarize the variables. + | + */ + 'argument_reducers' => [ + \Spatie\Backtrace\Arguments\Reducers\BaseTypeArgumentReducer::class, + \Spatie\Backtrace\Arguments\Reducers\ArrayArgumentReducer::class, + \Spatie\Backtrace\Arguments\Reducers\StdClassArgumentReducer::class, + \Spatie\Backtrace\Arguments\Reducers\EnumArgumentReducer::class, + \Spatie\Backtrace\Arguments\Reducers\ClosureArgumentReducer::class, + \Spatie\Backtrace\Arguments\Reducers\DateTimeArgumentReducer::class, + \Spatie\Backtrace\Arguments\Reducers\DateTimeZoneArgumentReducer::class, + \Spatie\Backtrace\Arguments\Reducers\SymphonyRequestArgumentReducer::class, + \Spatie\LaravelIgnition\ArgumentReducers\ModelArgumentReducer::class, + \Spatie\LaravelIgnition\ArgumentReducers\CollectionArgumentReducer::class, + \Spatie\Backtrace\Arguments\Reducers\StringableArgumentReducer::class, + ], +]; diff --git a/config/image.php b/config/image.php new file mode 100644 index 0000000..2b1d2c3 --- /dev/null +++ b/config/image.php @@ -0,0 +1,20 @@ + 'gd' + +]; diff --git a/config/jwt.php b/config/jwt.php new file mode 100644 index 0000000..f83234d --- /dev/null +++ b/config/jwt.php @@ -0,0 +1,301 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return [ + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Secret + |-------------------------------------------------------------------------- + | + | Don't forget to set this in your .env file, as it will be used to sign + | your tokens. A helper command is provided for this: + | `php artisan jwt:secret` + | + | Note: This will be used for Symmetric algorithms only (HMAC), + | since RSA and ECDSA use a private/public key combo (See below). + | + */ + + 'secret' => env('JWT_SECRET'), + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Keys + |-------------------------------------------------------------------------- + | + | The algorithm you are using, will determine whether your tokens are + | signed with a random string (defined in `JWT_SECRET`) or using the + | following public & private keys. + | + | Symmetric Algorithms: + | HS256, HS384 & HS512 will use `JWT_SECRET`. + | + | Asymmetric Algorithms: + | RS256, RS384 & RS512 / ES256, ES384 & ES512 will use the keys below. + | + */ + + 'keys' => [ + + /* + |-------------------------------------------------------------------------- + | Public Key + |-------------------------------------------------------------------------- + | + | A path or resource to your public key. + | + | E.g. 'file://path/to/public/key' + | + */ + + 'public' => env('JWT_PUBLIC_KEY'), + + /* + |-------------------------------------------------------------------------- + | Private Key + |-------------------------------------------------------------------------- + | + | A path or resource to your private key. + | + | E.g. 'file://path/to/private/key' + | + */ + + 'private' => env('JWT_PRIVATE_KEY'), + + /* + |-------------------------------------------------------------------------- + | Passphrase + |-------------------------------------------------------------------------- + | + | The passphrase for your private key. Can be null if none set. + | + */ + + 'passphrase' => env('JWT_PASSPHRASE'), + + ], + + /* + |-------------------------------------------------------------------------- + | JWT time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token will be valid for. + | Defaults to 1 hour. + | + | You can also set this to null, to yield a never expiring token. + | Some people may want this behaviour for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | Notice: If you set this to null you should remove 'exp' element from 'required_claims' list. + | + */ + + 'ttl' => env('JWT_TTL', 60), + + /* + |-------------------------------------------------------------------------- + | Refresh time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token can be refreshed + | within. I.E. The user can refresh their token within a 2 week window of + | the original token being created until they must re-authenticate. + | Defaults to 2 weeks. + | + | You can also set this to null, to yield an infinite refresh time. + | Some may want this instead of never expiring tokens for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | + */ + + 'refresh_ttl' => env('JWT_REFRESH_TTL', 20160), + + /* + |-------------------------------------------------------------------------- + | JWT hashing algorithm + |-------------------------------------------------------------------------- + | + | Specify the hashing algorithm that will be used to sign the token. + | + */ + + 'algo' => env('JWT_ALGO', Tymon\JWTAuth\Providers\JWT\Provider::ALGO_HS256), + + /* + |-------------------------------------------------------------------------- + | Required Claims + |-------------------------------------------------------------------------- + | + | Specify the required claims that must exist in any token. + | A TokenInvalidException will be thrown if any of these claims are not + | present in the payload. + | + */ + + 'required_claims' => [ + 'iss', + 'iat', + 'exp', + 'nbf', + 'sub', + 'jti', + ], + + /* + |-------------------------------------------------------------------------- + | Persistent Claims + |-------------------------------------------------------------------------- + | + | Specify the claim keys to be persisted when refreshing a token. + | `sub` and `iat` will automatically be persisted, in + | addition to the these claims. + | + | Note: If a claim does not exist then it will be ignored. + | + */ + + 'persistent_claims' => [ + // 'foo', + // 'bar', + ], + + /* + |-------------------------------------------------------------------------- + | Lock Subject + |-------------------------------------------------------------------------- + | + | This will determine whether a `prv` claim is automatically added to + | the token. The purpose of this is to ensure that if you have multiple + | authentication models e.g. `App\User` & `App\OtherPerson`, then we + | should prevent one authentication request from impersonating another, + | if 2 tokens happen to have the same id across the 2 different models. + | + | Under specific circumstances, you may want to disable this behaviour + | e.g. if you only have one authentication model, then you would save + | a little on token size. + | + */ + + 'lock_subject' => true, + + /* + |-------------------------------------------------------------------------- + | Leeway + |-------------------------------------------------------------------------- + | + | This property gives the jwt timestamp claims some "leeway". + | Meaning that if you have any unavoidable slight clock skew on + | any of your servers then this will afford you some level of cushioning. + | + | This applies to the claims `iat`, `nbf` and `exp`. + | + | Specify in seconds - only if you know you need it. + | + */ + + 'leeway' => env('JWT_LEEWAY', 0), + + /* + |-------------------------------------------------------------------------- + | Blacklist Enabled + |-------------------------------------------------------------------------- + | + | In order to invalidate tokens, you must have the blacklist enabled. + | If you do not want or need this functionality, then set this to false. + | + */ + + 'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true), + + /* + | ------------------------------------------------------------------------- + | Blacklist Grace Period + | ------------------------------------------------------------------------- + | + | When multiple concurrent requests are made with the same JWT, + | it is possible that some of them fail, due to token regeneration + | on every request. + | + | Set grace period in seconds to prevent parallel request failure. + | + */ + + 'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0), + + /* + |-------------------------------------------------------------------------- + | Cookies encryption + |-------------------------------------------------------------------------- + | + | By default Laravel encrypt cookies for security reason. + | If you decide to not decrypt cookies, you will have to configure Laravel + | to not encrypt your cookie token by adding its name into the $except + | array available in the middleware "EncryptCookies" provided by Laravel. + | see https://laravel.com/docs/master/responses#cookies-and-encryption + | for details. + | + | Set it to true if you want to decrypt cookies. + | + */ + + 'decrypt_cookies' => false, + + /* + |-------------------------------------------------------------------------- + | Providers + |-------------------------------------------------------------------------- + | + | Specify the various providers used throughout the package. + | + */ + + 'providers' => [ + + /* + |-------------------------------------------------------------------------- + | JWT Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to create and decode the tokens. + | + */ + + 'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class, + + /* + |-------------------------------------------------------------------------- + | Authentication Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to authenticate users. + | + */ + + 'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class, + + /* + |-------------------------------------------------------------------------- + | Storage Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to store tokens in the blacklist. + | + */ + + 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class, + + ], + +]; diff --git a/config/laravolt/indonesia.php b/config/laravolt/indonesia.php new file mode 100644 index 0000000..10e98e4 --- /dev/null +++ b/config/laravolt/indonesia.php @@ -0,0 +1,16 @@ + 'indonesia_', + 'route' => [ + 'enabled' => false, + 'middleware' => ['web', 'auth'], + 'prefix' => 'indonesia', + ], + 'view' => [ + 'layout' => 'ui::layouts.app', + ], + 'menu' => [ + 'enabled' => false, + ], +]; diff --git a/config/tinker.php b/config/tinker.php new file mode 100644 index 0000000..c187942 --- /dev/null +++ b/config/tinker.php @@ -0,0 +1,50 @@ + [ + // App\Console\Commands\ExampleCommand::class, + ], + + /* + |-------------------------------------------------------------------------- + | Auto Aliased Classes + |-------------------------------------------------------------------------- + | + | Tinker will not automatically alias classes in your vendor namespaces + | but you may explicitly allow a subset of classes to get aliased by + | adding the names of each of those classes to the following list. + | + */ + + 'alias' => [ + // + ], + + /* + |-------------------------------------------------------------------------- + | Classes That Should Not Be Aliased + |-------------------------------------------------------------------------- + | + | Typically, Tinker automatically aliases classes as you require them in + | Tinker. However, you may wish to never alias certain classes, which + | you may accomplish by listing the classes in the following array. + | + */ + + 'dont_alias' => [ + 'App\Nova', + ], + +]; diff --git a/database/factories/RefundFactory.php b/database/factories/RefundFactory.php deleted file mode 100644 index 1957399..0000000 --- a/database/factories/RefundFactory.php +++ /dev/null @@ -1,23 +0,0 @@ - - */ -class RefundFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition(): array - { - return [ - // - ]; - } -} diff --git a/database/factories/SettingFactory.php b/database/factories/SettingFactory.php deleted file mode 100644 index eb11ef9..0000000 --- a/database/factories/SettingFactory.php +++ /dev/null @@ -1,23 +0,0 @@ - - */ -class SettingFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition(): array - { - return [ - // - ]; - } -} diff --git a/database/factories/TransactionFactory.php b/database/factories/TransactionFactory.php deleted file mode 100644 index 4a159bf..0000000 --- a/database/factories/TransactionFactory.php +++ /dev/null @@ -1,23 +0,0 @@ - - */ -class TransactionFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition(): array - { - return [ - // - ]; - } -} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index a6ecc0a..bdad536 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -18,11 +18,22 @@ class UserFactory extends Factory public function definition(): array { return [ - 'name' => fake()->name(), + 'id' => Str::uuid(), + 'nama_depan' => $this->faker->firstName, + 'nama_belakang' => $this->faker->lastName, + 'tanggal_lahir' => $this->faker->date($format = 'Y-m-d', $max = 'now'), 'email' => fake()->unique()->safeEmail(), 'email_verified_at' => now(), 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), + 'role' => 'User', + 'nik' => $this->faker->nik($this->faker->randomElement(['male', 'female']),$this->faker->dateTimeBetween('-65 years', '-18 years')), + 'alamat'=> $this->faker->address, + 'nohp'=> $this->faker->phoneNumber(), + 'persentase_kemiripan' => random_int(0, 100), + 'status'=> $this->faker->randomElement(['Progress', 'Finished', 'Rejected']), + 'gender' => $this->faker->randomElement(['Laki-laki', 'Perempuan']), + 'kode_kelurahan' => '1101012002', ]; } diff --git a/database/factories/UsersFactory.php b/database/factories/UsersFactory.php deleted file mode 100644 index 8ffe10c..0000000 --- a/database/factories/UsersFactory.php +++ /dev/null @@ -1,23 +0,0 @@ - - */ -class UsersFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition(): array - { - return [ - // - ]; - } -} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 444fafb..88d1311 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -3,6 +3,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Facades\DB; return new class extends Migration { @@ -12,13 +13,31 @@ return new class extends Migration public function up(): void { Schema::create('users', function (Blueprint $table) { - $table->id(); - $table->string('name'); - $table->string('email')->unique(); + $table->uuid('id')->default(DB::raw('uuid_generate_v4()'))->primary(); + $table->string('nama_depan',255); + $table->string('nama_belakang',255); + $table->date('tanggal_lahir'); + $table->string('email',50)->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); + $table->enum('role',['Admin','User'])->default('User'); + $table->string('nohp',20); + $table->string('nik',20)->unique(); + $table->string('alamat',255); + $table->string('foto_ktp')->nullable(); + $table->string('foto_wajah')->nullable(); + $table->string('foto_profile')->nullable(); + $table->integer('persentase_kemiripan')->nullable(); + $table->enum('status',['Finished','Progress','Rejected'])->default('Progress'); + $table->string('gender',15); + $table->char('kode_kelurahan',10); + $table->string('no_rek')->nullable(); + $table->string('nama_bank')->nullable(); $table->rememberToken(); $table->timestamps(); + + $table->index('status'); + $table->index('kode_kelurahan'); }); } diff --git a/database/migrations/2016_08_03_072729_create_provinces_table.php b/database/migrations/2016_08_03_072729_create_provinces_table.php new file mode 100644 index 0000000..3b8e7ec --- /dev/null +++ b/database/migrations/2016_08_03_072729_create_provinces_table.php @@ -0,0 +1,37 @@ +bigIncrements('id'); + $table->char('code', 2)->unique(); + $table->string('name', 255); + $table->text('meta')->nullable(); + $table->timestamps(); + + $table->index('code'); + $table->index('id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop(config('laravolt.indonesia.table_prefix').'provinces'); + } +} diff --git a/database/migrations/2016_08_03_072750_create_cities_table.php b/database/migrations/2016_08_03_072750_create_cities_table.php new file mode 100644 index 0000000..72cb727 --- /dev/null +++ b/database/migrations/2016_08_03_072750_create_cities_table.php @@ -0,0 +1,43 @@ +bigIncrements('id'); + $table->char('code', 4)->unique(); + $table->char('province_code', 2); + $table->string('name', 255); + $table->text('meta')->nullable(); + $table->timestamps(); + + $table->foreign('province_code') + ->references('code') + ->on(config('laravolt.indonesia.table_prefix').'provinces') + ->onUpdate('cascade')->onDelete('restrict'); + $table->index('id'); + $table->index('code'); + $table->index('province_code'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop(config('laravolt.indonesia.table_prefix').'cities'); + } +} diff --git a/database/migrations/2016_08_03_072804_create_districts_table.php b/database/migrations/2016_08_03_072804_create_districts_table.php new file mode 100644 index 0000000..08e938d --- /dev/null +++ b/database/migrations/2016_08_03_072804_create_districts_table.php @@ -0,0 +1,45 @@ +bigIncrements('id'); + $table->char('code', 7)->unique(); + $table->char('city_code', 4); + $table->string('name', 255); + $table->text('meta')->nullable(); + $table->timestamps(); + + $table + ->foreign('city_code') + ->references('code') + ->on(config('laravolt.indonesia.table_prefix') . 'cities') + ->onUpdate('cascade') + ->onDelete('restrict'); + $table->index('id'); + $table->index('code'); + $table->index('city_code'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop(config('laravolt.indonesia.table_prefix') . 'districts'); + } +} diff --git a/database/migrations/2016_08_03_072819_create_villages_table.php b/database/migrations/2016_08_03_072819_create_villages_table.php new file mode 100644 index 0000000..0efb62d --- /dev/null +++ b/database/migrations/2016_08_03_072819_create_villages_table.php @@ -0,0 +1,45 @@ +bigIncrements('id'); + $table->char('code', 10)->unique(); + $table->char('district_code', 7); + $table->string('name', 255); + $table->text('meta')->nullable(); + $table->timestamps(); + + $table + ->foreign('district_code') + ->references('code') + ->on(config('laravolt.indonesia.table_prefix') . 'districts') + ->onUpdate('cascade') + ->onDelete('restrict'); + $table->index('id'); + $table->index('code'); + $table->index('district_code'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop(config('laravolt.indonesia.table_prefix') . 'villages'); + } +} diff --git a/database/migrations/2023_08_01_073859_create_transactions_table.php b/database/migrations/2023_08_01_073859_create_transactions_table.php new file mode 100644 index 0000000..b69dc42 --- /dev/null +++ b/database/migrations/2023_08_01_073859_create_transactions_table.php @@ -0,0 +1,55 @@ +uuid('id')->default(DB::raw('uuid_generate_v4()'))->primary(); //order_id + $table->string('pembeli'); // untuk customer_details + $table->string('penjual'); //merchant_name + $table->string('nama_barang'); // item_details -> item_name + $table->string('deskripsi_transaksi')->nullable(); + $table->string('satuan_barang'); + $table->double('harga_barang'); // harga sebelum penambahan + $table->double('jumlah_barang'); + $table->double('persentase_keuntungan'); // persentase keuntungan + $table->double('total_keuntungan'); // perolehan keuntungan + $table->double('total_harga'); // gross amount + $table->double('total_bayar'); + $table->string('signature_key')->nullable(); + $table->string('token'); + $table->string('metode_pembayaran')->nullable(); + $table->char('currency',3)->nullable(); + $table->string('fraud_status')->nullable(); + $table->string('merchant_id')->nullable(); + $table->enum('status',['settlement','capture','pending','cancel','refund', 'expire','failure','process','sending','sended','finished','created'])->default('created'); // transaction_status + $table->timestamp('batas_pembayaran'); + $table->timestamp('batas_pengiriman_barang_awal'); + $table->timestamp('batas_pengiriman_barang_akhir'); + $table->timestamp('tanggal_transaksi')->nullable(); + $table->string('nama_bank_penjual'); + $table->string('no_rek_penjual'); + $table->timestamps(); + + $table->foreign('pembeli')->on('users')->references('email'); + $table->foreign('penjual')->on('users')->references('email'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('transactions'); + } +}; diff --git a/database/migrations/2023_08_16_044527_create_refunds_table.php b/database/migrations/2023_08_16_044527_create_refunds_table.php index 4dbb28f..70f14e1 100644 --- a/database/migrations/2023_08_16_044527_create_refunds_table.php +++ b/database/migrations/2023_08_16_044527_create_refunds_table.php @@ -2,6 +2,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; return new class extends Migration @@ -12,13 +13,14 @@ return new class extends Migration public function up(): void { Schema::create('refunds', function (Blueprint $table) { - $table->id(); - $table->integer('orderId'); - $table->string('customerName'); - $table->string('sellerName'); - $table->string('total'); - $table->timestamp('dueDate'); - $table->string('status'); + $table->uuid('id')->default(DB::raw('uuid_generate_v4()'))->primary(); + $table->foreignUuid('transaction_id'); + $table->double('total',10); + $table->timestamp('due_date'); + $table->enum('status',['partial refund','deny','pending'])->default('pending'); + $table->text('complaint'); + $table->timestamps(); + $table->foreign('transaction_id')->on('transactions')->references('id'); }); } @@ -29,4 +31,4 @@ return new class extends Migration { Schema::dropIfExists('refunds'); } -}; \ No newline at end of file +}; diff --git a/database/migrations/2023_08_21_031635_create_users_table.php b/database/migrations/2023_08_21_031635_create_users_table.php deleted file mode 100644 index b3bb22f..0000000 --- a/database/migrations/2023_08_21_031635_create_users_table.php +++ /dev/null @@ -1,27 +0,0 @@ -id(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('users'); - } -}; diff --git a/database/migrations/2023_08_27_074453_create_settings_table.php b/database/migrations/2023_08_27_074453_create_settings_table.php index 3f09f88..12e0344 100644 --- a/database/migrations/2023_08_27_074453_create_settings_table.php +++ b/database/migrations/2023_08_27_074453_create_settings_table.php @@ -2,6 +2,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; return new class extends Migration @@ -12,7 +13,12 @@ return new class extends Migration public function up(): void { Schema::create('settings', function (Blueprint $table) { - $table->id(); + $table->uuid('id')->default(DB::raw('uuid_generate_v4()'))->primary(); + $table->string('bulan',5); + $table->string('tahun',5); + $table->float('persentase'); + $table->enum('status',['Active', 'Nonactive'])->default('Active'); + $table->unique(['bulan','tahun']); $table->timestamps(); }); } diff --git a/database/migrations/2023_09_01_044300_create_contacts_table.php b/database/migrations/2023_09_01_044300_create_contacts_table.php new file mode 100644 index 0000000..753571d --- /dev/null +++ b/database/migrations/2023_09_01_044300_create_contacts_table.php @@ -0,0 +1,33 @@ +uuid('id')->default(DB::raw('uuid_generate_v4()'))->primary(); + $table->string('pemilik_kontak'); + $table->string('relasi_kontak'); + $table->foreign('pemilik_kontak')->on('users')->references('email'); + $table->foreign('relasi_kontak')->on('users')->references('email'); + $table->unique(['pemilik_kontak','relasi_kontak']); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('contacts'); + } +}; diff --git a/database/migrations/2023_09_04_022513_create_transaction_descriptions_table.php b/database/migrations/2023_09_04_022513_create_transaction_descriptions_table.php new file mode 100644 index 0000000..e409f3c --- /dev/null +++ b/database/migrations/2023_09_04_022513_create_transaction_descriptions_table.php @@ -0,0 +1,38 @@ +id(); + $table->foreignUuid('transaction_id'); + $table->string('status',15); + $table->string('user'); + $table->string('background'); + $table->string('judul'); + $table->string('deskripsi'); + $table->string('status_code')->nullable(); + $table->string('bukti_foto')->nullable(); + $table->timestamps(); + + $table->foreign('transaction_id')->on('transactions')->references('id'); + $table->foreign('user')->on('users')->references('email'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('transaction_descriptions'); + } +}; diff --git a/database/migrations/2023_08_16_044542_create_transactions_table.php b/database/migrations/2023_09_04_023526_create_refund_descriptions_table.php similarity index 56% rename from database/migrations/2023_08_16_044542_create_transactions_table.php rename to database/migrations/2023_09_04_023526_create_refund_descriptions_table.php index 30e302a..6e2ef9f 100644 --- a/database/migrations/2023_08_16_044542_create_transactions_table.php +++ b/database/migrations/2023_09_04_023526_create_refund_descriptions_table.php @@ -11,9 +11,14 @@ return new class extends Migration */ public function up(): void { - Schema::create('transactions', function (Blueprint $table) { + Schema::create('refund_descriptions', function (Blueprint $table) { $table->id(); + $table->foreignUuid('refund_id'); + $table->string('filename'); + $table->string('type'); $table->timestamps(); + + $table->foreign('refund_id')->on('refunds')->references('id'); }); } @@ -22,6 +27,6 @@ return new class extends Migration */ public function down(): void { - Schema::dropIfExists('transactions'); + Schema::dropIfExists('refund_descriptions'); } }; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index a9f4519..75d6c9f 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -3,7 +3,22 @@ namespace Database\Seeders; // use Illuminate\Database\Console\Seeds\WithoutModelEvents; + +use App\Models\Refund; +use App\Models\RefundDescription; use Illuminate\Database\Seeder; +use App\Models\User; +use Carbon\Carbon; +use App\Models\Setting; +use App\Models\Transaction; +use App\Models\TransactionDescription; +use Illuminate\Support\Str; +use Faker\Factory as FakerFactory; +use Faker\Provider\id_ID\Person as Person; +use Laravolt\Indonesia\Seeds\CitiesSeeder; +use Laravolt\Indonesia\Seeds\VillagesSeeder; +use Laravolt\Indonesia\Seeds\DistrictsSeeder; +use Laravolt\Indonesia\Seeds\ProvincesSeeder; class DatabaseSeeder extends Seeder { @@ -12,11 +27,150 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // \App\Models\User::factory(10)->create(); + $faker = FakerFactory::create(); + $faker->addProvider(new Person($faker)); - // \App\Models\User::factory()->create([ - // 'name' => 'Test User', - // 'email' => 'test@example.com', - // ]); + User::factory()->create([ + 'id' => Str::uuid(), + 'nama_depan' => $faker->firstName, + 'nama_belakang' => $faker->lastName, + 'tanggal_lahir' => $faker->date('Y-m-d', 'now'), + 'email' => 'admin@example.net', + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + 'role' => 'Admin', + 'nik' => $faker->nik($faker->randomElement(['male', 'female']), $faker->dateTimeBetween('-65 years', '-18 years')), + 'alamat' => $faker->address, + 'nohp' => $faker->phoneNumber(), + 'status' => 'Finished', + 'persentase_kemiripan' => 100, + 'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']), + 'kode_kelurahan' => '1101012002', + ]); + + $user1 = User::factory()->create([ + 'id' => Str::uuid(), + 'nama_depan' => $faker->firstName, + 'nama_belakang' => $faker->lastName, + 'tanggal_lahir' => $faker->date('Y-m-d', 'now'), + 'email' => $faker->email, + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + 'role' => 'User', + 'nik' => $faker->nik($faker->randomElement(['male', 'female']), $faker->dateTimeBetween('-65 years', '-18 years')), + 'alamat' => $faker->address, + 'nohp' => $faker->phoneNumber(), + 'status' => 'Finished', + 'persentase_kemiripan' => 100, + 'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']), + 'kode_kelurahan' => '1101012002', + ]); + + $user2 = User::factory()->create([ + 'id' => Str::uuid(), + 'nama_depan' => $faker->firstName, + 'nama_belakang' => $faker->lastName, + 'tanggal_lahir' => $faker->date('Y-m-d', 'now'), + 'email' => $faker->email(), + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + 'role' => 'User', + 'nik' => $faker->nik($faker->randomElement(['male', 'female']), $faker->dateTimeBetween('-65 years', '-18 years')), + 'alamat' => $faker->address, + 'nohp' => $faker->phoneNumber(), + 'status' => 'Finished', + 'persentase_kemiripan' => 100, + 'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']), + 'kode_kelurahan' => '1101012002', + ]); + // User::factory(20)->create(); + + $now = Carbon::now()->tz('Asia/Jakarta'); + $bulan = $now->format('n'); + $tahun = $now->year; + Setting::create([ + 'id' => Str::uuid(), + 'bulan' => $bulan, + 'tahun' => $tahun, + 'persentase' => 5, + 'status' => 'Active', + ]); + + $transaction = Transaction::create([ + 'id' => Str::uuid(), + 'pembeli' => $user1->email, + 'penjual' => $user2->email, + 'nama_barang' => 'hah', + 'deskripsi_transaksi' => null, + 'satuan_barang' => 'barang', + 'harga_barang' => 2000, + 'jumlah_barang' => 2, + 'persentase_keuntungan' => 2, + 'total_keuntungan' => 2, + 'total_harga' => 2, + 'total_bayar' => 2, + 'token' => 'asda', + 'status' => 'pending', + 'batas_pembayaran' => now(), + 'batas_pengiriman_barang_awal' => now(), + 'batas_pengiriman_barang_akhir' => now(), + 'nama_bank_penjual' => 'asd', + 'no_rek_penjual' => '21-', + ]); + + TransactionDescription::create([ + 'transaction_id' => $transaction->id, + 'status' => 'pending', + 'user' => $user1->email, + 'judul' => 'fa fa-plus', + 'background' => 'bg-buyer', + 'deskripsi' => $user1->nama_depan . ' telah membuat transaksi baru dengan ' . $user2->nama_depan, + ]); + + $transactionRefund = Transaction::create([ + 'id' => Str::uuid(), + 'pembeli' => $user1->email, + 'penjual' => $user2->email, + 'nama_barang' => 'hah', + 'deskripsi_transaksi' => null, + 'satuan_barang' => 'barang', + 'harga_barang' => 2000, + 'jumlah_barang' => 2, + 'persentase_keuntungan' => 2, + 'total_keuntungan' => 2, + 'total_harga' => 2, + 'total_bayar' => 2, + 'token' => 'asda', + 'status' => 'refund', + 'batas_pembayaran' => now(), + 'batas_pengiriman_barang_awal' => now(), + 'batas_pengiriman_barang_akhir' => now(), + 'nama_bank_penjual' => 'asd', + 'no_rek_penjual' => '21-', + ]); + + $refund = Refund::create([ + 'transaction_id' => $transactionRefund->id, + 'total' => $transactionRefund->total_harga, + 'due_date' => now(), + 'complaint' => 'ha', + ]); + + RefundDescription::create([ + 'refund_id' => $refund->id, + 'filename' => 'img_1.jpg', + 'type' => 'image' + ]); + + RefundDescription::create([ + 'refund_id' => $refund->id, + 'filename' => 'img_2.jpg', + 'type' => 'image' + ]); + + $this->call([ProvincesSeeder::class, CitiesSeeder::class, DistrictsSeeder::class, VillagesSeeder::class]); } } diff --git a/database/seeders/RefundSeeder.php b/database/seeders/RefundSeeder.php deleted file mode 100644 index 1d4f47b..0000000 --- a/database/seeders/RefundSeeder.php +++ /dev/null @@ -1,17 +0,0 @@ - /etc/timezone + +RUN apt-get update \ + && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin fswatch \ + && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \ + && echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ + && apt-get update \ + && apt-get install -y php8.0-cli php8.0-dev \ + php8.0-pgsql php8.0-sqlite3 php8.0-gd php8.0-imagick \ + php8.0-curl php8.0-memcached \ + php8.0-imap php8.0-mysql php8.0-mbstring \ + php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \ + php8.0-intl php8.0-readline php8.0-pcov \ + php8.0-msgpack php8.0-igbinary php8.0-ldap \ + php8.0-redis php8.0-swoole php8.0-xdebug \ + && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ + && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ + && apt-get install -y nodejs \ + && npm install -g npm \ + && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarnkey.gpg >/dev/null \ + && echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ + && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \ + && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ + && apt-get update \ + && apt-get install -y yarn \ + && apt-get install -y mysql-client \ + && apt-get install -y postgresql-client-$POSTGRES_VERSION \ + && apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN update-alternatives --set php /usr/bin/php8.0 + +RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.0 + +RUN groupadd --force -g $WWWGROUP sail +RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail + +COPY start-container /usr/local/bin/start-container +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY php.ini /etc/php/8.0/cli/conf.d/99-sail.ini +RUN chmod +x /usr/local/bin/start-container + +EXPOSE 8000 + +ENTRYPOINT ["start-container"] diff --git a/docker/8.0/php.ini b/docker/8.0/php.ini new file mode 100644 index 0000000..39dcbca --- /dev/null +++ b/docker/8.0/php.ini @@ -0,0 +1,7 @@ +[PHP] +post_max_size = 100M +upload_max_filesize = 100M +variables_order = EGPCS + +[opcache] +opcache.enable_cli=1 diff --git a/docker/8.0/start-container b/docker/8.0/start-container new file mode 100644 index 0000000..b864399 --- /dev/null +++ b/docker/8.0/start-container @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +if [ ! -z "$WWWUSER" ]; then + usermod -u $WWWUSER sail +fi + +if [ ! -d /.composer ]; then + mkdir /.composer +fi + +chmod -R ugo+rw /.composer + +if [ $# -gt 0 ]; then + exec gosu $WWWUSER "$@" +else + exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf +fi diff --git a/docker/8.0/supervisord.conf b/docker/8.0/supervisord.conf new file mode 100644 index 0000000..9d28479 --- /dev/null +++ b/docker/8.0/supervisord.conf @@ -0,0 +1,14 @@ +[supervisord] +nodaemon=true +user=root +logfile=/var/log/supervisor/supervisord.log +pidfile=/var/run/supervisord.pid + +[program:php] +command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80 +user=sail +environment=LARAVEL_SAIL="1" +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/8.1/Dockerfile b/docker/8.1/Dockerfile new file mode 100644 index 0000000..043ddb4 --- /dev/null +++ b/docker/8.1/Dockerfile @@ -0,0 +1,58 @@ +FROM ubuntu:22.04 + +LABEL maintainer="Taylor Otwell" + +ARG WWWGROUP +ARG NODE_VERSION=18 +ARG POSTGRES_VERSION=15 + +WORKDIR /var/www/html + +ENV DEBIAN_FRONTEND noninteractive +ENV TZ=UTC + +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN apt-get update \ + && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin fswatch \ + && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \ + && echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ + && apt-get update \ + && apt-get install -y php8.1-cli php8.1-dev \ + php8.1-pgsql php8.1-sqlite3 php8.1-gd php8.1-imagick \ + php8.1-curl \ + php8.1-imap php8.1-mysql php8.1-mbstring \ + php8.1-xml php8.1-zip php8.1-bcmath php8.1-soap \ + php8.1-intl php8.1-readline \ + php8.1-ldap \ + php8.1-msgpack php8.1-igbinary php8.1-redis php8.1-swoole \ + php8.1-memcached php8.1-pcov php8.1-xdebug \ + && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ + && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ + && apt-get install -y nodejs \ + && npm install -g npm \ + && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarn.gpg >/dev/null \ + && echo "deb [signed-by=/usr/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ + && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \ + && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ + && apt-get update \ + && apt-get install -y yarn \ + && apt-get install -y mysql-client \ + && apt-get install -y postgresql-client-$POSTGRES_VERSION \ + && apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.1 + +RUN groupadd --force -g $WWWGROUP sail +RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail + +COPY start-container /usr/local/bin/start-container +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY php.ini /etc/php/8.1/cli/conf.d/99-sail.ini +RUN chmod +x /usr/local/bin/start-container + +EXPOSE 8000 + +ENTRYPOINT ["start-container"] diff --git a/docker/8.1/php.ini b/docker/8.1/php.ini new file mode 100644 index 0000000..39dcbca --- /dev/null +++ b/docker/8.1/php.ini @@ -0,0 +1,7 @@ +[PHP] +post_max_size = 100M +upload_max_filesize = 100M +variables_order = EGPCS + +[opcache] +opcache.enable_cli=1 diff --git a/docker/8.1/start-container b/docker/8.1/start-container new file mode 100644 index 0000000..b864399 --- /dev/null +++ b/docker/8.1/start-container @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +if [ ! -z "$WWWUSER" ]; then + usermod -u $WWWUSER sail +fi + +if [ ! -d /.composer ]; then + mkdir /.composer +fi + +chmod -R ugo+rw /.composer + +if [ $# -gt 0 ]; then + exec gosu $WWWUSER "$@" +else + exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf +fi diff --git a/docker/8.1/supervisord.conf b/docker/8.1/supervisord.conf new file mode 100644 index 0000000..9d28479 --- /dev/null +++ b/docker/8.1/supervisord.conf @@ -0,0 +1,14 @@ +[supervisord] +nodaemon=true +user=root +logfile=/var/log/supervisor/supervisord.log +pidfile=/var/run/supervisord.pid + +[program:php] +command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80 +user=sail +environment=LARAVEL_SAIL="1" +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/8.2/Dockerfile b/docker/8.2/Dockerfile new file mode 100644 index 0000000..56cdb24 --- /dev/null +++ b/docker/8.2/Dockerfile @@ -0,0 +1,59 @@ +FROM ubuntu:22.04 + +LABEL maintainer="Taylor Otwell" + +ARG WWWGROUP +ARG NODE_VERSION=18 +ARG POSTGRES_VERSION=15 + +WORKDIR /var/www/html + +ENV DEBIAN_FRONTEND noninteractive +ENV TZ=UTC + +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN apt-get update \ + && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin fswatch \ + && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ + && apt-get update \ + && apt-get install -y php8.2-cli php8.2-dev \ + php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ + php8.2-curl \ + php8.2-imap php8.2-mysql php8.2-mbstring \ + php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ + php8.2-intl php8.2-readline \ + php8.2-ldap \ + php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ + php8.2-memcached php8.2-pcov php8.2-xdebug \ + && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ + && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ + && apt-get install -y nodejs \ + && npm install -g npm \ + && npm install -g pnpm \ + && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ + && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ + && apt-get update \ + && apt-get install -y yarn \ + && apt-get install -y mysql-client \ + && apt-get install -y postgresql-client-$POSTGRES_VERSION \ + && apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 + +RUN groupadd --force -g $WWWGROUP sail +RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail + +COPY start-container /usr/local/bin/start-container +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY php.ini /etc/php/8.2/cli/conf.d/99-sail.ini +RUN chmod +x /usr/local/bin/start-container + +EXPOSE 8000 + +ENTRYPOINT ["start-container"] diff --git a/docker/8.2/php.ini b/docker/8.2/php.ini new file mode 100644 index 0000000..39dcbca --- /dev/null +++ b/docker/8.2/php.ini @@ -0,0 +1,7 @@ +[PHP] +post_max_size = 100M +upload_max_filesize = 100M +variables_order = EGPCS + +[opcache] +opcache.enable_cli=1 diff --git a/docker/8.2/start-container b/docker/8.2/start-container new file mode 100644 index 0000000..b864399 --- /dev/null +++ b/docker/8.2/start-container @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +if [ ! -z "$WWWUSER" ]; then + usermod -u $WWWUSER sail +fi + +if [ ! -d /.composer ]; then + mkdir /.composer +fi + +chmod -R ugo+rw /.composer + +if [ $# -gt 0 ]; then + exec gosu $WWWUSER "$@" +else + exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf +fi diff --git a/docker/8.2/supervisord.conf b/docker/8.2/supervisord.conf new file mode 100644 index 0000000..9d28479 --- /dev/null +++ b/docker/8.2/supervisord.conf @@ -0,0 +1,14 @@ +[supervisord] +nodaemon=true +user=root +logfile=/var/log/supervisor/supervisord.log +pidfile=/var/run/supervisord.pid + +[program:php] +command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80 +user=sail +environment=LARAVEL_SAIL="1" +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/mysql/create-testing-database.sh b/docker/mysql/create-testing-database.sh new file mode 100644 index 0000000..aeb1826 --- /dev/null +++ b/docker/mysql/create-testing-database.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +mysql --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL + CREATE DATABASE IF NOT EXISTS testing; + GRANT ALL PRIVILEGES ON \`testing%\`.* TO '$MYSQL_USER'@'%'; +EOSQL diff --git a/docker/pgsql/create-testing-database.sql b/docker/pgsql/create-testing-database.sql new file mode 100644 index 0000000..d84dc07 --- /dev/null +++ b/docker/pgsql/create-testing-database.sql @@ -0,0 +1,2 @@ +SELECT 'CREATE DATABASE testing' +WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'testing')\gexec diff --git a/public/assets/audio/Renai Saiban_[Uwamono].mp3 b/public/assets/audio/Renai Saiban_[Uwamono].mp3 new file mode 100644 index 0000000..8d9c03d Binary files /dev/null and b/public/assets/audio/Renai Saiban_[Uwamono].mp3 differ diff --git a/public/assets/css/components.css b/public/assets/css/components.css index e011983..a4c80c2 100644 --- a/public/assets/css/components.css +++ b/public/assets/css/components.css @@ -49,1846 +49,1911 @@ */ /* 1.1 Article */ .article { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - background-color: #fff; - border-radius: 3px; - border: none; - position: relative; - margin-bottom: 30px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; } .article .article-header { - height: 170px; - position: relative; - overflow: hidden; + height: 170px; + position: relative; + overflow: hidden; } .article .article-header .article-image { - background-color: #fbfbfb; - background-position: center; - background-size: cover; - background-repeat: no-repeat; - width: 100%; - height: 100%; - z-index: -1; + background-color: #fbfbfb; + background-position: center; + background-size: cover; + background-repeat: no-repeat; + width: 100%; + height: 100%; + z-index: -1; } .article .article-header .article-title { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.01) 1%, rgba(0, 0, 0, 0.65) 98%, rgba(0, 0, 0, 0.65) 100%); - padding: 10px; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + background: linear-gradient( + to bottom, + rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.01) 1%, + rgba(0, 0, 0, 0.65) 98%, + rgba(0, 0, 0, 0.65) 100% + ); + padding: 10px; } .article .article-header .article-title h2 { - font-size: 16px; - line-height: 24px; + font-size: 16px; + line-height: 24px; } .article .article-header .article-title h2 a { - font-weight: 700; - text-decoration: none; - color: #fff; + font-weight: 700; + text-decoration: none; + color: #fff; } .article .article-details { - background-color: #fff; - padding: 20px; - line-height: 24px; + background-color: #fff; + padding: 20px; + line-height: 24px; } .article .article-details .article-cta { - text-align: center; + text-align: center; } .article .article-header .article-badge { - position: absolute; - bottom: 10px; - left: 10px; + position: absolute; + bottom: 10px; + left: 10px; } .article .article-header .article-badge .article-badge-item { - padding: 7px 15px; - font-weight: 600; - color: #fff; - border-radius: 30px; - font-size: 12px; + padding: 7px 15px; + font-weight: 600; + color: #fff; + border-radius: 30px; + font-size: 12px; } -.article .article-header .article-badge .article-badge-item .ion, .article .article-header .article-badge .article-badge-item .fas, .article .article-header .article-badge .article-badge-item .far, .article .article-header .article-badge .article-badge-item .fab, .article .article-header .article-badge .article-badge-item .fal { - margin-right: 3px; +.article .article-header .article-badge .article-badge-item .ion, +.article .article-header .article-badge .article-badge-item .fas, +.article .article-header .article-badge .article-badge-item .far, +.article .article-header .article-badge .article-badge-item .fab, +.article .article-header .article-badge .article-badge-item .fal { + margin-right: 3px; } .article.article-style-b .article-details .article-title { - margin-bottom: 10px; + margin-bottom: 10px; } .article.article-style-b .article-details .article-title h2 { - line-height: 22px; + line-height: 22px; } .article.article-style-b .article-details .article-title a { - font-size: 16px; - font-weight: 600; + font-size: 16px; + font-weight: 600; } .article.article-style-b .article-details p { - color: #34395e; + color: #34395e; } .article.article-style-b .article-details .article-cta { - text-align: right; + text-align: right; } .article.article-style-c .article-header { - height: 233px; + height: 233px; } .article.article-style-c .article-details .article-category { - text-transform: uppercase; - margin-bottom: 5px; - letter-spacing: 1px; - color: #34395e; + text-transform: uppercase; + margin-bottom: 5px; + letter-spacing: 1px; + color: #34395e; } .article.article-style-c .article-details .article-category a { - font-size: 10px; - color: #34395e; - font-weight: 700; + font-size: 10px; + color: #34395e; + font-weight: 700; } .article.article-style-c .article-details .article-title { - margin-bottom: 10px; + margin-bottom: 10px; } .article.article-style-c .article-details .article-title h2 { - line-height: 22px; + line-height: 22px; } .article.article-style-c .article-details .article-title a { - font-size: 16px; - font-weight: 600; + font-size: 16px; + font-weight: 600; } .article.article-style-c .article-details p { - color: #34395e; + color: #34395e; } .article.article-style-c .article-user { - display: inline-block; - width: 100%; - margin-top: 20px; + display: inline-block; + width: 100%; + margin-top: 20px; } .article.article-style-c .article-user img { - border-radius: 50%; - float: left; - width: 45px; - margin-right: 15px; + border-radius: 50%; + float: left; + width: 45px; + margin-right: 15px; } .article.article-style-c .article-user .user-detail-name { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } .article.article-style-c .article-user .user-detail-name a { - font-weight: 700; + font-weight: 700; } @media (max-width: 575.98px) { - .article .article-style-c .article-header { - height: 225px; - } + .article .article-style-c .article-header { + height: 225px; + } } @media (min-width: 768px) and (max-width: 991.98px) { - .article { - margin-bottom: 40px; - } - .article .article-header { - height: 195px !important; - } - .article.article-style-c .article-header { - height: 155px; - } + .article { + margin-bottom: 40px; + } + .article .article-header { + height: 195px !important; + } + .article.article-style-c .article-header { + height: 155px; + } } @media (max-width: 1024px) { - .article.article-style-c .article-header { - height: 216px; - } - .article .article-header { - height: 155px; - } + .article.article-style-c .article-header { + height: 216px; + } + .article .article-header { + height: 155px; + } } /* 1.2 Author */ .author-box .author-box-left { - float: left; - text-align: center; - padding-left: 5px; + float: left; + text-align: center; + padding-left: 5px; } .author-box .author-box-left .btn { - padding: 5px 15px; - font-size: 12px; - border-radius: 30px; + padding: 5px 15px; + font-size: 12px; + border-radius: 30px; } .author-box .author-box-picture { - width: 100px; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + width: 100px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); } .author-box .author-box-details { - margin-left: 135px; + margin-left: 135px; } .author-box .author-box-name { - font-size: 18px; + font-size: 18px; } .author-box .author-box-name a { - font-weight: 600; + font-weight: 600; } .author-box .author-box-job { - font-weight: 600; - letter-spacing: 0.5px; - font-size: 12px; - color: #34395e; + font-weight: 600; + letter-spacing: 0.5px; + font-size: 12px; + color: #34395e; } .author-box .author-box-description { - line-height: 26px; - margin-top: 15px; + line-height: 26px; + margin-top: 15px; } @media (max-width: 575.98px) { - .author-box .author-box-left { - float: none; - } - .author-box .author-box-details { - margin-left: 0; - margin-top: 15px; - text-align: center; - } + .author-box .author-box-left { + float: none; + } + .author-box .author-box-details { + margin-left: 0; + margin-top: 15px; + text-align: center; + } } /* 1.3 Avatar Item */ .avatar-item { - position: relative; - margin-bottom: 20px; + position: relative; + margin-bottom: 20px; } .avatar-item img { - border-radius: 50%; + border-radius: 50%; } .avatar-item .avatar-badge { - position: absolute; - bottom: -5px; - right: 0; - background-color: #fff; - color: #000; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - border-radius: 50%; - text-align: center; - line-height: 25px; - width: 25px; - height: 25px; + position: absolute; + bottom: -5px; + right: 0; + background-color: #fff; + color: #000; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + border-radius: 50%; + text-align: center; + line-height: 25px; + width: 25px; + height: 25px; } /* 1.4 Browser */ .browser { - display: inline-block; - width: 60px; - height: 60px; - background-size: 100%; + display: inline-block; + width: 60px; + height: 60px; + background-size: 100%; } .browser.browser-chrome { - background-image: url("../img/browsers/chrome.png"); + background-image: url("../img/browsers/chrome.png"); } .browser.browser-firefox { - background-image: url("../img/browsers/firefox.png"); + background-image: url("../img/browsers/firefox.png"); } .browser.browser-internet-explorer { - background-image: url("../img/browsers/internet-explorer.png"); + background-image: url("../img/browsers/internet-explorer.png"); } .browser.browser-opera { - background-image: url("../img/browsers/opera.png"); + background-image: url("../img/browsers/opera.png"); } .browser.browser-safari { - background-image: url("../img/browsers/safari.png"); + background-image: url("../img/browsers/safari.png"); } /* 1.5 Chat */ .chat-box .chat-content { - background-color: #f9f9f9 !important; - height: 300px; - overflow: hidden; - padding-top: 25px !important; + background-color: #f9f9f9 !important; + height: 300px; + overflow: hidden; + padding-top: 25px !important; } .chat-box .chat-content .chat-item { - display: inline-block; - width: 100%; - margin-bottom: 25px; + display: inline-block; + width: 100%; + margin-bottom: 25px; } .chat-box .chat-content .chat-item.chat-right img { - float: right; + float: right; } .chat-box .chat-content .chat-item.chat-right .chat-details { - margin-left: 0; - margin-right: 70px; - text-align: right; + margin-left: 0; + margin-right: 70px; + text-align: right; } .chat-box .chat-content .chat-item.chat-right .chat-details .chat-text { - text-align: left; - background-color: #6777ef; - color: #fff; + text-align: left; + background-color: #6777ef; + color: #fff; } .chat-box .chat-content .chat-item > img { - float: left; - width: 50px; - border-radius: 50%; + float: left; + width: 50px; + border-radius: 50%; } .chat-box .chat-content .chat-item .chat-details { - margin-left: 70px; + margin-left: 70px; } .chat-box .chat-content .chat-item .chat-details .chat-text { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - background-color: #fff; - padding: 10px 15px; - border-radius: 3px; - width: auto; - display: inline-block; - font-size: 12px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + padding: 10px 15px; + border-radius: 3px; + width: auto; + display: inline-block; + font-size: 12px; } .chat-box .chat-content .chat-item .chat-details .chat-text img { - max-width: 100%; - margin-bottom: 10px; + max-width: 100%; + margin-bottom: 10px; } .chat-box .chat-content .chat-item.chat-typing .chat-details .chat-text { - background-image: url("../img/typing.svg"); - height: 40px; - width: 60px; - background-position: center; - background-size: 60%; - background-repeat: no-repeat; + background-image: url("../img/typing.svg"); + height: 40px; + width: 60px; + background-position: center; + background-size: 60%; + background-repeat: no-repeat; } .chat-box .chat-content .chat-item .chat-details .chat-time { - margin-top: 5px; - font-size: 12px; - font-weight: 500; - opacity: 0.6; + margin-top: 5px; + font-size: 12px; + font-weight: 500; + opacity: 0.6; } .chat-box .chat-form { - padding: 0; - position: relative; + padding: 0; + position: relative; } .chat-box .chat-form .form-control { - border: none; - padding: 15px; - height: 50px; - padding-right: 70px; - font-size: 13px; - font-weight: 500; - box-shadow: none; - outline: none; + border: none; + padding: 15px; + height: 50px; + padding-right: 70px; + font-size: 13px; + font-weight: 500; + box-shadow: none; + outline: none; } .chat-box .chat-form .btn { - padding: 0; - width: 40px; - height: 40px; - border-radius: 50%; - position: absolute; - top: 50%; - right: -5px; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + padding: 0; + width: 40px; + height: 40px; + border-radius: 50%; + position: absolute; + top: 50%; + right: -5px; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); } .chat-box .chat-form .btn i { - margin-left: 0; + margin-left: 0; } /* 1.6 Chocolat */ .chocolat-wrapper { - z-index: 890; + z-index: 890; } .chocolat-overlay { - background-color: #000; + background-color: #000; } /* 1.7 Custom Tab */ [data-tab-group] { - display: none; + display: none; } [data-tab-group].active { - display: block; + display: block; } /* 1.8 DataTables */ table.dataTable { - border-collapse: collapse !important; + border-collapse: collapse !important; } -table.dataTable thead th, table.dataTable thead td { - border-bottom: 1px solid #ddd !important; +table.dataTable thead th, +table.dataTable thead td { + border-bottom: 1px solid #ddd !important; } table.dataTable.no-footer { - border-bottom: 1px solid #ddd !important; + border-bottom: 1px solid #ddd !important; } .dataTables_wrapper { - padding: 0 !important; - font-size: 13px !important; + padding: 0 !important; + font-size: 13px !important; } .dataTables_wrapper .dataTables_paginate .paginate_button { - padding: 0 !important; - margin: 0 !important; - float: left; + padding: 0 !important; + margin: 0 !important; + float: left; } div.dataTables_wrapper div.dataTables_processing { - font-size: 0 !important; - background-image: url("../img/spinner.svg") !important; - background-color: #fff; - background-size: 100%; - width: 50px !important; - height: 50px; - border: none; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - top: 50% !important; - left: 50% !important; - -webkit-transform: translate(-50%, -50%) !important; - transform: translate(-50%, -50%) !important; - margin: 0 !important; - opacity: 1 !important; + font-size: 0 !important; + background-image: url("../img/spinner.svg") !important; + background-color: #fff; + background-size: 100%; + width: 50px !important; + height: 50px; + border: none; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + top: 50% !important; + left: 50% !important; + -webkit-transform: translate(-50%, -50%) !important; + transform: translate(-50%, -50%) !important; + margin: 0 !important; + opacity: 1 !important; } /* 1.9 Date Range Picker */ .daterangepicker.dropdown-menu { - width: auto; + width: auto; } .daterangepicker .input-mini { - padding-left: 28px !important; + padding-left: 28px !important; } -.daterangepicker .calendar th, .daterangepicker .calendar td { - padding: 5px; - font-size: 12px; +.daterangepicker .calendar th, +.daterangepicker .calendar td { + padding: 5px; + font-size: 12px; } .ranges li { - color: #6777ef; + color: #6777ef; } -.ranges li:hover, .ranges li.active { - background-color: #6777ef; +.ranges li:hover, +.ranges li.active { + background-color: #6777ef; } -.daterangepicker td.active, .daterangepicker td.active:hover { - background-color: #6777ef; +.daterangepicker td.active, +.daterangepicker td.active:hover { + background-color: #6777ef; } /* 1.10 Dropzone */ .dropzone { - border: 2px dashed #6777ef; - min-height: 240px; - text-align: center; + border: 2px dashed #6777ef; + min-height: 240px; + text-align: center; } .dropzone .dz-message { - font-size: 24px; - color: #34395e; - margin: 3.4em; + font-size: 24px; + color: #34395e; + margin: 3.4em; } .dropzone .dz-preview .dz-details { - padding: 2.2em 1em; + padding: 2.2em 1em; } .dropzone .dz-preview .dz-image { - border-radius: 3px; + border-radius: 3px; } @media (max-width: 575.98px) { - .dropzone .dz-message { - margin: 2em; - } + .dropzone .dz-message { + margin: 2em; + } } @media (min-width: 576px) and (max-width: 767.98px) { - .dropzone .dz-message { - margin: 2.75em; - } + .dropzone .dz-message { + margin: 2.75em; + } } /* 1.11 Flag Icon */ .flag-icon { - width: 50px; - height: 35px; - display: inline-block; - background-size: 100%; + width: 50px; + height: 35px; + display: inline-block; + background-size: 100%; } .flag-icon.flag-icon-shadow { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); } /* 1.12 Full Calendar */ .fc-toolbar h2 { - font-size: 16px; - margin-top: 4px; + font-size: 16px; + margin-top: 4px; } .fc-view { - border-color: #f2f2f2; - color: #34395e !important; - font-weight: 500; - padding: 10px; + border-color: #f2f2f2; + color: #34395e !important; + font-weight: 500; + padding: 10px; } .fc-view > table { - border-color: #f2f2f2; + border-color: #f2f2f2; } -.fc-view > table tr, .fc-view > table td { - border-color: #f2f2f2; +.fc-view > table tr, +.fc-view > table td { + border-color: #f2f2f2; } .fc-view > table th { - border-color: #f2f2f2; - color: #34395e !important; - font-weight: 500; - padding: 10px; + border-color: #f2f2f2; + color: #34395e !important; + font-weight: 500; + padding: 10px; } .fc-view-container > .fc-view { - padding: 0; + padding: 0; } .fc-view { - color: #666; - text-align: right; + color: #666; + text-align: right; } .fc-view > table td { - color: #666; - text-align: right; + color: #666; + text-align: right; } .fc-unthemed td.fc-today { - background-color: #f2f2f2; + background-color: #f2f2f2; } .fc button .fc-icon { - top: -0.09em; + top: -0.09em; } -.fc-basic-view .fc-day-number, .fc-basic-view .fc-week-number { - padding: 10px; +.fc-basic-view .fc-day-number, +.fc-basic-view .fc-week-number { + padding: 10px; } .fc-day-grid-event .fc-content { - padding: 5px 10px; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + padding: 5px 10px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); } tr:first-child > td > .fc-day-grid-event { - margin-bottom: 10px; + margin-bottom: 10px; } .fc-state-default { - border-radius: 3px; - background-color: #f2f2f2; - background-image: none; - border: none; - box-shadow: none; - text-transform: capitalize; - font-weight: 500; + border-radius: 3px; + background-color: #f2f2f2; + background-image: none; + border: none; + box-shadow: none; + text-transform: capitalize; + font-weight: 500; } .fc button { - height: auto; - padding: 10px 15px; - text-shadow: none; - border-radius: 0; + height: auto; + padding: 10px 15px; + text-shadow: none; + border-radius: 0; } .fc button.fc-state-active { - background-color: #6777ef; - color: #fff; + background-color: #6777ef; + color: #fff; } /* 1.13 Gallery */ .gallery { - display: inline-block; - width: 100%; + display: inline-block; + width: 100%; } .gallery .gallery-item { - float: left; - display: inline-block; - width: 50px; - height: 50px; - background-repeat: no-repeat; - background-size: cover; - background-position: center; - border-radius: 3px; - margin-right: 7px; - margin-bottom: 7px; - cursor: pointer; - transition: all 0.5s; - position: relative; + float: left; + display: inline-block; + width: 50px; + height: 50px; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + border-radius: 3px; + margin-right: 7px; + margin-bottom: 7px; + cursor: pointer; + transition: all 0.5s; + position: relative; } .gallery .gallery-item:hover { - opacity: 0.8; + opacity: 0.8; } .gallery .gallery-hide { - display: none; + display: none; } .gallery .gallery-more:after { - content: " "; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - z-index: 1; - background-color: rgba(0, 0, 0, 0.5); - border-radius: 3px; + content: " "; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 1; + background-color: rgba(0, 0, 0, 0.5); + border-radius: 3px; } .gallery .gallery-more div { - text-align: center; - line-height: 50px; - font-weight: 600; - position: relative; - z-index: 2; - color: #fff; + text-align: center; + line-height: 50px; + font-weight: 600; + position: relative; + z-index: 2; + color: #fff; } .gallery.gallery-md .gallery-item { - width: 78px; - height: 78px; - margin-right: 10px; - margin-bottom: 10px; + width: 78px; + height: 78px; + margin-right: 10px; + margin-bottom: 10px; } .gallery.gallery-md .gallery-more div { - line-height: 78px; + line-height: 78px; } .gallery.gallery-fw .gallery-item { - width: 100%; - margin-bottom: 15px; + width: 100%; + margin-bottom: 15px; } .gallery.gallery-fw .gallery-more div { - font-size: 20px; + font-size: 20px; } /* 1.14 Image Preview */ -.image-preview, #callback-preview { - width: 250px; - height: 250px; - border: 2px dashed #ddd; - border-radius: 3px; - position: relative; - overflow: hidden; - background-color: #ffffff; - color: #ecf0f1; +.image-preview, +#callback-preview { + width: 250px; + height: 250px; + border: 2px dashed #ddd; + border-radius: 3px; + position: relative; + overflow: hidden; + background-color: #ffffff; + color: #ecf0f1; } -.image-preview input, #callback-preview input { - line-height: 200px; - font-size: 200px; - position: absolute; - opacity: 0; - z-index: 10; +.image-preview input, +#callback-preview input { + line-height: 200px; + font-size: 200px; + position: absolute; + opacity: 0; + z-index: 10; } -.image-preview label, #callback-preview label { - position: absolute; - z-index: 5; - opacity: 0.8; - cursor: pointer; - background-color: #bdc3c7; - width: 150px; - height: 50px; - font-size: 12px; - line-height: 50px; - text-transform: uppercase; - top: 0; - left: 0; - right: 0; - bottom: 0; - margin: auto; - text-align: center; +.image-preview label, +#callback-preview label { + position: absolute; + z-index: 5; + opacity: 0.8; + cursor: pointer; + background-color: #bdc3c7; + width: 150px; + height: 50px; + font-size: 12px; + line-height: 50px; + text-transform: uppercase; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + text-align: center; } .audio-preview { - background: #ffffff; - width: auto; - padding: 20px; - display: inline-block; + background: #ffffff; + width: auto; + padding: 20px; + display: inline-block; } .audio-upload { - cursor: pointer; - background-color: #bdc3c7; - color: #ecf0f1; - padding: 20px; - font-size: 20px; - text-transform: uppercase; + cursor: pointer; + background-color: #bdc3c7; + color: #ecf0f1; + padding: 20px; + font-size: 20px; + text-transform: uppercase; } /* 1.15 IonIcons */ .ionicons { - padding: 0; - margin: 0; - display: flex; - flex-wrap: wrap; + padding: 0; + margin: 0; + display: flex; + flex-wrap: wrap; } .ionicons li { - width: calc(100% / 8); - font-size: 40px; - padding: 40px 20px; - list-style: none; - text-align: center; - border-radius: 3px; - position: relative; - cursor: pointer; + width: calc(100% / 8); + font-size: 40px; + padding: 40px 20px; + list-style: none; + text-align: center; + border-radius: 3px; + position: relative; + cursor: pointer; } .ionicons li:hover { - opacity: 0.8; + opacity: 0.8; } .ionicons li .icon-name { - position: absolute; - top: 100%; - left: 50%; - width: 100%; - -webkit-transform: translate(-50%, -100%); - transform: translate(-50%, -100%); - font-family: "Segoe UI"; - font-size: 12px; - margin-top: 10px; - line-height: 22px; - background-color: #f9f9f9; - border-radius: 3px; - padding: 10px; - display: none; + position: absolute; + top: 100%; + left: 50%; + width: 100%; + -webkit-transform: translate(-50%, -100%); + transform: translate(-50%, -100%); + font-family: "Segoe UI"; + font-size: 12px; + margin-top: 10px; + line-height: 22px; + background-color: #f9f9f9; + border-radius: 3px; + padding: 10px; + display: none; } /* 1.16 jQVmap */ .jqvmap-circle { - display: inline-block; - width: 13px; - height: 13px; - background-color: #fff; - border: 3px solid #6777ef; - border-radius: 50%; + display: inline-block; + width: 13px; + height: 13px; + background-color: #fff; + border: 3px solid #6777ef; + border-radius: 50%; } .jqvmap-label { - z-index: 889; + z-index: 889; } -.jqvmap-zoomin, .jqvmap-zoomout { - height: auto; - width: auto; +.jqvmap-zoomin, +.jqvmap-zoomout { + height: auto; + width: auto; } /* 1.17 Profile */ .profile-widget { - margin-top: 35px; + margin-top: 35px; } .profile-widget .profile-widget-picture { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - float: left; - width: 100px; - margin: -35px -5px 0 30px; - position: relative; - z-index: 1; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + float: left; + width: 100px; + margin: -35px -5px 0 30px; + position: relative; + z-index: 1; } .profile-widget .profile-widget-header { - display: inline-block; - width: 100%; - margin-bottom: 10px; + display: inline-block; + width: 100%; + margin-bottom: 10px; } .profile-widget .profile-widget-items { - display: flex; - position: relative; + display: flex; + position: relative; } .profile-widget .profile-widget-items:after { - content: " "; - position: absolute; - bottom: 0; - left: -25px; - right: 0; - height: 1px; - background-color: #f2f2f2; + content: " "; + position: absolute; + bottom: 0; + left: -25px; + right: 0; + height: 1px; + background-color: #f2f2f2; } .profile-widget .profile-widget-items .profile-widget-item { - flex: 1; - text-align: center; - border-right: 1px solid #f2f2f2; - padding: 10px 0; + flex: 1; + text-align: center; + border-right: 1px solid #f2f2f2; + padding: 10px 0; } .profile-widget .profile-widget-items .profile-widget-item:last-child { - border-right: none; + border-right: none; } -.profile-widget .profile-widget-items .profile-widget-item .profile-widget-item-label { - font-weight: 600; - font-size: 12px; - letter-spacing: 0.5px; - color: #34395e; +.profile-widget + .profile-widget-items + .profile-widget-item + .profile-widget-item-label { + font-weight: 600; + font-size: 12px; + letter-spacing: 0.5px; + color: #34395e; } -.profile-widget .profile-widget-items .profile-widget-item .profile-widget-item-value { - color: #000; - font-weight: 600; - font-size: 16px; +.profile-widget + .profile-widget-items + .profile-widget-item + .profile-widget-item-value { + color: #000; + font-weight: 600; + font-size: 16px; } .profile-widget .profile-widget-description { - padding: 20px; - line-height: 26px; + padding: 20px; + line-height: 26px; } .profile-widget .profile-widget-description .profile-widget-name { - font-size: 16px; - margin-bottom: 10px; - font-weight: 600; + font-size: 16px; + margin-bottom: 10px; + font-weight: 600; } @media (max-width: 575.98px) { - .profile-widget .profile-widget-picture { - left: 50%; - -webkit-transform: translate(-50%, 0); - transform: translate(-50%, 0); - margin: 40px 0; - float: none; - } - .profile-widget .profile-widget-items .profile-widget-item { - border-top: 1px solid #f2f2f2; - } -} -/* 1.18 Select2 */ -.select2-container--default .select2-search--dropdown .select2-search__field:focus { - outline: none; - box-shadow: none; + .profile-widget .profile-widget-picture { + left: 50%; + -webkit-transform: translate(-50%, 0); + transform: translate(-50%, 0); + margin: 40px 0; + float: none; + } + .profile-widget .profile-widget-items .profile-widget-item { + border-top: 1px solid #f2f2f2; + } } -.select2-container .select2-selection--multiple, .select2-container .select2-selection--single { - box-sizing: border-box; - cursor: pointer; - display: block; - min-height: 42px; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-user-select: none; - outline: none; - background-color: #fdfdff; - border-color: #e4e6fc; +/* 1.18 Select2 +/* .select2-container--default + .select2-search--dropdown + .select2-search__field:focus { + outline: none; + box-shadow: none; +} + +.select2-container .select2-selection--multiple, +.select2-container .select2-selection--single { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 42px; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-user-select: none; + outline: none; + background-color: #fdfdff; + border-color: #e4e6fc; } .select2-dropdown { - border-color: #e4e6fc !important; + border-color: #e4e6fc !important; } .select2-container.select2-container--open .select2-selection--multiple { - background-color: #fefeff; - border-color: #95a0f4; + background-color: #fefeff; + border-color: #95a0f4; } -.select2-container.select2-container--focus .select2-selection--multiple, .select2-container.select2-container--focus .select2-selection--single { - background-color: #fefeff; - border-color: #95a0f4; +.select2-container.select2-container--focus .select2-selection--multiple, +.select2-container.select2-container--focus .select2-selection--single { + background-color: #fefeff; + border-color: #95a0f4; } .select2-container.select2-container--open .select2-selection--single { - background-color: #fefeff; - border-color: #95a0f4; + background-color: #fefeff; + border-color: #95a0f4; } .select2-results__option { - padding: 10px; + padding: 10px; } .select2-search--dropdown .select2-search__field { - padding: 7px; + padding: 7px; } -.select2-container--default .select2-selection--single .select2-selection__rendered { - min-height: 42px; - line-height: 42px; - padding-left: 20px; - padding-right: 20px; +.select2-container--default + .select2-selection--single + .select2-selection__rendered { + min-height: 42px; + line-height: 42px; + padding-left: 20px; + padding-right: 20px; } -.select2-container--default .select2-selection--multiple .select2-selection__arrow, .select2-container--default .select2-selection--single .select2-selection__arrow { - position: absolute; - top: 1px; - right: 1px; - width: 40px; - min-height: 42px; +.select2-container--default + .select2-selection--multiple + .select2-selection__arrow, +.select2-container--default + .select2-selection--single + .select2-selection__arrow { + position: absolute; + top: 1px; + right: 1px; + width: 40px; + min-height: 42px; } -.select2-container--default .select2-selection--multiple .select2-selection__choice { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - color: #fff; - padding-left: 10px; - padding-right: 10px; +.select2-container--default + .select2-selection--multiple + .select2-selection__choice { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + color: #fff; + padding-left: 10px; + padding-right: 10px; } -.select2-container--default .select2-selection--multiple .select2-selection__rendered { - padding-left: 10px; - padding-right: 10px; +.select2-container--default + .select2-selection--multiple + .select2-selection__rendered { + padding-left: 10px; + padding-right: 10px; } -.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - margin-right: 5px; - color: #fff; +.select2-container--default + .select2-selection--multiple + .select2-selection__choice__remove { + margin-right: 5px; + color: #fff; } -.select2-container--default .select2-selection--multiple .select2-selection__choice, -.select2-container--default .select2-results__option[aria-selected=true], -.select2-container--default .select2-results__option--highlighted[aria-selected] { - background-color: #6777ef; - color: #fff; +.select2-container--default + .select2-selection--multiple + .select2-selection__choice, +.select2-container--default .select2-results__option[aria-selected="true"], +.select2-container--default + .select2-results__option--highlighted[aria-selected] { + background-color: #6777ef; + color: #fff; } .select2-results__option { - padding-right: 10px 15px; + padding-right: 10px 15px; } +*/ /* 1.19 Selectric */ .selectric { - background-color: #fdfdff; - border-color: #e4e6fc; - min-height: 42px; - border-radius: 3px; - padding-left: 10px; - padding-right: 10px; + background-color: #fdfdff; + border-color: #e4e6fc; + min-height: 42px; + border-radius: 3px; + padding-left: 10px; + padding-right: 10px; } .selectric:hover { - background-color: #fdfdff; - border-color: #e4e6fc; + background-color: #fdfdff; + border-color: #e4e6fc; } .selectric:focus { - background-color: #fefeff; - border-color: #95a0f4; + background-color: #fefeff; + border-color: #95a0f4; } .selectric .label { - font-size: 13px; - background-color: transparent; - line-height: 44px; - min-height: 42px; + font-size: 13px; + background-color: transparent; + line-height: 44px; + min-height: 42px; } .selectric .button { - background-color: transparent; - line-height: 44px; - min-height: 42px; + background-color: transparent; + line-height: 44px; + min-height: 42px; } .selectric-open .selectric { - border-color: #6777ef; + border-color: #6777ef; } -.selectric-above .selectric-items, .selectric-below .selectric-items { - margin-bottom: 10px; +.selectric-above .selectric-items, +.selectric-below .selectric-items { + margin-bottom: 10px; } .selectric-items { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - border-radius: 3px; - background-color: #fff; - border: none; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + border-radius: 3px; + background-color: #fff; + border: none; } .selectric-items li { - font-size: 13px; - padding: 10px 15px; + font-size: 13px; + padding: 10px 15px; } .selectric-items li:hover { - background-color: #f2f2f2; + background-color: #f2f2f2; } -.selectric-items li.selected, .selectric-items li.highlighted { - background-color: #6777ef; - color: #fff; +.selectric-items li.selected, +.selectric-items li.highlighted { + background-color: #6777ef; + color: #fff; } /* 1.20 Slider */ -.slider .owl-nav [class*=owl-] { - position: absolute; - top: 50%; - left: 35px; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - margin: 0; - background-color: #000; - border-radius: 50%; - color: #fff; - width: 40px; - height: 40px; - line-height: 34px; - opacity: 0.3; +.slider .owl-nav [class*="owl-"] { + position: absolute; + top: 50%; + left: 35px; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + margin: 0; + background-color: #000; + border-radius: 50%; + color: #fff; + width: 40px; + height: 40px; + line-height: 34px; + opacity: 0.3; } -.slider .owl-nav [class*=owl-]:hover { - background-color: #000; +.slider .owl-nav [class*="owl-"]:hover { + background-color: #000; } .slider .owl-nav .owl-next { - right: 0; - left: initial; + right: 0; + left: initial; } -.slider:hover .owl-nav [class*=owl-] { - opacity: 1; +.slider:hover .owl-nav [class*="owl-"] { + opacity: 1; } .slider .slider-caption { - position: absolute; - bottom: 10px; - left: 0; - width: 100%; - z-index: 1; - background-color: rgba(0, 0, 0, 0.3); - color: #fff; - padding: 10px; + position: absolute; + bottom: 10px; + left: 0; + width: 100%; + z-index: 1; + background-color: rgba(0, 0, 0, 0.3); + color: #fff; + padding: 10px; } .slider .slider-caption .slider-title { - font-size: 16px; - font-weight: 700; - margin-bottom: 5px; + font-size: 16px; + font-weight: 700; + margin-bottom: 5px; } .slider .slider-caption .slider-description { - line-height: 26px; - opacity: 0.8; + line-height: 26px; + opacity: 0.8; } /* 1.21 Sparkline */ .jqstooltip { - box-sizing: content-box; + box-sizing: content-box; } -.sparkline-bar, .sparkline-line, .sparkline-inline { - width: 100%; +.sparkline-bar, +.sparkline-line, +.sparkline-inline { + width: 100%; } -.sparkline-bar canvas, .sparkline-line canvas, .sparkline-inline canvas { - width: 100% !important; +.sparkline-bar canvas, +.sparkline-line canvas, +.sparkline-inline canvas { + width: 100% !important; } /* 1.22 Statistics */ .statistic-details { - display: flex; - flex-wrap: wrap; + display: flex; + flex-wrap: wrap; } .statistic-details .statistic-details-item { - flex: 1; - padding: 17px 10px; - text-align: center; + flex: 1; + padding: 17px 10px; + text-align: center; } .statistic-details .statistic-details-item .detail-chart { - margin-bottom: 10px; - padding: 0 20px; + margin-bottom: 10px; + padding: 0 20px; } .statistic-details .statistic-details-item .detail-name { - font-size: 12px; - margin-top: 5px; - color: #34395e; - letter-spacing: 0.3px; + font-size: 12px; + margin-top: 5px; + color: #34395e; + letter-spacing: 0.3px; } .statistic-details .statistic-details-item .detail-value { - font-size: 18px; - font-weight: 700; + font-size: 18px; + font-weight: 700; } @media (max-width: 575.98px) { - .statistic-details { - flex-wrap: wrap; - } - .statistic-details .statistic-details-item { - flex: initial; - width: 50%; - } + .statistic-details { + flex-wrap: wrap; + } + .statistic-details .statistic-details-item { + flex: initial; + width: 50%; + } } /* 1.23 Summary */ .summary { - display: inline-block; - width: 100%; + display: inline-block; + width: 100%; } .summary .summary-info { - background-color: #eaf2f4; - padding: 50px 0; - text-align: center; - border-radius: 3px; + background-color: #eaf2f4; + padding: 50px 0; + text-align: center; + border-radius: 3px; } .summary .summary-info h4 { - font-weight: 600; + font-weight: 600; } .summary .summary-item { - margin-top: 20px; + margin-top: 20px; } .summary .summary-item h6 { - font-size: 12px; - font-weight: 600; - margin-top: 5px; - margin-bottom: 20px; + font-size: 12px; + font-weight: 600; + margin-top: 5px; + margin-bottom: 20px; } /* 1.24 Summernote */ .note-editor.note-frame { - border-radius: 3px; - border: 1px solid #ededed; - box-shadow: none; + border-radius: 3px; + border: 1px solid #ededed; + box-shadow: none; } .note-toolbar { - padding: 0 0 5px 5px !important; - position: relative !important; + padding: 0 0 5px 5px !important; + position: relative !important; } .note-toolbar.card-header { - height: auto; - display: block; - min-height: auto; + height: auto; + display: block; + min-height: auto; } .note-toolbar .note-btn { - font-size: 12px; - background-color: transparent; - box-shadow: none; - border-color: transparent; + font-size: 12px; + background-color: transparent; + box-shadow: none; + border-color: transparent; } /* 1.25 Sweet Alert */ .swal-button { - border-radius: 3px; - font-size: 16px; + border-radius: 3px; + font-size: 16px; } .swal-button:focus { - box-shadow: none; + box-shadow: none; } .swal-button.swal-button--confirm { - box-shadow: 0 2px 6px #acb5f6; - background-color: #6777ef; + box-shadow: 0 2px 6px #acb5f6; + background-color: #6777ef; } .swal-button.swal-button--confirm:focus { - opacity: 0.8; + opacity: 0.8; } .swal-footer { - text-align: center; + text-align: center; } .swal-text { - text-align: center; - line-height: 24px; - font-weight: 500; + text-align: center; + line-height: 24px; + font-weight: 500; } /* 1.26 Tags Input */ .bootstrap-tagsinput { - background-color: #fdfdff; - border-color: #e4e6fc; - display: block; - height: 46px; - box-shadow: none; - overflow: auto; + background-color: #fdfdff; + border-color: #e4e6fc; + display: block; + height: 46px; + box-shadow: none; + overflow: auto; } .bootstrap-tagsinput input { - height: 100%; - padding: 0 8px; + height: 100%; + padding: 0 8px; } .bootstrap-tagsinput .tag { - background-color: #6777ef; - border-radius: 3px; - padding: 5px 10px; + background-color: #6777ef; + border-radius: 3px; + padding: 5px 10px; } .bootstrap-tagsinput .tag:first-child { - margin-left: 5px; + margin-left: 5px; } .bootstrap-tagsinput:focus { - background-color: #fefeff; - border-color: #95a0f4; + background-color: #fefeff; + border-color: #95a0f4; } /* 1.27 Time Picker */ .bootstrap-timepicker-widget table td a span { - margin-left: 0 !important; + margin-left: 0 !important; } /* 1.28 Toast */ #toast-container > div { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - padding: 20px 20px 20px 50px; - opacity: 1; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + padding: 20px 20px 20px 50px; + opacity: 1; } #toast-container > .toast { - background-image: none !important; + background-image: none !important; } #toast-container > .toast:before { - position: absolute; - left: 17px; - top: 25px; - font-family: "Ionicons"; - font-size: 24px; - line-height: 18px; - color: #fff; + position: absolute; + left: 17px; + top: 25px; + font-family: "Ionicons"; + font-size: 24px; + line-height: 18px; + color: #fff; } #toast-container > .toast-warning:before { - content: ""; + content: ""; } #toast-container > .toast-error:before { - content: ""; + content: ""; } #toast-container > .toast-info:before { - content: ""; - color: #000; + content: ""; + color: #000; } #toast-container > .toast-success:before { - content: ""; + content: ""; } .toast.toast-error { - background-color: #fc544b; + background-color: #fc544b; } .toast.toast-warning { - background-color: #ffa426; + background-color: #ffa426; } .toast.toast-success { - background-color: #63ed7a; + background-color: #63ed7a; } .toast.toast-info { - background-color: #fff; + background-color: #fff; } .toast.toast-info .toast-title { - color: #000; + color: #000; } .toast.toast-info .toast-message { - color: #000; - margin-top: 5px; + color: #000; + margin-top: 5px; } /* 1.29 User Item */ .user-item { - text-align: center; + text-align: center; } .user-item img { - border-radius: 50%; - padding-left: 20px; - padding-right: 20px; + border-radius: 50%; + padding-left: 20px; + padding-right: 20px; } .user-item .user-details { - margin-top: 10px; + margin-top: 10px; } .user-item .user-details .user-name { - font-weight: 600; - color: #191d21; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + font-weight: 600; + color: #191d21; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .user-item .user-details .user-cta { - margin-top: 10px; + margin-top: 10px; } .user-item .user-details .user-cta .btn { - padding: 5px 15px; - font-size: 12px; - border-radius: 30px; + padding: 5px 15px; + font-size: 12px; + border-radius: 30px; } @media (max-width: 575.98px) { - .user-progress .media, .user-details .media { - text-align: center; - display: inline-block; - width: 100%; - } + .user-progress .media, + .user-details .media { + text-align: center; + display: inline-block; + width: 100%; + } - .user-progress .media img, .user-details .media img { - margin: 0 !important; - margin-bottom: 10px !important; - } + .user-progress .media img, + .user-details .media img { + margin: 0 !important; + margin-bottom: 10px !important; + } - .user-progress .media .media-body, .user-details .media .media-body { - width: 100%; - } + .user-progress .media .media-body, + .user-details .media .media-body { + width: 100%; + } - .user-progress .media .media-items, .user-details .media .media-items { - margin: 20px 0; - width: 100%; - } + .user-progress .media .media-items, + .user-details .media .media-items { + margin: 20px 0; + width: 100%; + } - .user-progress .list-unstyled-noborder li:last-child, .user-details .list-unstyled-noborder li:last-child { - margin-bottom: 0; - padding-bottom: 0; - } + .user-progress .list-unstyled-noborder li:last-child, + .user-details .list-unstyled-noborder li:last-child { + margin-bottom: 0; + padding-bottom: 0; + } - .user-progress .media .media-progressbar { - margin-top: 10px; - } - .user-progress .media .media-cta { - margin-top: 20px; - margin-left: 0; - } + .user-progress .media .media-progressbar { + margin-top: 10px; + } + .user-progress .media .media-cta { + margin-top: 20px; + margin-left: 0; + } } /* 1.30 Weather */ .weather .weather-icon { - float: left; - width: 150px; - text-align: center; - line-height: 40px; + float: left; + width: 150px; + text-align: center; + line-height: 40px; } .weather .weather-icon span { - font-size: 60px; - margin-top: 30px; + font-size: 60px; + margin-top: 30px; } .weather .weather-desc { - margin-left: 160px; + margin-left: 160px; } .weather .weather-desc h4 { - font-size: 70px; - font-weight: 200; - margin: 0; - margin-top: 30px; - margin-bottom: 5px; - line-height: 56px; + font-size: 70px; + font-weight: 200; + margin: 0; + margin-top: 30px; + margin-bottom: 5px; + line-height: 56px; } .weather .weather-desc .weather-text { - font-size: 12px; - color: #34395e; - font-weight: 600; - letter-spacing: 1px; - text-transform: uppercase; - margin-top: 10px; + font-size: 12px; + color: #34395e; + font-weight: 600; + letter-spacing: 1px; + text-transform: uppercase; + margin-top: 10px; } .weather .weather-desc ul { - margin: 15px 0 13px 0; - padding: 0; + margin: 15px 0 13px 0; + padding: 0; } .weather ul li { - display: inline-block; - margin-right: 10px; - padding: 10px; - line-height: 1; - border-radius: 3px; - border: 2px solid #6777ef; - font-size: 10px; - font-weight: 500; - color: #6777ef; - text-transform: uppercase; - letter-spacing: 1px; - margin-bottom: 10px; + display: inline-block; + margin-right: 10px; + padding: 10px; + line-height: 1; + border-radius: 3px; + border: 2px solid #6777ef; + font-size: 10px; + font-weight: 500; + color: #6777ef; + text-transform: uppercase; + letter-spacing: 1px; + margin-bottom: 10px; } @media (max-width: 575.98px) { - .weather { - text-align: center; - } - .weather .weather-icon { - float: none; - width: auto; - } - .weather .weather-icon span { - margin-top: 20px; - } - .weather .weather-desc { - margin-left: 0; - } + .weather { + text-align: center; + } + .weather .weather-icon { + float: none; + width: auto; + } + .weather .weather-icon span { + margin-top: 20px; + } + .weather .weather-desc { + margin-left: 0; + } } /* 1.31 Weather Icon */ .icon-wrap { - display: inline-block; - padding-left: 15px; - padding-right: 15px; - margin-bottom: 25px; - width: calc(100% / 4); + display: inline-block; + padding-left: 15px; + padding-right: 15px; + margin-bottom: 25px; + width: calc(100% / 4); } .icon-wrap .icon { - float: left; - width: 40px; - font-family: "weathericons"; - font-size: 20px; + float: left; + width: 40px; + font-family: "weathericons"; + font-size: 20px; } .icon-wrap .icon_unicode { - width: 100%; - padding-left: 45px; - color: #34395e; + width: 100%; + padding-left: 45px; + color: #34395e; } .new-icons ul { - padding: 0; - margin: 0; - list-style: none; + padding: 0; + margin: 0; + list-style: none; } .new-icons ul li { - padding: 10px; + padding: 10px; } -.icon-wrap .icon, .new-icons ul li .wi { - font-size: 24px; - margin-right: 15px; - width: 30px; - text-align: center; +.icon-wrap .icon, +.new-icons ul li .wi { + font-size: 24px; + margin-right: 15px; + width: 30px; + text-align: center; } /* 1.32 PWStrength */ .pwindicator { - margin-top: 4px; - width: 150px; + margin-top: 4px; + width: 150px; } .pwindicator .bar { - height: 2px; + height: 2px; } .pw-very-weak .bar { - background: #d00; - width: 30px; + background: #d00; + width: 30px; } .pw-very-weak .label { - color: #d00; + color: #d00; } .pw-weak .bar { - background: #d00; - width: 60px; + background: #d00; + width: 60px; } .pw-weak .label { - color: #d00; + color: #d00; } .pw-mediocre .bar { - background: #f3f01a; - width: 90px; + background: #f3f01a; + width: 90px; } .pw-mediocre .label { - color: #f3f01a; + color: #f3f01a; } .pw-strong .bar { - background: #f3b31a; - width: 120px; + background: #f3b31a; + width: 120px; } .pw-strong .label { - color: #f3b31a; + color: #f3b31a; } .pw-very-strong .bar { - background: #0d0; - width: 150px; + background: #0d0; + width: 150px; } .pw-very-strong .label { - color: #0d0; + color: #0d0; } /* 1.33 Product */ .product-item { - text-align: center; + text-align: center; } .product-item .product-image { - display: inline-block; - overflow: hidden; - width: 80px; - height: 80px; - border-radius: 3px; - margin-bottom: 10px; + display: inline-block; + overflow: hidden; + width: 80px; + height: 80px; + border-radius: 3px; + margin-bottom: 10px; } .product-item .product-name { - color: #34395e; - font-weight: 700; - margin-bottom: 3px; + color: #34395e; + font-weight: 700; + margin-bottom: 3px; } .product-item .product-review { - color: #ffa426; - margin-bottom: 3px; + color: #ffa426; + margin-bottom: 3px; } .product-item .product-cta { - margin-top: 5px; + margin-top: 5px; } .product-item .product-cta a { - margin-top: 10px; - padding-left: 15px; - padding-right: 15px; + margin-top: 10px; + padding-left: 15px; + padding-right: 15px; } /* 1.34 Ticket */ .tickets-list .ticket-item { - text-decoration: none; - display: inline-block; - width: 100%; - padding: 20px; - border-bottom: 1px solid #f9f9f9; + text-decoration: none; + display: inline-block; + width: 100%; + padding: 20px; + border-bottom: 1px solid #f9f9f9; } .tickets-list .ticket-item.ticket-more { - padding: 15px; - text-align: center; - font-weight: 600; - font-size: 12px; + padding: 15px; + text-align: center; + font-weight: 600; + font-size: 12px; } .tickets-list .ticket-item .ticket-title h4 { - font-size: 16px; - font-weight: 700; + font-size: 16px; + font-weight: 700; } .tickets-list .ticket-item .ticket-info { - display: flex; - font-size: 12px; - font-weight: 500; - color: #34395e; - letter-spacing: 0.5px; + display: flex; + font-size: 12px; + font-weight: 500; + color: #34395e; + letter-spacing: 0.5px; } .tickets-list .ticket-item .ticket-info .bullet { - margin: 0 10px; + margin: 0 10px; } .tickets { - display: flex; + display: flex; } .tickets .ticket-items { - width: 30%; - padding-right: 30px; + width: 30%; + padding-right: 30px; } .tickets .ticket-items .ticket-item { - display: inline-block; - width: 100%; - padding: 25px 15px; - border-bottom: 1px solid #f9f9f9; - cursor: pointer; - transition: all 0.5s; + display: inline-block; + width: 100%; + padding: 25px 15px; + border-bottom: 1px solid #f9f9f9; + cursor: pointer; + transition: all 0.5s; } .tickets .ticket-items .ticket-item:hover { - background-color: rgba(63, 82, 227, 0.03); + background-color: rgba(63, 82, 227, 0.03); } .tickets .ticket-items .ticket-item:hover .ticket-title { - color: #6777ef; + color: #6777ef; } .tickets .ticket-items .ticket-item.active { - box-shadow: 0 2px 6px #acb5f6; - border-radius: 3px; - background-color: #6777ef; - border-bottom: none; + box-shadow: 0 2px 6px #acb5f6; + border-radius: 3px; + background-color: #6777ef; + border-bottom: none; } -.tickets .ticket-items .ticket-item.active .ticket-title, .tickets .ticket-items .ticket-item.active .ticket-desc { - color: #fff !important; +.tickets .ticket-items .ticket-item.active .ticket-title, +.tickets .ticket-items .ticket-item.active .ticket-desc { + color: #fff !important; } .tickets .ticket-items .ticket-item .ticket-title h4 { - font-size: 13px; - letter-spacing: 0.3px; + font-size: 13px; + letter-spacing: 0.3px; } .tickets .ticket-items .ticket-item .ticket-title h4 .badge { - padding: 7px 10px; - margin-left: 5px; + padding: 7px 10px; + margin-left: 5px; } .tickets .ticket-items .ticket-item .ticket-desc { - display: flex; - font-size: 11px; - font-weight: 500; - color: #34395e; - letter-spacing: 0.5px; + display: flex; + font-size: 11px; + font-weight: 500; + color: #34395e; + letter-spacing: 0.5px; } .tickets .ticket-items .ticket-item .ticket-desc .bullet { - margin: 0 10px; + margin: 0 10px; } .tickets .ticket-content { - width: 70%; + width: 70%; } .tickets .ticket-content .ticket-header { - display: flex; + display: flex; } .tickets .ticket-content .ticket-header .ticket-sender-picture { - width: 50px; - height: 50px; - border-radius: 3px; - overflow: hidden; - margin-right: 20px; + width: 50px; + height: 50px; + border-radius: 3px; + overflow: hidden; + margin-right: 20px; } .tickets .ticket-content .ticket-header .ticket-sender-picture img { - width: 100%; + width: 100%; } .tickets .ticket-content .ticket-header .ticket-detail .ticket-title h4 { - font-size: 18px; - font-weight: 700; + font-size: 18px; + font-weight: 700; } .tickets .ticket-content .ticket-header .ticket-detail .ticket-info { - display: flex; - letter-spacing: 0.3px; - font-size: 12px; - font-weight: 500; - color: #34395e; + display: flex; + letter-spacing: 0.3px; + font-size: 12px; + font-weight: 500; + color: #34395e; } .tickets .ticket-content .ticket-header .ticket-detail .ticket-info .bullet { - margin: 0 10px; + margin: 0 10px; } .tickets .ticket-divider { - height: 1px; - width: 100%; - display: inline-block; - background-color: #f2f2f2; + height: 1px; + width: 100%; + display: inline-block; + background-color: #f2f2f2; } .tickets .ticket-description { - color: #34395e; - font-weight: 500; - margin-top: 30px; - line-height: 28px; + color: #34395e; + font-weight: 500; + margin-top: 30px; + line-height: 28px; } .tickets .ticket-description p { - margin-bottom: 20px; + margin-bottom: 20px; } .tickets .ticket-description .ticket-form { - margin-top: 40px; + margin-top: 40px; } .tickets .ticket-description .ticket-form .note-editable { - color: #34395e; - font-weight: 500; + color: #34395e; + font-weight: 500; } .tickets .ticket-description .ticket-form .note-editable p { - margin-bottom: 5px; + margin-bottom: 5px; } @media (min-width: 576px) and (max-width: 767.98px) { - .tickets { - display: inline-block; - } - .tickets .ticket-items { - width: 100%; - margin-bottom: 30px; - padding: 0; - display: none; - } - .tickets .ticket-content { - width: 100%; - } + .tickets { + display: inline-block; + } + .tickets .ticket-items { + width: 100%; + margin-bottom: 30px; + padding: 0; + display: none; + } + .tickets .ticket-content { + width: 100%; + } } @media (min-width: 768px) and (max-width: 991.98px) { - .tickets { - flex-wrap: wrap; - margin: 0 -15px; - } - .tickets .ticket-items { - width: 100%; - display: flex; - flex-wrap: nowrap; - padding: 0; - margin-bottom: 15px; - padding: 15px; - overflow: auto; - } - .tickets .ticket-items .ticket-item { - flex-basis: 50%; - flex-grow: 0; - flex-shrink: 0; - } - .tickets .ticket-content { - margin: 15px; - width: 100%; - } + .tickets { + flex-wrap: wrap; + margin: 0 -15px; + } + .tickets .ticket-items { + width: 100%; + display: flex; + flex-wrap: nowrap; + padding: 0; + margin-bottom: 15px; + padding: 15px; + overflow: auto; + } + .tickets .ticket-items .ticket-item { + flex-basis: 50%; + flex-grow: 0; + flex-shrink: 0; + } + .tickets .ticket-content { + margin: 15px; + width: 100%; + } } /* 1.35 Owl Carousel */ .owl-theme .owl-item { - padding: 10px 0; + padding: 10px 0; } .owl-theme .owl-dots { - margin-top: 20px !important; + margin-top: 20px !important; } .owl-theme .owl-dots .owl-dot.active span { - background-color: #6777ef; + background-color: #6777ef; } /* 1.36 Activities */ .activities { - display: flex; - flex-wrap: wrap; + display: flex; + flex-wrap: wrap; } .activities .activity { - width: 100%; - display: flex; - position: relative; + width: 100%; + display: flex; + position: relative; } .activities .activity:before { - content: " "; - position: absolute; - left: 25px; - top: 0; - width: 2px; - height: 100%; - background-color: #6777ef; + content: " "; + position: absolute; + left: 25px; + top: 0; + width: 2px; + height: 100%; + background-color: #6777ef; } .activities .activity:last-child:before { - display: none; + display: none; } .activities .activity .activity-icon { - width: 50px; - height: 50px; - border-radius: 3px; - line-height: 50px; - font-size: 20px; - text-align: center; - margin-right: 20px; - border-radius: 50%; - flex-shrink: 0; - text-align: center; - z-index: 1; + width: 50px; + height: 50px; + border-radius: 3px; + line-height: 50px; + font-size: 20px; + text-align: center; + margin-right: 20px; + border-radius: 50%; + flex-shrink: 0; + text-align: center; + z-index: 1; } .activities .activity .activity-detail { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - background-color: #fff; - border-radius: 3px; - border: none; - position: relative; - margin-bottom: 30px; - position: relative; - padding: 15px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; + position: relative; + padding: 15px; } .activities .activity .activity-detail:before { - content: ""; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - font-size: 20px; - position: absolute; - left: -8px; - color: #fff; + content: ""; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + font-size: 20px; + position: absolute; + left: -8px; + color: #fff; } .activities .activity .activity-detail h4 { - font-size: 18px; - color: #191d21; + font-size: 18px; + color: #191d21; } .activities .activity .activity-detail p { - margin-bottom: 0; + margin-bottom: 0; } /* 1.37 Activities */ .invoice { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - background-color: #fff; - border-radius: 3px; - border: none; - position: relative; - margin-bottom: 30px; - padding: 40px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; + padding: 40px; } .invoice .invoice-title .invoice-number { - float: right; - font-size: 20px; - font-weight: 700; - margin-top: -45px; + float: right; + font-size: 20px; + font-weight: 700; + margin-top: -45px; } .invoice hr { - margin-top: 40px; - margin-bottom: 40px; - border-top-color: #f9f9f9; + margin-top: 40px; + margin-bottom: 40px; + border-top-color: #f9f9f9; } .invoice .invoice-detail-item { - margin-bottom: 15px; + margin-bottom: 15px; } .invoice .invoice-detail-item .invoice-detail-name { - letter-spacing: 0.3px; - color: #98a6ad; - margin-bottom: 4px; + letter-spacing: 0.3px; + color: #98a6ad; + margin-bottom: 4px; } .invoice .invoice-detail-item .invoice-detail-value { - font-size: 18px; - color: #34395e; - font-weight: 700; + font-size: 18px; + color: #34395e; + font-weight: 700; } .invoice .invoice-detail-item .invoice-detail-value.invoice-detail-value-lg { - font-size: 24px; + font-size: 24px; } @media (min-width: 768px) and (max-width: 991.98px) { - .table-invoice table { - min-width: 800px; - } + .table-invoice table { + min-width: 800px; + } } /* 1.38 Empty States */ .empty-state { - text-align: center; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - padding: 40px; + text-align: center; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 40px; } .empty-state .empty-state-icon { - position: relative; - background-color: #6777ef; - width: 80px; - height: 80px; - line-height: 100px; - border-radius: 5px; + position: relative; + background-color: #6777ef; + width: 80px; + height: 80px; + line-height: 100px; + border-radius: 5px; } .empty-state .empty-state-icon i { - font-size: 40px; - color: #fff; - position: relative; - z-index: 1; + font-size: 40px; + color: #fff; + position: relative; + z-index: 1; } .empty-state h2 { - font-size: 20px; - margin-top: 30px; + font-size: 20px; + margin-top: 30px; } .empty-state p { - font-size: 16px; + font-size: 16px; } /* 1.39 Pricing */ .pricing { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - background-color: #fff; - border-radius: 3px; - border: none; - position: relative; - margin-bottom: 30px; - text-align: center; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; + text-align: center; } .pricing.pricing-highlight .pricing-title { - background-color: #6777ef; - color: #fff; + background-color: #6777ef; + color: #fff; } .pricing.pricing-highlight .pricing-cta a { - background-color: #6777ef; - color: #fff; + background-color: #6777ef; + color: #fff; } .pricing.pricing-highlight .pricing-cta a:hover { - background-color: #394eea !important; + background-color: #394eea !important; } .pricing .pricing-padding { - padding: 40px; + padding: 40px; } .pricing .pricing-title { - font-size: 10px; - font-weight: 700; - text-transform: uppercase; - letter-spacing: 2.5px; - background-color: #f3f6f8; - color: #6777ef; - border-radius: 0 0 3px 3px; - display: inline-block; - padding: 5px 15px; + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 2.5px; + background-color: #f3f6f8; + color: #6777ef; + border-radius: 0 0 3px 3px; + display: inline-block; + padding: 5px 15px; } .pricing .pricing-price { - margin-bottom: 45px; + margin-bottom: 45px; } .pricing .pricing-price div:first-child { - font-weight: 600; - font-size: 50px; + font-weight: 600; + font-size: 50px; } .pricing .pricing-details { - text-align: left; - display: inline-block; + text-align: left; + display: inline-block; } .pricing .pricing-details .pricing-item { - display: flex; - margin-bottom: 15px; + display: flex; + margin-bottom: 15px; } .pricing .pricing-details .pricing-item .pricing-item-icon { - width: 20px; - height: 20px; - line-height: 20px; - border-radius: 50%; - text-align: center; - background-color: #63ed7a; - color: #fff; - margin-right: 10px; + width: 20px; + height: 20px; + line-height: 20px; + border-radius: 50%; + text-align: center; + background-color: #63ed7a; + color: #fff; + margin-right: 10px; } .pricing .pricing-details .pricing-item .pricing-item-icon i { - font-size: 11px; + font-size: 11px; } .pricing .pricing-cta { - margin-top: 20px; + margin-top: 20px; } .pricing .pricing-cta a { - display: block; - padding: 20px 40px; - background-color: #f3f6f8; - text-transform: uppercase; - letter-spacing: 2.5px; - font-size: 14px; - font-weight: 700; - text-decoration: none; - border-radius: 0 0 3px 3px; + display: block; + padding: 20px 40px; + background-color: #f3f6f8; + text-transform: uppercase; + letter-spacing: 2.5px; + font-size: 14px; + font-weight: 700; + text-decoration: none; + border-radius: 0 0 3px 3px; } -.pricing .pricing-cta a .fas, .pricing .pricing-cta a .far, .pricing .pricing-cta a .fab, .pricing .pricing-cta a .fal, .pricing .pricing-cta a .ion { - margin-left: 5px; +.pricing .pricing-cta a .fas, +.pricing .pricing-cta a .far, +.pricing .pricing-cta a .fab, +.pricing .pricing-cta a .fal, +.pricing .pricing-cta a .ion { + margin-left: 5px; } .pricing .pricing-cta a:hover { - background-color: #e3eaef; + background-color: #e3eaef; } /* 1.40 Hero */ .hero { - border-radius: 3px; - padding: 55px; - display: flex; - justify-content: center; - flex-direction: column; - position: relative; + border-radius: 3px; + padding: 55px; + display: flex; + justify-content: center; + flex-direction: column; + position: relative; } .hero.hero-bg-image { - background-position: center; - background-size: cover; + background-position: center; + background-size: cover; } .hero.hero-bg-image:before { - content: " "; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - z-index: 0; - border-radius: 3px; + content: " "; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 0; + border-radius: 3px; } .hero.hero-bg-image.hero-bg-parallax { - background-attachment: fixed; + background-attachment: fixed; } .hero .hero-inner { - position: relative; - z-index: 1; + position: relative; + z-index: 1; } .hero h2 { - font-size: 24px; + font-size: 24px; } .hero p { - margin-bottom: 0; - font-size: 16px; - letter-spacing: 0.3px; + margin-bottom: 0; + font-size: 16px; + letter-spacing: 0.3px; } /* 1.41 Avatar */ @@ -1896,187 +1961,191 @@ tr:first-child > td > .fc-day-grid-event { * Thanks to Spectre.css */ .avatar { - background: #6777ef; - border-radius: 50%; - color: #e3eaef; - display: inline-block; - font-size: 16px; - font-weight: 300; - margin: 0; - position: relative; - vertical-align: middle; - line-height: 1.28; - height: 45px; - width: 45px; + background: #6777ef; + border-radius: 50%; + color: #e3eaef; + display: inline-block; + font-size: 16px; + font-weight: 300; + margin: 0; + position: relative; + vertical-align: middle; + line-height: 1.28; + height: 45px; + width: 45px; } .avatar.avatar-xs { - font-size: 6px; - height: 15px; - width: 15px; + font-size: 6px; + height: 15px; + width: 15px; } .avatar.avatar-sm { - font-size: 12px; - height: 30px; - width: 30px; + font-size: 12px; + height: 30px; + width: 30px; } .avatar.avatar-lg { - font-size: 23px; - height: 60px; - width: 60px; + font-size: 23px; + height: 60px; + width: 60px; } .avatar.avatar-xl { - font-size: 30px; - height: 75px; - width: 75px; + font-size: 30px; + height: 75px; + width: 75px; } .avatar img { - border-radius: 50%; - height: 100%; - position: relative; - width: 100%; - z-index: 1; + border-radius: 50%; + height: 100%; + position: relative; + width: 100%; + z-index: 1; } .avatar .avatar-icon { - background: #fff; - bottom: 14.64%; - height: 50%; - padding: 0.1rem; - position: absolute; - right: 14.64%; - transform: translate(50%, 50%); - width: 50%; - z-index: 2; + background: #fff; + bottom: 14.64%; + height: 50%; + padding: 0.1rem; + position: absolute; + right: 14.64%; + transform: translate(50%, 50%); + width: 50%; + z-index: 2; } .avatar .avatar-presence { - background: #fff; - bottom: 14.64%; - height: 50%; - padding: 0.1rem; - position: absolute; - right: 14.64%; - transform: translate(50%, 50%); - width: 50%; - z-index: 2; - background: #bcc3ce; - border-radius: 50%; - box-shadow: 0 0 0 0.1rem #fff; - height: 0.5em; - width: 0.5em; + background: #fff; + bottom: 14.64%; + height: 50%; + padding: 0.1rem; + position: absolute; + right: 14.64%; + transform: translate(50%, 50%); + width: 50%; + z-index: 2; + background: #bcc3ce; + border-radius: 50%; + box-shadow: 0 0 0 0.1rem #fff; + height: 0.5em; + width: 0.5em; } .avatar .avatar-presence.online { - background: #63ed7a; + background: #63ed7a; } .avatar .avatar-presence.busy { - background: #fc544b; + background: #fc544b; } .avatar .avatar-presence.away { - background: #ffa426; + background: #ffa426; } .avatar[data-initial]::before { - color: currentColor; - content: attr(data-initial); - left: 50%; - position: absolute; - top: 50%; - transform: translate(-50%, -50%); - z-index: 1; + color: currentColor; + content: attr(data-initial); + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + z-index: 1; } /* 1.42 Wizard */ .wizard-steps { - display: flex; - margin: 0 -10px; - margin-bottom: 60px; - counter-reset: wizard-counter; + display: flex; + margin: 0 -10px; + margin-bottom: 60px; + counter-reset: wizard-counter; } .wizard-steps .wizard-step { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - background-color: #fff; - border-radius: 3px; - border: none; - position: relative; - margin-bottom: 30px; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05); - padding: 30px; - text-align: center; - flex-grow: 1; - flex-basis: 0; - margin: 0 10px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05); + padding: 30px; + text-align: center; + flex-grow: 1; + flex-basis: 0; + margin: 0 10px; } .wizard-steps .wizard-step:before { - counter-increment: wizard-counter; - content: counter(wizard-counter); - position: absolute; - bottom: -40px; - left: 50%; - transform: translateX(-50%); - width: 20px; - height: 20px; - line-height: 21px; - font-size: 10px; - font-weight: 700; - border-radius: 50%; - background-color: #e3eaef; + counter-increment: wizard-counter; + content: counter(wizard-counter); + position: absolute; + bottom: -40px; + left: 50%; + transform: translateX(-50%); + width: 20px; + height: 20px; + line-height: 21px; + font-size: 10px; + font-weight: 700; + border-radius: 50%; + background-color: #e3eaef; } .wizard-steps .wizard-step.wizard-step-active { - box-shadow: 0 2px 6px #acb5f6; - background-color: #6777ef; - color: #fff; + box-shadow: 0 2px 6px #acb5f6; + background-color: #6777ef; + color: #fff; } .wizard-steps .wizard-step.wizard-step-active:before { - background-color: #6777ef; - color: #fff; + background-color: #6777ef; + color: #fff; } .wizard-steps .wizard-step.wizard-step-success { - background-color: #63ed7a; - color: #fff; + background-color: #63ed7a; + color: #fff; } .wizard-steps .wizard-step.wizard-step-success:before { - background-color: #63ed7a; - color: #fff; + background-color: #63ed7a; + color: #fff; } .wizard-steps .wizard-step.wizard-step-danger { - background-color: #fc544b; - color: #fff; + background-color: #fc544b; + color: #fff; } .wizard-steps .wizard-step.wizard-step-danger:before { - background-color: #fc544b; - color: #fff; + background-color: #fc544b; + color: #fff; } .wizard-steps .wizard-step.wizard-step-warning { - background-color: #ffa426; - color: #fff; + background-color: #ffa426; + color: #fff; } .wizard-steps .wizard-step.wizard-step-warning:before { - background-color: #ffa426; - color: #fff; + background-color: #ffa426; + color: #fff; } .wizard-steps .wizard-step.wizard-step-info { - background-color: #3abaf4; - color: #fff; + background-color: #3abaf4; + color: #fff; } .wizard-steps .wizard-step.wizard-step-info:before { - background-color: #3abaf4; - color: #fff; + background-color: #3abaf4; + color: #fff; } -.wizard-steps .wizard-step .wizard-step-icon .fas, .wizard-steps .wizard-step .wizard-step-icon .far, .wizard-steps .wizard-step .wizard-step-icon .fab, .wizard-steps .wizard-step .wizard-step-icon .fal, .wizard-steps .wizard-step .wizard-step-icon .ion { - font-size: 34px; - margin-bottom: 15px; +.wizard-steps .wizard-step .wizard-step-icon .fas, +.wizard-steps .wizard-step .wizard-step-icon .far, +.wizard-steps .wizard-step .wizard-step-icon .fab, +.wizard-steps .wizard-step .wizard-step-icon .fal, +.wizard-steps .wizard-step .wizard-step-icon .ion { + font-size: 34px; + margin-bottom: 15px; } .wizard-steps .wizard-step .wizard-step-label { - font-size: 10px; - text-transform: uppercase; - letter-spacing: 1px; - font-weight: 700; + font-size: 10px; + text-transform: uppercase; + letter-spacing: 1px; + font-weight: 700; } @media (max-width: 575.98px) { - .wizard-steps { - display: block; - } - .wizard-steps .wizard-step { - margin-bottom: 50px; - } + .wizard-steps { + display: block; + } + .wizard-steps .wizard-step { + margin-bottom: 50px; + } } /*# sourceMappingURL=components.css.map */ diff --git a/public/assets/css/components.min.css b/public/assets/css/components.min.css index 270cece..2e80f29 100644 --- a/public/assets/css/components.min.css +++ b/public/assets/css/components.min.css @@ -1 +1,1873 @@ -.article{box-shadow:0 4px 8px rgba(0,0,0,.03);box-shadow:0 4px 8px rgba(0,0,0,.03);background-color:#fff;border-radius:3px;border:none;position:relative;margin-bottom:30px}.article .article-header{height:170px;position:relative;overflow:hidden}.article .article-header .article-image{background-color:#fbfbfb;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;z-index:-1}.article .article-header .article-title{position:absolute;bottom:0;left:0;width:100%;background:linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.01) 1%, rgba(0, 0, 0, 0.65) 98%, rgba(0, 0, 0, 0.65) 100%);padding:10px}.article .article-header .article-title h2{font-size:16px;line-height:24px}.article .article-header .article-title h2 a{font-weight:700;text-decoration:none;color:#fff}.article .article-details{background-color:#fff;padding:20px;line-height:24px}.article .article-details .article-cta{text-align:center}.article .article-header .article-badge{position:absolute;bottom:10px;left:10px}.article .article-header .article-badge .article-badge-item{padding:7px 15px;font-weight:600;color:#fff;border-radius:30px;font-size:12px}.article .article-header .article-badge .article-badge-item .ion,.article .article-header .article-badge .article-badge-item .fas,.article .article-header .article-badge .article-badge-item .far,.article .article-header .article-badge .article-badge-item .fab,.article .article-header .article-badge .article-badge-item .fal{margin-right:3px}.article.article-style-b .article-details .article-title{margin-bottom:10px}.article.article-style-b .article-details .article-title h2{line-height:22px}.article.article-style-b .article-details .article-title a{font-size:16px;font-weight:600}.article.article-style-b .article-details p{color:#34395e}.article.article-style-b .article-details .article-cta{text-align:right}.article.article-style-c .article-header{height:233px}.article.article-style-c .article-details .article-category{text-transform:uppercase;margin-bottom:5px;letter-spacing:1px;color:#34395e}.article.article-style-c .article-details .article-category a{font-size:10px;color:#34395e;font-weight:700}.article.article-style-c .article-details .article-title{margin-bottom:10px}.article.article-style-c .article-details .article-title h2{line-height:22px}.article.article-style-c .article-details .article-title a{font-size:16px;font-weight:600}.article.article-style-c .article-details p{color:#34395e}.article.article-style-c .article-user{display:inline-block;width:100%;margin-top:20px}.article.article-style-c .article-user img{border-radius:50%;float:left;width:45px;margin-right:15px}.article.article-style-c .article-user .user-detail-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.article.article-style-c .article-user .user-detail-name a{font-weight:700}@media(max-width: 575.98px){.article .article-style-c .article-header{height:225px}}@media(min-width: 768px)and (max-width: 991.98px){.article{margin-bottom:40px}.article .article-header{height:195px !important}.article.article-style-c .article-header{height:155px}}@media(max-width: 1024px){.article.article-style-c .article-header{height:216px}.article .article-header{height:155px}}.author-box .author-box-left{float:left;text-align:center;padding-left:5px}.author-box .author-box-left .btn{padding:5px 15px;font-size:12px;border-radius:30px}.author-box .author-box-picture{width:100px;box-shadow:0 4px 8px rgba(0,0,0,.03)}.author-box .author-box-details{margin-left:135px}.author-box .author-box-name{font-size:18px}.author-box .author-box-name a{font-weight:600}.author-box .author-box-job{font-weight:600;letter-spacing:.5px;font-size:12px;color:#34395e}.author-box .author-box-description{line-height:26px;margin-top:15px}@media(max-width: 575.98px){.author-box .author-box-left{float:none}.author-box .author-box-details{margin-left:0;margin-top:15px;text-align:center}}.avatar-item{position:relative;margin-bottom:20px}.avatar-item img{border-radius:50%}.avatar-item .avatar-badge{position:absolute;bottom:-5px;right:0;background-color:#fff;color:#000;box-shadow:0 4px 8px rgba(0,0,0,.03);border-radius:50%;text-align:center;line-height:25px;width:25px;height:25px}.browser{display:inline-block;width:60px;height:60px;background-size:100%}.browser.browser-chrome{background-image:url("../img/browsers/chrome.png")}.browser.browser-firefox{background-image:url("../img/browsers/firefox.png")}.browser.browser-internet-explorer{background-image:url("../img/browsers/internet-explorer.png")}.browser.browser-opera{background-image:url("../img/browsers/opera.png")}.browser.browser-safari{background-image:url("../img/browsers/safari.png")}.chat-box .chat-content{background-color:#f9f9f9 !important;height:300px;overflow:hidden;padding-top:25px !important}.chat-box .chat-content .chat-item{display:inline-block;width:100%;margin-bottom:25px}.chat-box .chat-content .chat-item.chat-right img{float:right}.chat-box .chat-content .chat-item.chat-right .chat-details{margin-left:0;margin-right:70px;text-align:right}.chat-box .chat-content .chat-item.chat-right .chat-details .chat-text{text-align:left;background-color:#6777ef;color:#fff}.chat-box .chat-content .chat-item > img{float:left;width:50px;border-radius:50%}.chat-box .chat-content .chat-item .chat-details{margin-left:70px}.chat-box .chat-content .chat-item .chat-details .chat-text{box-shadow:0 4px 8px rgba(0,0,0,.03);background-color:#fff;padding:10px 15px;border-radius:3px;width:auto;display:inline-block;font-size:12px}.chat-box .chat-content .chat-item .chat-details .chat-text img{max-width:100%;margin-bottom:10px}.chat-box .chat-content .chat-item.chat-typing .chat-details .chat-text{background-image:url("../img/typing.svg");height:40px;width:60px;background-position:center;background-size:60%;background-repeat:no-repeat}.chat-box .chat-content .chat-item .chat-details .chat-time{margin-top:5px;font-size:12px;font-weight:500;opacity:.6}.chat-box .chat-form{padding:0;position:relative}.chat-box .chat-form .form-control{border:none;padding:15px;height:50px;padding-right:70px;font-size:13px;font-weight:500;box-shadow:none;outline:none}.chat-box .chat-form .btn{padding:0;width:40px;height:40px;border-radius:50%;position:absolute;top:50%;right:-5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);box-shadow:0 4px 8px rgba(0,0,0,.03)}.chat-box .chat-form .btn i{margin-left:0}.chocolat-wrapper{z-index:890}.chocolat-overlay{background-color:#000}[data-tab-group]{display:none}[data-tab-group].active{display:block}table.dataTable{border-collapse:collapse !important}table.dataTable thead th,table.dataTable thead td{border-bottom:1px solid #ddd !important}table.dataTable.no-footer{border-bottom:1px solid #ddd !important}.dataTables_wrapper{padding:0 !important;font-size:13px !important}.dataTables_wrapper .dataTables_paginate .paginate_button{padding:0 !important;margin:0 !important;float:left}div.dataTables_wrapper div.dataTables_processing{font-size:0 !important;background-image:url("../img/spinner.svg") !important;background-color:#fff;background-size:100%;width:50px !important;height:50px;border:none;box-shadow:0 4px 8px rgba(0,0,0,.03);top:50% !important;left:50% !important;-webkit-transform:translate(-50%, -50%) !important;transform:translate(-50%, -50%) !important;margin:0 !important;opacity:1 !important}.daterangepicker.dropdown-menu{width:auto}.daterangepicker .input-mini{padding-left:28px !important}.daterangepicker .calendar th,.daterangepicker .calendar td{padding:5px;font-size:12px}.ranges li{color:#6777ef}.ranges li:hover,.ranges li.active{background-color:#6777ef}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#6777ef}.dropzone{border:2px dashed #6777ef;min-height:240px;text-align:center}.dropzone .dz-message{font-size:24px;color:#34395e;margin:3.4em}.dropzone .dz-preview .dz-details{padding:2.2em 1em}.dropzone .dz-preview .dz-image{border-radius:3px}@media(max-width: 575.98px){.dropzone .dz-message{margin:2em}}@media(min-width: 576px)and (max-width: 767.98px){.dropzone .dz-message{margin:2.75em}}.flag-icon{width:50px;height:35px;display:inline-block;background-size:100%}.flag-icon.flag-icon-shadow{box-shadow:0 4px 8px rgba(0,0,0,.03)}.fc-toolbar h2{font-size:16px;margin-top:4px}.fc-view{border-color:#f2f2f2;color:#34395e !important;font-weight:500;padding:10px}.fc-view > table{border-color:#f2f2f2}.fc-view > table tr,.fc-view > table td{border-color:#f2f2f2}.fc-view > table th{border-color:#f2f2f2;color:#34395e !important;font-weight:500;padding:10px}.fc-view-container > .fc-view{padding:0}.fc-view{color:#666;text-align:right}.fc-view > table td{color:#666;text-align:right}.fc-unthemed td.fc-today{background-color:#f2f2f2}.fc button .fc-icon{top:-0.09em}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:10px}.fc-day-grid-event .fc-content{padding:5px 10px;box-shadow:0 4px 8px rgba(0,0,0,.03)}tr:first-child > td > .fc-day-grid-event{margin-bottom:10px}.fc-state-default{border-radius:3px;background-color:#f2f2f2;background-image:none;border:none;box-shadow:none;text-transform:capitalize;font-weight:500}.fc button{height:auto;padding:10px 15px;text-shadow:none;border-radius:0}.fc button.fc-state-active{background-color:#6777ef;color:#fff}.gallery{display:inline-block;width:100%}.gallery .gallery-item{float:left;display:inline-block;width:50px;height:50px;background-repeat:no-repeat;background-size:cover;background-position:center;border-radius:3px;margin-right:7px;margin-bottom:7px;cursor:pointer;transition:all .5s;position:relative}.gallery .gallery-item:hover{opacity:.8}.gallery .gallery-hide{display:none}.gallery .gallery-more:after{content:" ";position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;background-color:rgba(0,0,0,.5);border-radius:3px}.gallery .gallery-more div{text-align:center;line-height:50px;font-weight:600;position:relative;z-index:2;color:#fff}.gallery.gallery-md .gallery-item{width:78px;height:78px;margin-right:10px;margin-bottom:10px}.gallery.gallery-md .gallery-more div{line-height:78px}.gallery.gallery-fw .gallery-item{width:100%;margin-bottom:15px}.gallery.gallery-fw .gallery-more div{font-size:20px}.image-preview,#callback-preview{width:250px;height:250px;border:2px dashed #ddd;border-radius:3px;position:relative;overflow:hidden;background-color:#fff;color:#ecf0f1}.image-preview input,#callback-preview input{line-height:200px;font-size:200px;position:absolute;opacity:0;z-index:10}.image-preview label,#callback-preview label{position:absolute;z-index:5;opacity:.8;cursor:pointer;background-color:#bdc3c7;width:150px;height:50px;font-size:12px;line-height:50px;text-transform:uppercase;top:0;left:0;right:0;bottom:0;margin:auto;text-align:center}.audio-preview{background:#fff;width:auto;padding:20px;display:inline-block}.audio-upload{cursor:pointer;background-color:#bdc3c7;color:#ecf0f1;padding:20px;font-size:20px;text-transform:uppercase}.ionicons{padding:0;margin:0;display:flex;flex-wrap:wrap}.ionicons li{width:calc(100% / 8);font-size:40px;padding:40px 20px;list-style:none;text-align:center;border-radius:3px;position:relative;cursor:pointer}.ionicons li:hover{opacity:.8}.ionicons li .icon-name{position:absolute;top:100%;left:50%;width:100%;-webkit-transform:translate(-50%, -100%);transform:translate(-50%, -100%);font-family:"Segoe UI";font-size:12px;margin-top:10px;line-height:22px;background-color:#f9f9f9;border-radius:3px;padding:10px;display:none}.jqvmap-circle{display:inline-block;width:13px;height:13px;background-color:#fff;border:3px solid #6777ef;border-radius:50%}.jqvmap-label{z-index:889}.jqvmap-zoomin,.jqvmap-zoomout{height:auto;width:auto}.profile-widget{margin-top:35px}.profile-widget .profile-widget-picture{box-shadow:0 4px 8px rgba(0,0,0,.03);float:left;width:100px;margin:-35px -5px 0 30px;position:relative;z-index:1}.profile-widget .profile-widget-header{display:inline-block;width:100%;margin-bottom:10px}.profile-widget .profile-widget-items{display:flex;position:relative}.profile-widget .profile-widget-items:after{content:" ";position:absolute;bottom:0;left:-25px;right:0;height:1px;background-color:#f2f2f2}.profile-widget .profile-widget-items .profile-widget-item{flex:1;text-align:center;border-right:1px solid #f2f2f2;padding:10px 0}.profile-widget .profile-widget-items .profile-widget-item:last-child{border-right:none}.profile-widget .profile-widget-items .profile-widget-item .profile-widget-item-label{font-weight:600;font-size:12px;letter-spacing:.5px;color:#34395e}.profile-widget .profile-widget-items .profile-widget-item .profile-widget-item-value{color:#000;font-weight:600;font-size:16px}.profile-widget .profile-widget-description{padding:20px;line-height:26px}.profile-widget .profile-widget-description .profile-widget-name{font-size:16px;margin-bottom:10px;font-weight:600}@media(max-width: 575.98px){.profile-widget .profile-widget-picture{left:50%;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);margin:40px 0;float:none}.profile-widget .profile-widget-items .profile-widget-item{border-top:1px solid #f2f2f2}}.select2-container--default .select2-search--dropdown .select2-search__field:focus{outline:none;box-shadow:none}.select2-container .select2-selection--multiple,.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;min-height:42px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none;outline:none;background-color:#fdfdff;border-color:#e4e6fc}.select2-dropdown{border-color:#e4e6fc !important}.select2-container.select2-container--open .select2-selection--multiple{background-color:#fefeff;border-color:#95a0f4}.select2-container.select2-container--focus .select2-selection--multiple,.select2-container.select2-container--focus .select2-selection--single{background-color:#fefeff;border-color:#95a0f4}.select2-container.select2-container--open .select2-selection--single{background-color:#fefeff;border-color:#95a0f4}.select2-results__option{padding:10px}.select2-search--dropdown .select2-search__field{padding:7px}.select2-container--default .select2-selection--single .select2-selection__rendered{min-height:42px;line-height:42px;padding-left:20px;padding-right:20px}.select2-container--default .select2-selection--multiple .select2-selection__arrow,.select2-container--default .select2-selection--single .select2-selection__arrow{position:absolute;top:1px;right:1px;width:40px;min-height:42px}.select2-container--default .select2-selection--multiple .select2-selection__choice{box-shadow:0 4px 8px rgba(0,0,0,.03);color:#fff;padding-left:10px;padding-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding-left:10px;padding-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:#fff}.select2-container--default .select2-selection--multiple .select2-selection__choice,.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#6777ef;color:#fff}.select2-results__option{padding-right:10px 15px}.selectric{background-color:#fdfdff;border-color:#e4e6fc;min-height:42px;border-radius:3px;padding-left:10px;padding-right:10px}.selectric:hover{background-color:#fdfdff;border-color:#e4e6fc}.selectric:focus{background-color:#fefeff;border-color:#95a0f4}.selectric .label{font-size:13px;background-color:transparent;line-height:44px;min-height:42px}.selectric .button{background-color:transparent;line-height:44px;min-height:42px}.selectric-open .selectric{border-color:#6777ef}.selectric-above .selectric-items,.selectric-below .selectric-items{margin-bottom:10px}.selectric-items{box-shadow:0 4px 8px rgba(0,0,0,.03);border-radius:3px;background-color:#fff;border:none}.selectric-items li{font-size:13px;padding:10px 15px}.selectric-items li:hover{background-color:#f2f2f2}.selectric-items li.selected,.selectric-items li.highlighted{background-color:#6777ef;color:#fff}.slider .owl-nav [class*=owl-]{position:absolute;top:50%;left:35px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);margin:0;background-color:#000;border-radius:50%;color:#fff;width:40px;height:40px;line-height:34px;opacity:.3}.slider .owl-nav [class*=owl-]:hover{background-color:#000}.slider .owl-nav .owl-next{right:0;left:initial}.slider:hover .owl-nav [class*=owl-]{opacity:1}.slider .slider-caption{position:absolute;bottom:10px;left:0;width:100%;z-index:1;background-color:rgba(0,0,0,.3);color:#fff;padding:10px}.slider .slider-caption .slider-title{font-size:16px;font-weight:700;margin-bottom:5px}.slider .slider-caption .slider-description{line-height:26px;opacity:.8}.jqstooltip{box-sizing:content-box}.sparkline-bar,.sparkline-line,.sparkline-inline{width:100%}.sparkline-bar canvas,.sparkline-line canvas,.sparkline-inline canvas{width:100% !important}.statistic-details{display:flex;flex-wrap:wrap}.statistic-details .statistic-details-item{flex:1;padding:17px 10px;text-align:center}.statistic-details .statistic-details-item .detail-chart{margin-bottom:10px;padding:0 20px}.statistic-details .statistic-details-item .detail-name{font-size:12px;margin-top:5px;color:#34395e;letter-spacing:.3px}.statistic-details .statistic-details-item .detail-value{font-size:18px;font-weight:700}@media(max-width: 575.98px){.statistic-details{flex-wrap:wrap}.statistic-details .statistic-details-item{flex:initial;width:50%}}.summary{display:inline-block;width:100%}.summary .summary-info{background-color:#eaf2f4;padding:50px 0;text-align:center;border-radius:3px}.summary .summary-info h4{font-weight:600}.summary .summary-item{margin-top:20px}.summary .summary-item h6{font-size:12px;font-weight:600;margin-top:5px;margin-bottom:20px}.note-editor.note-frame{border-radius:3px;border:1px solid #ededed;box-shadow:none}.note-toolbar{padding:0 0 5px 5px !important;position:relative !important}.note-toolbar.card-header{height:auto;display:block;min-height:auto}.note-toolbar .note-btn{font-size:12px;background-color:transparent;box-shadow:none;border-color:transparent}.swal-button{border-radius:3px;font-size:16px}.swal-button:focus{box-shadow:none}.swal-button.swal-button--confirm{box-shadow:0 2px 6px #acb5f6;background-color:#6777ef}.swal-button.swal-button--confirm:focus{opacity:.8}.swal-footer{text-align:center}.swal-text{text-align:center;line-height:24px;font-weight:500}.bootstrap-tagsinput{background-color:#fdfdff;border-color:#e4e6fc;display:block;height:46px;box-shadow:none;overflow:auto}.bootstrap-tagsinput input{height:100%;padding:0 8px}.bootstrap-tagsinput .tag{background-color:#6777ef;border-radius:3px;padding:5px 10px}.bootstrap-tagsinput .tag:first-child{margin-left:5px}.bootstrap-tagsinput:focus{background-color:#fefeff;border-color:#95a0f4}.bootstrap-timepicker-widget table td a span{margin-left:0 !important}#toast-container > div{box-shadow:0 4px 8px rgba(0,0,0,.03);padding:20px 20px 20px 50px;opacity:1}#toast-container > .toast{background-image:none !important}#toast-container > .toast:before{position:absolute;left:17px;top:25px;font-family:"Ionicons";font-size:24px;line-height:18px;color:#fff}#toast-container > .toast-warning:before{content:""}#toast-container > .toast-error:before{content:""}#toast-container > .toast-info:before{content:"";color:#000}#toast-container > .toast-success:before{content:""}.toast.toast-error{background-color:#fc544b}.toast.toast-warning{background-color:#ffa426}.toast.toast-success{background-color:#63ed7a}.toast.toast-info{background-color:#fff}.toast.toast-info .toast-title{color:#000}.toast.toast-info .toast-message{color:#000;margin-top:5px}.user-item{text-align:center}.user-item img{border-radius:50%;padding-left:20px;padding-right:20px}.user-item .user-details{margin-top:10px}.user-item .user-details .user-name{font-weight:600;color:#191d21;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item .user-details .user-cta{margin-top:10px}.user-item .user-details .user-cta .btn{padding:5px 15px;font-size:12px;border-radius:30px}@media(max-width: 575.98px){.user-progress .media,.user-details .media{text-align:center;display:inline-block;width:100%}.user-progress .media img,.user-details .media img{margin:0 !important;margin-bottom:10px !important}.user-progress .media .media-body,.user-details .media .media-body{width:100%}.user-progress .media .media-items,.user-details .media .media-items{margin:20px 0;width:100%}.user-progress .list-unstyled-noborder li:last-child,.user-details .list-unstyled-noborder li:last-child{margin-bottom:0;padding-bottom:0}.user-progress .media .media-progressbar{margin-top:10px}.user-progress .media .media-cta{margin-top:20px;margin-left:0}}.weather .weather-icon{float:left;width:150px;text-align:center;line-height:40px}.weather .weather-icon span{font-size:60px;margin-top:30px}.weather .weather-desc{margin-left:160px}.weather .weather-desc h4{font-size:70px;font-weight:200;margin:0;margin-top:30px;margin-bottom:5px;line-height:56px}.weather .weather-desc .weather-text{font-size:12px;color:#34395e;font-weight:600;letter-spacing:1px;text-transform:uppercase;margin-top:10px}.weather .weather-desc ul{margin:15px 0 13px 0;padding:0}.weather ul li{display:inline-block;margin-right:10px;padding:10px;line-height:1;border-radius:3px;border:2px solid #6777ef;font-size:10px;font-weight:500;color:#6777ef;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px}@media(max-width: 575.98px){.weather{text-align:center}.weather .weather-icon{float:none;width:auto}.weather .weather-icon span{margin-top:20px}.weather .weather-desc{margin-left:0}}.icon-wrap{display:inline-block;padding-left:15px;padding-right:15px;margin-bottom:25px;width:calc(100% / 4)}.icon-wrap .icon{float:left;width:40px;font-family:"weathericons";font-size:20px}.icon-wrap .icon_unicode{width:100%;padding-left:45px;color:#34395e}.new-icons ul{padding:0;margin:0;list-style:none}.new-icons ul li{padding:10px}.icon-wrap .icon,.new-icons ul li .wi{font-size:24px;margin-right:15px;width:30px;text-align:center}.pwindicator{margin-top:4px;width:150px}.pwindicator .bar{height:2px}.pw-very-weak .bar{background:#d00;width:30px}.pw-very-weak .label{color:#d00}.pw-weak .bar{background:#d00;width:60px}.pw-weak .label{color:#d00}.pw-mediocre .bar{background:#f3f01a;width:90px}.pw-mediocre .label{color:#f3f01a}.pw-strong .bar{background:#f3b31a;width:120px}.pw-strong .label{color:#f3b31a}.pw-very-strong .bar{background:#0d0;width:150px}.pw-very-strong .label{color:#0d0}.product-item{text-align:center}.product-item .product-image{display:inline-block;overflow:hidden;width:80px;height:80px;border-radius:3px;margin-bottom:10px}.product-item .product-name{color:#34395e;font-weight:700;margin-bottom:3px}.product-item .product-review{color:#ffa426;margin-bottom:3px}.product-item .product-cta{margin-top:5px}.product-item .product-cta a{margin-top:10px;padding-left:15px;padding-right:15px}.tickets-list .ticket-item{text-decoration:none;display:inline-block;width:100%;padding:20px;border-bottom:1px solid #f9f9f9}.tickets-list .ticket-item.ticket-more{padding:15px;text-align:center;font-weight:600;font-size:12px}.tickets-list .ticket-item .ticket-title h4{font-size:16px;font-weight:700}.tickets-list .ticket-item .ticket-info{display:flex;font-size:12px;font-weight:500;color:#34395e;letter-spacing:.5px}.tickets-list .ticket-item .ticket-info .bullet{margin:0 10px}.tickets{display:flex}.tickets .ticket-items{width:30%;padding-right:30px}.tickets .ticket-items .ticket-item{display:inline-block;width:100%;padding:25px 15px;border-bottom:1px solid #f9f9f9;cursor:pointer;transition:all .5s}.tickets .ticket-items .ticket-item:hover{background-color:rgba(63,82,227,.03)}.tickets .ticket-items .ticket-item:hover .ticket-title{color:#6777ef}.tickets .ticket-items .ticket-item.active{box-shadow:0 2px 6px #acb5f6;border-radius:3px;background-color:#6777ef;border-bottom:none}.tickets .ticket-items .ticket-item.active .ticket-title,.tickets .ticket-items .ticket-item.active .ticket-desc{color:#fff !important}.tickets .ticket-items .ticket-item .ticket-title h4{font-size:13px;letter-spacing:.3px}.tickets .ticket-items .ticket-item .ticket-title h4 .badge{padding:7px 10px;margin-left:5px}.tickets .ticket-items .ticket-item .ticket-desc{display:flex;font-size:11px;font-weight:500;color:#34395e;letter-spacing:.5px}.tickets .ticket-items .ticket-item .ticket-desc .bullet{margin:0 10px}.tickets .ticket-content{width:70%}.tickets .ticket-content .ticket-header{display:flex}.tickets .ticket-content .ticket-header .ticket-sender-picture{width:50px;height:50px;border-radius:3px;overflow:hidden;margin-right:20px}.tickets .ticket-content .ticket-header .ticket-sender-picture img{width:100%}.tickets .ticket-content .ticket-header .ticket-detail .ticket-title h4{font-size:18px;font-weight:700}.tickets .ticket-content .ticket-header .ticket-detail .ticket-info{display:flex;letter-spacing:.3px;font-size:12px;font-weight:500;color:#34395e}.tickets .ticket-content .ticket-header .ticket-detail .ticket-info .bullet{margin:0 10px}.tickets .ticket-divider{height:1px;width:100%;display:inline-block;background-color:#f2f2f2}.tickets .ticket-description{color:#34395e;font-weight:500;margin-top:30px;line-height:28px}.tickets .ticket-description p{margin-bottom:20px}.tickets .ticket-description .ticket-form{margin-top:40px}.tickets .ticket-description .ticket-form .note-editable{color:#34395e;font-weight:500}.tickets .ticket-description .ticket-form .note-editable p{margin-bottom:5px}@media(min-width: 576px)and (max-width: 767.98px){.tickets{display:inline-block}.tickets .ticket-items{width:100%;margin-bottom:30px;padding:0;display:none}.tickets .ticket-content{width:100%}}@media(min-width: 768px)and (max-width: 991.98px){.tickets{flex-wrap:wrap;margin:0 -15px}.tickets .ticket-items{width:100%;display:flex;flex-wrap:nowrap;padding:0;margin-bottom:15px;padding:15px;overflow:auto}.tickets .ticket-items .ticket-item{flex-basis:50%;flex-grow:0;flex-shrink:0}.tickets .ticket-content{margin:15px;width:100%}}.owl-theme .owl-item{padding:10px 0}.owl-theme .owl-dots{margin-top:20px !important}.owl-theme .owl-dots .owl-dot.active span{background-color:#6777ef}.activities{display:flex;flex-wrap:wrap}.activities .activity{width:100%;display:flex;position:relative}.activities .activity:before{content:" ";position:absolute;left:25px;top:0;width:2px;height:100%;background-color:#6777ef}.activities .activity:last-child:before{display:none}.activities .activity .activity-icon{width:50px;height:50px;border-radius:3px;line-height:50px;font-size:20px;text-align:center;margin-right:20px;border-radius:50%;flex-shrink:0;text-align:center;z-index:1}.activities .activity .activity-detail{box-shadow:0 4px 8px rgba(0,0,0,.03);background-color:#fff;border-radius:3px;border:none;position:relative;margin-bottom:30px;position:relative;padding:15px}.activities .activity .activity-detail:before{content:"";font-family:"Font Awesome 5 Free";font-weight:900;font-size:20px;position:absolute;left:-8px;color:#fff}.activities .activity .activity-detail h4{font-size:18px;color:#191d21}.activities .activity .activity-detail p{margin-bottom:0}.invoice{box-shadow:0 4px 8px rgba(0,0,0,.03);background-color:#fff;border-radius:3px;border:none;position:relative;margin-bottom:30px;padding:40px}.invoice .invoice-title .invoice-number{float:right;font-size:20px;font-weight:700;margin-top:-45px}.invoice hr{margin-top:40px;margin-bottom:40px;border-top-color:#f9f9f9}.invoice .invoice-detail-item{margin-bottom:15px}.invoice .invoice-detail-item .invoice-detail-name{letter-spacing:.3px;color:#98a6ad;margin-bottom:4px}.invoice .invoice-detail-item .invoice-detail-value{font-size:18px;color:#34395e;font-weight:700}.invoice .invoice-detail-item .invoice-detail-value.invoice-detail-value-lg{font-size:24px}@media(min-width: 768px)and (max-width: 991.98px){.table-invoice table{min-width:800px}}.empty-state{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:40px}.empty-state .empty-state-icon{position:relative;background-color:#6777ef;width:80px;height:80px;line-height:100px;border-radius:5px}.empty-state .empty-state-icon i{font-size:40px;color:#fff;position:relative;z-index:1}.empty-state h2{font-size:20px;margin-top:30px}.empty-state p{font-size:16px}.pricing{box-shadow:0 4px 8px rgba(0,0,0,.03);background-color:#fff;border-radius:3px;border:none;position:relative;margin-bottom:30px;text-align:center}.pricing.pricing-highlight .pricing-title{background-color:#6777ef;color:#fff}.pricing.pricing-highlight .pricing-cta a{background-color:#6777ef;color:#fff}.pricing.pricing-highlight .pricing-cta a:hover{background-color:#394eea !important}.pricing .pricing-padding{padding:40px}.pricing .pricing-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:2.5px;background-color:#f3f6f8;color:#6777ef;border-radius:0 0 3px 3px;display:inline-block;padding:5px 15px}.pricing .pricing-price{margin-bottom:45px}.pricing .pricing-price div:first-child{font-weight:600;font-size:50px}.pricing .pricing-details{text-align:left;display:inline-block}.pricing .pricing-details .pricing-item{display:flex;margin-bottom:15px}.pricing .pricing-details .pricing-item .pricing-item-icon{width:20px;height:20px;line-height:20px;border-radius:50%;text-align:center;background-color:#63ed7a;color:#fff;margin-right:10px}.pricing .pricing-details .pricing-item .pricing-item-icon i{font-size:11px}.pricing .pricing-cta{margin-top:20px}.pricing .pricing-cta a{display:block;padding:20px 40px;background-color:#f3f6f8;text-transform:uppercase;letter-spacing:2.5px;font-size:14px;font-weight:700;text-decoration:none;border-radius:0 0 3px 3px}.pricing .pricing-cta a .fas,.pricing .pricing-cta a .far,.pricing .pricing-cta a .fab,.pricing .pricing-cta a .fal,.pricing .pricing-cta a .ion{margin-left:5px}.pricing .pricing-cta a:hover{background-color:#e3eaef}.hero{border-radius:3px;padding:55px;display:flex;justify-content:center;flex-direction:column;position:relative}.hero.hero-bg-image{background-position:center;background-size:cover}.hero.hero-bg-image:before{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);z-index:0;border-radius:3px}.hero.hero-bg-image.hero-bg-parallax{background-attachment:fixed}.hero .hero-inner{position:relative;z-index:1}.hero h2{font-size:24px}.hero p{margin-bottom:0;font-size:16px;letter-spacing:.3px}.avatar{background:#6777ef;border-radius:50%;color:#e3eaef;display:inline-block;font-size:16px;font-weight:300;margin:0;position:relative;vertical-align:middle;line-height:1.28;height:45px;width:45px}.avatar.avatar-xs{font-size:6px;height:15px;width:15px}.avatar.avatar-sm{font-size:12px;height:30px;width:30px}.avatar.avatar-lg{font-size:23px;height:60px;width:60px}.avatar.avatar-xl{font-size:30px;height:75px;width:75px}.avatar img{border-radius:50%;height:100%;position:relative;width:100%;z-index:1}.avatar .avatar-icon{background:#fff;bottom:14.64%;height:50%;padding:.1rem;position:absolute;right:14.64%;transform:translate(50%, 50%);width:50%;z-index:2}.avatar .avatar-presence{background:#fff;bottom:14.64%;height:50%;padding:.1rem;position:absolute;right:14.64%;transform:translate(50%, 50%);width:50%;z-index:2;background:#bcc3ce;border-radius:50%;box-shadow:0 0 0 .1rem #fff;height:.5em;width:.5em}.avatar .avatar-presence.online{background:#63ed7a}.avatar .avatar-presence.busy{background:#fc544b}.avatar .avatar-presence.away{background:#ffa426}.avatar[data-initial]::before{color:currentColor;content:attr(data-initial);left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:1}.wizard-steps{display:flex;margin:0 -10px;margin-bottom:60px;counter-reset:wizard-counter}.wizard-steps .wizard-step{box-shadow:0 4px 8px rgba(0,0,0,.03);background-color:#fff;border-radius:3px;border:none;position:relative;margin-bottom:30px;box-shadow:0 4px 8px rgba(0,0,0,.05);padding:30px;text-align:center;flex-grow:1;flex-basis:0;margin:0 10px}.wizard-steps .wizard-step:before{counter-increment:wizard-counter;content:counter(wizard-counter);position:absolute;bottom:-40px;left:50%;transform:translateX(-50%);width:20px;height:20px;line-height:21px;font-size:10px;font-weight:700;border-radius:50%;background-color:#e3eaef}.wizard-steps .wizard-step.wizard-step-active{box-shadow:0 2px 6px #acb5f6;background-color:#6777ef;color:#fff}.wizard-steps .wizard-step.wizard-step-active:before{background-color:#6777ef;color:#fff}.wizard-steps .wizard-step.wizard-step-success{background-color:#63ed7a;color:#fff}.wizard-steps .wizard-step.wizard-step-success:before{background-color:#63ed7a;color:#fff}.wizard-steps .wizard-step.wizard-step-danger{background-color:#fc544b;color:#fff}.wizard-steps .wizard-step.wizard-step-danger:before{background-color:#fc544b;color:#fff}.wizard-steps .wizard-step.wizard-step-warning{background-color:#ffa426;color:#fff}.wizard-steps .wizard-step.wizard-step-warning:before{background-color:#ffa426;color:#fff}.wizard-steps .wizard-step.wizard-step-info{background-color:#3abaf4;color:#fff}.wizard-steps .wizard-step.wizard-step-info:before{background-color:#3abaf4;color:#fff}.wizard-steps .wizard-step .wizard-step-icon .fas,.wizard-steps .wizard-step .wizard-step-icon .far,.wizard-steps .wizard-step .wizard-step-icon .fab,.wizard-steps .wizard-step .wizard-step-icon .fal,.wizard-steps .wizard-step .wizard-step-icon .ion{font-size:34px;margin-bottom:15px}.wizard-steps .wizard-step .wizard-step-label{font-size:10px;text-transform:uppercase;letter-spacing:1px;font-weight:700}@media(max-width: 575.98px){.wizard-steps{display:block}.wizard-steps .wizard-step{margin-bottom:50px}}/*# sourceMappingURL=components.min.css.map */ +.article { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; +} +.article .article-header { + height: 170px; + position: relative; + overflow: hidden; +} +.article .article-header .article-image { + background-color: #fbfbfb; + background-position: center; + background-size: cover; + background-repeat: no-repeat; + width: 100%; + height: 100%; + z-index: -1; +} +.article .article-header .article-title { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + background: linear-gradient( + to bottom, + rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.01) 1%, + rgba(0, 0, 0, 0.65) 98%, + rgba(0, 0, 0, 0.65) 100% + ); + padding: 10px; +} +.article .article-header .article-title h2 { + font-size: 16px; + line-height: 24px; +} +.article .article-header .article-title h2 a { + font-weight: 700; + text-decoration: none; + color: #fff; +} +.article .article-details { + background-color: #fff; + padding: 20px; + line-height: 24px; +} +.article .article-details .article-cta { + text-align: center; +} +.article .article-header .article-badge { + position: absolute; + bottom: 10px; + left: 10px; +} +.article .article-header .article-badge .article-badge-item { + padding: 7px 15px; + font-weight: 600; + color: #fff; + border-radius: 30px; + font-size: 12px; +} +.article .article-header .article-badge .article-badge-item .ion, +.article .article-header .article-badge .article-badge-item .fas, +.article .article-header .article-badge .article-badge-item .far, +.article .article-header .article-badge .article-badge-item .fab, +.article .article-header .article-badge .article-badge-item .fal { + margin-right: 3px; +} +.article.article-style-b .article-details .article-title { + margin-bottom: 10px; +} +.article.article-style-b .article-details .article-title h2 { + line-height: 22px; +} +.article.article-style-b .article-details .article-title a { + font-size: 16px; + font-weight: 600; +} +.article.article-style-b .article-details p { + color: #34395e; +} +.article.article-style-b .article-details .article-cta { + text-align: right; +} +.article.article-style-c .article-header { + height: 233px; +} +.article.article-style-c .article-details .article-category { + text-transform: uppercase; + margin-bottom: 5px; + letter-spacing: 1px; + color: #34395e; +} +.article.article-style-c .article-details .article-category a { + font-size: 10px; + color: #34395e; + font-weight: 700; +} +.article.article-style-c .article-details .article-title { + margin-bottom: 10px; +} +.article.article-style-c .article-details .article-title h2 { + line-height: 22px; +} +.article.article-style-c .article-details .article-title a { + font-size: 16px; + font-weight: 600; +} +.article.article-style-c .article-details p { + color: #34395e; +} +.article.article-style-c .article-user { + display: inline-block; + width: 100%; + margin-top: 20px; +} +.article.article-style-c .article-user img { + border-radius: 50%; + float: left; + width: 45px; + margin-right: 15px; +} +.article.article-style-c .article-user .user-detail-name { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.article.article-style-c .article-user .user-detail-name a { + font-weight: 700; +} +@media (max-width: 575.98px) { + .article .article-style-c .article-header { + height: 225px; + } +} +@media (min-width: 768px) and (max-width: 991.98px) { + .article { + margin-bottom: 40px; + } + .article .article-header { + height: 195px !important; + } + .article.article-style-c .article-header { + height: 155px; + } +} +@media (max-width: 1024px) { + .article.article-style-c .article-header { + height: 216px; + } + .article .article-header { + height: 155px; + } +} +.author-box .author-box-left { + float: left; + text-align: center; + padding-left: 5px; +} +.author-box .author-box-left .btn { + padding: 5px 15px; + font-size: 12px; + border-radius: 30px; +} +.author-box .author-box-picture { + width: 100px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); +} +.author-box .author-box-details { + margin-left: 135px; +} +.author-box .author-box-name { + font-size: 18px; +} +.author-box .author-box-name a { + font-weight: 600; +} +.author-box .author-box-job { + font-weight: 600; + letter-spacing: 0.5px; + font-size: 12px; + color: #34395e; +} +.author-box .author-box-description { + line-height: 26px; + margin-top: 15px; +} +@media (max-width: 575.98px) { + .author-box .author-box-left { + float: none; + } + .author-box .author-box-details { + margin-left: 0; + margin-top: 15px; + text-align: center; + } +} +.avatar-item { + position: relative; + margin-bottom: 20px; +} +.avatar-item img { + border-radius: 50%; +} +.avatar-item .avatar-badge { + position: absolute; + bottom: -5px; + right: 0; + background-color: #fff; + color: #000; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + border-radius: 50%; + text-align: center; + line-height: 25px; + width: 25px; + height: 25px; +} +.browser { + display: inline-block; + width: 60px; + height: 60px; + background-size: 100%; +} +.browser.browser-chrome { + background-image: url("../img/browsers/chrome.png"); +} +.browser.browser-firefox { + background-image: url("../img/browsers/firefox.png"); +} +.browser.browser-internet-explorer { + background-image: url("../img/browsers/internet-explorer.png"); +} +.browser.browser-opera { + background-image: url("../img/browsers/opera.png"); +} +.browser.browser-safari { + background-image: url("../img/browsers/safari.png"); +} +.chat-box .chat-content { + background-color: #f9f9f9 !important; + height: 300px; + overflow: hidden; + padding-top: 25px !important; +} +.chat-box .chat-content .chat-item { + display: inline-block; + width: 100%; + margin-bottom: 25px; +} +.chat-box .chat-content .chat-item.chat-right img { + float: right; +} +.chat-box .chat-content .chat-item.chat-right .chat-details { + margin-left: 0; + margin-right: 70px; + text-align: right; +} +.chat-box .chat-content .chat-item.chat-right .chat-details .chat-text { + text-align: left; + background-color: #6777ef; + color: #fff; +} +.chat-box .chat-content .chat-item > img { + float: left; + width: 50px; + border-radius: 50%; +} +.chat-box .chat-content .chat-item .chat-details { + margin-left: 70px; +} +.chat-box .chat-content .chat-item .chat-details .chat-text { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + padding: 10px 15px; + border-radius: 3px; + width: auto; + display: inline-block; + font-size: 12px; +} +.chat-box .chat-content .chat-item .chat-details .chat-text img { + max-width: 100%; + margin-bottom: 10px; +} +.chat-box .chat-content .chat-item.chat-typing .chat-details .chat-text { + background-image: url("../img/typing.svg"); + height: 40px; + width: 60px; + background-position: center; + background-size: 60%; + background-repeat: no-repeat; +} +.chat-box .chat-content .chat-item .chat-details .chat-time { + margin-top: 5px; + font-size: 12px; + font-weight: 500; + opacity: 0.6; +} +.chat-box .chat-form { + padding: 0; + position: relative; +} +.chat-box .chat-form .form-control { + border: none; + padding: 15px; + height: 50px; + padding-right: 70px; + font-size: 13px; + font-weight: 500; + box-shadow: none; + outline: none; +} +.chat-box .chat-form .btn { + padding: 0; + width: 40px; + height: 40px; + border-radius: 50%; + position: absolute; + top: 50%; + right: -5px; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); +} +.chat-box .chat-form .btn i { + margin-left: 0; +} +.chocolat-wrapper { + z-index: 890; +} +.chocolat-overlay { + background-color: #000; +} +[data-tab-group] { + display: none; +} +[data-tab-group].active { + display: block; +} +table.dataTable { + border-collapse: collapse !important; +} +table.dataTable thead th, +table.dataTable thead td { + border-bottom: 1px solid #ddd !important; +} +table.dataTable.no-footer { + border-bottom: 1px solid #ddd !important; +} +.dataTables_wrapper { + padding: 0 !important; + font-size: 13px !important; +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + padding: 0 !important; + margin: 0 !important; + float: left; +} +div.dataTables_wrapper div.dataTables_processing { + font-size: 0 !important; + background-image: url("../img/spinner.svg") !important; + background-color: #fff; + background-size: 100%; + width: 50px !important; + height: 50px; + border: none; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + top: 50% !important; + left: 50% !important; + -webkit-transform: translate(-50%, -50%) !important; + transform: translate(-50%, -50%) !important; + margin: 0 !important; + opacity: 1 !important; +} +.daterangepicker.dropdown-menu { + width: auto; +} +.daterangepicker .input-mini { + padding-left: 28px !important; +} +.daterangepicker .calendar th, +.daterangepicker .calendar td { + padding: 5px; + font-size: 12px; +} +.ranges li { + color: #6777ef; +} +.ranges li:hover, +.ranges li.active { + background-color: #6777ef; +} +.daterangepicker td.active, +.daterangepicker td.active:hover { + background-color: #6777ef; +} +.dropzone { + border: 2px dashed #6777ef; + min-height: 240px; + text-align: center; +} +.dropzone .dz-message { + font-size: 24px; + color: #34395e; + margin: 3.4em; +} +.dropzone .dz-preview .dz-details { + padding: 2.2em 1em; +} +.dropzone .dz-preview .dz-image { + border-radius: 3px; +} +@media (max-width: 575.98px) { + .dropzone .dz-message { + margin: 2em; + } +} +@media (min-width: 576px) and (max-width: 767.98px) { + .dropzone .dz-message { + margin: 2.75em; + } +} +.flag-icon { + width: 50px; + height: 35px; + display: inline-block; + background-size: 100%; +} +.flag-icon.flag-icon-shadow { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); +} +.fc-toolbar h2 { + font-size: 16px; + margin-top: 4px; +} +.fc-view { + border-color: #f2f2f2; + color: #34395e !important; + font-weight: 500; + padding: 10px; +} +.fc-view > table { + border-color: #f2f2f2; +} +.fc-view > table tr, +.fc-view > table td { + border-color: #f2f2f2; +} +.fc-view > table th { + border-color: #f2f2f2; + color: #34395e !important; + font-weight: 500; + padding: 10px; +} +.fc-view-container > .fc-view { + padding: 0; +} +.fc-view { + color: #666; + text-align: right; +} +.fc-view > table td { + color: #666; + text-align: right; +} +.fc-unthemed td.fc-today { + background-color: #f2f2f2; +} +.fc button .fc-icon { + top: -0.09em; +} +.fc-basic-view .fc-day-number, +.fc-basic-view .fc-week-number { + padding: 10px; +} +.fc-day-grid-event .fc-content { + padding: 5px 10px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); +} +tr:first-child > td > .fc-day-grid-event { + margin-bottom: 10px; +} +.fc-state-default { + border-radius: 3px; + background-color: #f2f2f2; + background-image: none; + border: none; + box-shadow: none; + text-transform: capitalize; + font-weight: 500; +} +.fc button { + height: auto; + padding: 10px 15px; + text-shadow: none; + border-radius: 0; +} +.fc button.fc-state-active { + background-color: #6777ef; + color: #fff; +} +.gallery { + display: inline-block; + width: 100%; +} +.gallery .gallery-item { + float: left; + display: inline-block; + width: 50px; + height: 50px; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + border-radius: 3px; + margin-right: 7px; + margin-bottom: 7px; + cursor: pointer; + transition: all 0.5s; + position: relative; +} +.gallery .gallery-item:hover { + opacity: 0.8; +} +.gallery .gallery-hide { + display: none; +} +.gallery .gallery-more:after { + content: " +"; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 1; + background-color: rgba(0, 0, 0, 0.5); + border-radius: 3px; +} +.gallery .gallery-more div { + text-align: center; + line-height: 50px; + font-weight: 600; + position: relative; + z-index: 2; + color: #fff; +} +.gallery.gallery-md .gallery-item { + width: 78px; + height: 78px; + margin-right: 10px; + margin-bottom: 10px; +} +.gallery.gallery-md .gallery-more div { + line-height: 78px; +} +.gallery.gallery-fw .gallery-item { + width: 100%; + margin-bottom: 15px; +} +.gallery.gallery-fw .gallery-more div { + font-size: 20px; +} +.image-preview, +#callback-preview { + width: 250px; + height: 250px; + border: 2px dashed #ddd; + border-radius: 3px; + position: relative; + overflow: hidden; + background-color: #fff; + color: #ecf0f1; +} +.image-preview input, +#callback-preview input { + line-height: 200px; + font-size: 200px; + position: absolute; + opacity: 0; + z-index: 10; +} +.image-preview label, +#callback-preview label { + position: absolute; + z-index: 5; + opacity: 0.8; + cursor: pointer; + background-color: #bdc3c7; + width: 150px; + height: 50px; + font-size: 12px; + line-height: 50px; + text-transform: uppercase; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + text-align: center; +} +.audio-preview { + background: #fff; + width: auto; + padding: 20px; + display: inline-block; +} +.audio-upload { + cursor: pointer; + background-color: #bdc3c7; + color: #ecf0f1; + padding: 20px; + font-size: 20px; + text-transform: uppercase; +} +.ionicons { + padding: 0; + margin: 0; + display: flex; + flex-wrap: wrap; +} +.ionicons li { + width: calc(100% / 8); + font-size: 40px; + padding: 40px 20px; + list-style: none; + text-align: center; + border-radius: 3px; + position: relative; + cursor: pointer; +} +.ionicons li:hover { + opacity: 0.8; +} +.ionicons li .icon-name { + position: absolute; + top: 100%; + left: 50%; + width: 100%; + -webkit-transform: translate(-50%, -100%); + transform: translate(-50%, -100%); + font-family: "Segoe +UI"; + font-size: 12px; + margin-top: 10px; + line-height: 22px; + background-color: #f9f9f9; + border-radius: 3px; + padding: 10px; + display: none; +} +.jqvmap-circle { + display: inline-block; + width: 13px; + height: 13px; + background-color: #fff; + border: 3px solid #6777ef; + border-radius: 50%; +} +.jqvmap-label { + z-index: 889; +} +.jqvmap-zoomin, +.jqvmap-zoomout { + height: auto; + width: auto; +} +.profile-widget { + margin-top: 35px; +} +.profile-widget .profile-widget-picture { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + float: left; + width: 100px; + margin: -35px -5px 0 30px; + position: relative; + z-index: 1; +} +.profile-widget .profile-widget-header { + display: inline-block; + width: 100%; + margin-bottom: 10px; +} +.profile-widget .profile-widget-items { + display: flex; + position: relative; +} +.profile-widget .profile-widget-items:after { + content: " +"; + position: absolute; + bottom: 0; + left: -25px; + right: 0; + height: 1px; + background-color: #f2f2f2; +} +.profile-widget .profile-widget-items .profile-widget-item { + flex: 1; + text-align: center; + border-right: 1px solid #f2f2f2; + padding: 10px 0; +} +.profile-widget .profile-widget-items .profile-widget-item:last-child { + border-right: none; +} +.profile-widget + .profile-widget-items + .profile-widget-item + .profile-widget-item-label { + font-weight: 600; + font-size: 12px; + letter-spacing: 0.5px; + color: #34395e; +} +.profile-widget + .profile-widget-items + .profile-widget-item + .profile-widget-item-value { + color: #000; + font-weight: 600; + font-size: 16px; +} +.profile-widget .profile-widget-description { + padding: 20px; + line-height: 26px; +} +.profile-widget .profile-widget-description .profile-widget-name { + font-size: 16px; + margin-bottom: 10px; + font-weight: 600; +} +@media (max-width: 575.98px) { + .profile-widget .profile-widget-picture { + left: 50%; + -webkit-transform: translate(-50%, 0); + transform: translate(-50%, 0); + margin: 40px 0; + float: none; + } + .profile-widget .profile-widget-items .profile-widget-item { + border-top: 1px solid #f2f2f2; + } +} +.selectric { + background-color: #fdfdff; + border-color: #e4e6fc; + min-height: 42px; + border-radius: 3px; + padding-left: 10px; + padding-right: 10px; +} +.selectric:hover { + background-color: #fdfdff; + border-color: #e4e6fc; +} +.selectric:focus { + background-color: #fefeff; + border-color: #95a0f4; +} +.selectric .label { + font-size: 13px; + background-color: transparent; + line-height: 44px; + min-height: 42px; +} +.selectric .button { + background-color: transparent; + line-height: 44px; + min-height: 42px; +} +.selectric-open .selectric { + border-color: #6777ef; +} +.selectric-above .selectric-items, +.selectric-below .selectric-items { + margin-bottom: 10px; +} +.selectric-items { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + border-radius: 3px; + background-color: #fff; + border: none; +} +.selectric-items li { + font-size: 13px; + padding: 10px 15px; +} +.selectric-items li:hover { + background-color: #f2f2f2; +} +.selectric-items li.selected, +.selectric-items li.highlighted { + background-color: #6777ef; + color: #fff; +} +.slider .owl-nav [class*="owl-"] { + position: absolute; + top: 50%; + left: 35px; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + margin: 0; + background-color: #000; + border-radius: 50%; + color: #fff; + width: 40px; + height: 40px; + line-height: 34px; + opacity: 0.3; +} +.slider .owl-nav [class*="owl-"]:hover { + background-color: #000; +} +.slider .owl-nav .owl-next { + right: 0; + left: initial; +} +.slider:hover .owl-nav [class*="owl-"] { + opacity: 1; +} +.slider .slider-caption { + position: absolute; + bottom: 10px; + left: 0; + width: 100%; + z-index: 1; + background-color: rgba(0, 0, 0, 0.3); + color: #fff; + padding: 10px; +} +.slider .slider-caption .slider-title { + font-size: 16px; + font-weight: 700; + margin-bottom: 5px; +} +.slider .slider-caption .slider-description { + line-height: 26px; + opacity: 0.8; +} +.jqstooltip { + box-sizing: content-box; +} +.sparkline-bar, +.sparkline-line, +.sparkline-inline { + width: 100%; +} +.sparkline-bar canvas, +.sparkline-line canvas, +.sparkline-inline canvas { + width: 100% !important; +} +.statistic-details { + display: flex; + flex-wrap: wrap; +} +.statistic-details .statistic-details-item { + flex: 1; + padding: 17px 10px; + text-align: center; +} +.statistic-details .statistic-details-item .detail-chart { + margin-bottom: 10px; + padding: 0 20px; +} +.statistic-details .statistic-details-item .detail-name { + font-size: 12px; + margin-top: 5px; + color: #34395e; + letter-spacing: 0.3px; +} +.statistic-details .statistic-details-item .detail-value { + font-size: 18px; + font-weight: 700; +} +@media (max-width: 575.98px) { + .statistic-details { + flex-wrap: wrap; + } + .statistic-details .statistic-details-item { + flex: initial; + width: 50%; + } +} +.summary { + display: inline-block; + width: 100%; +} +.summary .summary-info { + background-color: #eaf2f4; + padding: 50px 0; + text-align: center; + border-radius: 3px; +} +.summary .summary-info h4 { + font-weight: 600; +} +.summary .summary-item { + margin-top: 20px; +} +.summary .summary-item h6 { + font-size: 12px; + font-weight: 600; + margin-top: 5px; + margin-bottom: 20px; +} +.note-editor.note-frame { + border-radius: 3px; + border: 1px solid #ededed; + box-shadow: none; +} +.note-toolbar { + padding: 0 0 5px 5px !important; + position: relative !important; +} +.note-toolbar.card-header { + height: auto; + display: block; + min-height: auto; +} +.note-toolbar .note-btn { + font-size: 12px; + background-color: transparent; + box-shadow: none; + border-color: transparent; +} +.swal-button { + border-radius: 3px; + font-size: 16px; +} +.swal-button:focus { + box-shadow: none; +} +.swal-button.swal-button--confirm { + box-shadow: 0 2px 6px #acb5f6; + background-color: #6777ef; +} +.swal-button.swal-button--confirm:focus { + opacity: 0.8; +} +.swal-footer { + text-align: center; +} +.swal-text { + text-align: center; + line-height: 24px; + font-weight: 500; +} +.bootstrap-tagsinput { + background-color: #fdfdff; + border-color: #e4e6fc; + display: block; + height: 46px; + box-shadow: none; + overflow: auto; +} +.bootstrap-tagsinput input { + height: 100%; + padding: 0 8px; +} +.bootstrap-tagsinput .tag { + background-color: #6777ef; + border-radius: 3px; + padding: 5px 10px; +} +.bootstrap-tagsinput .tag:first-child { + margin-left: 5px; +} +.bootstrap-tagsinput:focus { + background-color: #fefeff; + border-color: #95a0f4; +} +.bootstrap-timepicker-widget table td a span { + margin-left: 0 !important; +} +#toast-container > div { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + padding: 20px 20px 20px 50px; + opacity: 1; +} +#toast-container > .toast { + background-image: none !important; +} +#toast-container > .toast:before { + position: absolute; + left: 17px; + top: 25px; + font-family: "Ionicons"; + font-size: 24px; + line-height: 18px; + color: #fff; +} +#toast-container > .toast-warning:before { + content: ""; +} +#toast-container > .toast-error:before { + content: ""; +} +#toast-container > .toast-info:before { + content: ""; + color: #000; +} +#toast-container > .toast-success:before { + content: ""; +} +.toast.toast-error { + background-color: #fc544b; +} +.toast.toast-warning { + background-color: #ffa426; +} +.toast.toast-success { + background-color: #63ed7a; +} +.toast.toast-info { + background-color: #fff; +} +.toast.toast-info .toast-title { + color: #000; +} +.toast.toast-info .toast-message { + color: #000; + margin-top: 5px; +} +.user-item { + text-align: center; +} +.user-item img { + border-radius: 50%; + padding-left: 20px; + padding-right: 20px; +} +.user-item .user-details { + margin-top: 10px; +} +.user-item .user-details .user-name { + font-weight: 600; + color: #191d21; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.user-item .user-details .user-cta { + margin-top: 10px; +} +.user-item .user-details .user-cta .btn { + padding: 5px 15px; + font-size: 12px; + border-radius: 30px; +} +@media (max-width: 575.98px) { + .user-progress .media, + .user-details .media { + text-align: center; + display: inline-block; + width: 100%; + } + .user-progress .media img, + .user-details .media img { + margin: 0 !important; + margin-bottom: 10px !important; + } + .user-progress .media .media-body, + .user-details .media .media-body { + width: 100%; + } + .user-progress .media .media-items, + .user-details .media .media-items { + margin: 20px 0; + width: 100%; + } + .user-progress .list-unstyled-noborder li:last-child, + .user-details .list-unstyled-noborder li:last-child { + margin-bottom: 0; + padding-bottom: 0; + } + .user-progress .media .media-progressbar { + margin-top: 10px; + } + .user-progress .media .media-cta { + margin-top: 20px; + margin-left: 0; + } +} +.weather .weather-icon { + float: left; + width: 150px; + text-align: center; + line-height: 40px; +} +.weather .weather-icon span { + font-size: 60px; + margin-top: 30px; +} +.weather .weather-desc { + margin-left: 160px; +} +.weather .weather-desc h4 { + font-size: 70px; + font-weight: 200; + margin: 0; + margin-top: 30px; + margin-bottom: 5px; + line-height: 56px; +} +.weather .weather-desc .weather-text { + font-size: 12px; + color: #34395e; + font-weight: 600; + letter-spacing: 1px; + text-transform: uppercase; + margin-top: 10px; +} +.weather .weather-desc ul { + margin: 15px 0 13px 0; + padding: 0; +} +.weather ul li { + display: inline-block; + margin-right: 10px; + padding: 10px; + line-height: 1; + border-radius: 3px; + border: 2px solid #6777ef; + font-size: 10px; + font-weight: 500; + color: #6777ef; + text-transform: uppercase; + letter-spacing: 1px; + margin-bottom: 10px; +} +@media (max-width: 575.98px) { + .weather { + text-align: center; + } + .weather .weather-icon { + float: none; + width: auto; + } + .weather .weather-icon span { + margin-top: 20px; + } + .weather .weather-desc { + margin-left: 0; + } +} +.icon-wrap { + display: inline-block; + padding-left: 15px; + padding-right: 15px; + margin-bottom: 25px; + width: calc(100% / 4); +} +.icon-wrap .icon { + float: left; + width: 40px; + font-family: "weathericons"; + font-size: 20px; +} +.icon-wrap .icon_unicode { + width: 100%; + padding-left: 45px; + color: #34395e; +} +.new-icons ul { + padding: 0; + margin: 0; + list-style: none; +} +.new-icons ul li { + padding: 10px; +} +.icon-wrap .icon, +.new-icons ul li .wi { + font-size: 24px; + margin-right: 15px; + width: 30px; + text-align: center; +} +.pwindicator { + margin-top: 4px; + width: 150px; +} +.pwindicator .bar { + height: 2px; +} +.pw-very-weak .bar { + background: #d00; + width: 30px; +} +.pw-very-weak .label { + color: #d00; +} +.pw-weak .bar { + background: #d00; + width: 60px; +} +.pw-weak .label { + color: #d00; +} +.pw-mediocre .bar { + background: #f3f01a; + width: 90px; +} +.pw-mediocre .label { + color: #f3f01a; +} +.pw-strong .bar { + background: #f3b31a; + width: 120px; +} +.pw-strong .label { + color: #f3b31a; +} +.pw-very-strong .bar { + background: #0d0; + width: 150px; +} +.pw-very-strong .label { + color: #0d0; +} +.product-item { + text-align: center; +} +.product-item .product-image { + display: inline-block; + overflow: hidden; + width: 80px; + height: 80px; + border-radius: 3px; + margin-bottom: 10px; +} +.product-item .product-name { + color: #34395e; + font-weight: 700; + margin-bottom: 3px; +} +.product-item .product-review { + color: #ffa426; + margin-bottom: 3px; +} +.product-item .product-cta { + margin-top: 5px; +} +.product-item .product-cta a { + margin-top: 10px; + padding-left: 15px; + padding-right: 15px; +} +.tickets-list .ticket-item { + text-decoration: none; + display: inline-block; + width: 100%; + padding: 20px; + border-bottom: 1px solid #f9f9f9; +} +.tickets-list .ticket-item.ticket-more { + padding: 15px; + text-align: center; + font-weight: 600; + font-size: 12px; +} +.tickets-list .ticket-item .ticket-title h4 { + font-size: 16px; + font-weight: 700; +} +.tickets-list .ticket-item .ticket-info { + display: flex; + font-size: 12px; + font-weight: 500; + color: #34395e; + letter-spacing: 0.5px; +} +.tickets-list .ticket-item .ticket-info .bullet { + margin: 0 10px; +} +.tickets { + display: flex; +} +.tickets .ticket-items { + width: 30%; + padding-right: 30px; +} +.tickets .ticket-items .ticket-item { + display: inline-block; + width: 100%; + padding: 25px 15px; + border-bottom: 1px solid #f9f9f9; + cursor: pointer; + transition: all 0.5s; +} +.tickets .ticket-items .ticket-item:hover { + background-color: rgba(63, 82, 227, 0.03); +} +.tickets .ticket-items .ticket-item:hover .ticket-title { + color: #6777ef; +} +.tickets .ticket-items .ticket-item.active { + box-shadow: 0 2px 6px #acb5f6; + border-radius: 3px; + background-color: #6777ef; + border-bottom: none; +} +.tickets .ticket-items .ticket-item.active .ticket-title, +.tickets .ticket-items .ticket-item.active .ticket-desc { + color: #fff !important; +} +.tickets .ticket-items .ticket-item .ticket-title h4 { + font-size: 13px; + letter-spacing: 0.3px; +} +.tickets .ticket-items .ticket-item .ticket-title h4 .badge { + padding: 7px 10px; + margin-left: 5px; +} +.tickets .ticket-items .ticket-item .ticket-desc { + display: flex; + font-size: 11px; + font-weight: 500; + color: #34395e; + letter-spacing: 0.5px; +} +.tickets .ticket-items .ticket-item .ticket-desc .bullet { + margin: 0 10px; +} +.tickets .ticket-content { + width: 70%; +} +.tickets .ticket-content .ticket-header { + display: flex; +} +.tickets .ticket-content .ticket-header .ticket-sender-picture { + width: 50px; + height: 50px; + border-radius: 3px; + overflow: hidden; + margin-right: 20px; +} +.tickets .ticket-content .ticket-header .ticket-sender-picture img { + width: 100%; +} +.tickets .ticket-content .ticket-header .ticket-detail .ticket-title h4 { + font-size: 18px; + font-weight: 700; +} +.tickets .ticket-content .ticket-header .ticket-detail .ticket-info { + display: flex; + letter-spacing: 0.3px; + font-size: 12px; + font-weight: 500; + color: #34395e; +} +.tickets .ticket-content .ticket-header .ticket-detail .ticket-info .bullet { + margin: 0 10px; +} +.tickets .ticket-divider { + height: 1px; + width: 100%; + display: inline-block; + background-color: #f2f2f2; +} +.tickets .ticket-description { + color: #34395e; + font-weight: 500; + margin-top: 30px; + line-height: 28px; +} +.tickets .ticket-description p { + margin-bottom: 20px; +} +.tickets .ticket-description .ticket-form { + margin-top: 40px; +} +.tickets .ticket-description .ticket-form .note-editable { + color: #34395e; + font-weight: 500; +} +.tickets .ticket-description .ticket-form .note-editable p { + margin-bottom: 5px; +} +@media (min-width: 576px) and (max-width: 767.98px) { + .tickets { + display: inline-block; + } + .tickets .ticket-items { + width: 100%; + margin-bottom: 30px; + padding: 0; + display: none; + } + .tickets .ticket-content { + width: 100%; + } +} +@media (min-width: 768px) and (max-width: 991.98px) { + .tickets { + flex-wrap: wrap; + margin: 0 -15px; + } + .tickets .ticket-items { + width: 100%; + display: flex; + flex-wrap: nowrap; + padding: 0; + margin-bottom: 15px; + padding: 15px; + overflow: auto; + } + .tickets .ticket-items .ticket-item { + flex-basis: 50%; + flex-grow: 0; + flex-shrink: 0; + } + .tickets .ticket-content { + margin: 15px; + width: 100%; + } +} +.owl-theme .owl-item { + padding: 10px 0; +} +.owl-theme .owl-dots { + margin-top: 20px !important; +} +.owl-theme .owl-dots .owl-dot.active span { + background-color: #6777ef; +} +.activities { + display: flex; + flex-wrap: wrap; +} +.activities .activity { + width: 100%; + display: flex; + position: relative; +} +.activities .activity:before { + content: " +"; + position: absolute; + left: 25px; + top: 0; + width: 2px; + height: 100%; + background-color: #6777ef; +} +.activities .activity:last-child:before { + display: none; +} +.activities .activity .activity-icon { + width: 50px; + height: 50px; + border-radius: 3px; + line-height: 50px; + font-size: 20px; + text-align: center; + margin-right: 20px; + border-radius: 50%; + flex-shrink: 0; + text-align: center; + z-index: 1; +} +.activities .activity .activity-detail { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; + position: relative; + padding: 15px; +} +.activities .activity .activity-detail:before { + content: ""; + font-family: "Font Awesome 5 +Free"; + font-weight: 900; + font-size: 20px; + position: absolute; + left: -8px; + color: #fff; +} +.activities .activity .activity-detail h4 { + font-size: 18px; + color: #191d21; +} +.activities .activity .activity-detail p { + margin-bottom: 0; +} +.invoice { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; + padding: 40px; +} +.invoice .invoice-title .invoice-number { + float: right; + font-size: 20px; + font-weight: 700; + margin-top: -45px; +} +.invoice hr { + margin-top: 40px; + margin-bottom: 40px; + border-top-color: #f9f9f9; +} +.invoice .invoice-detail-item { + margin-bottom: 15px; +} +.invoice .invoice-detail-item .invoice-detail-name { + letter-spacing: 0.3px; + color: #98a6ad; + margin-bottom: 4px; +} +.invoice .invoice-detail-item .invoice-detail-value { + font-size: 18px; + color: #34395e; + font-weight: 700; +} +.invoice .invoice-detail-item .invoice-detail-value.invoice-detail-value-lg { + font-size: 24px; +} +@media (min-width: 768px) and (max-width: 991.98px) { + .table-invoice table { + min-width: 800px; + } +} +.empty-state { + text-align: center; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 40px; +} +.empty-state .empty-state-icon { + position: relative; + background-color: #6777ef; + width: 80px; + height: 80px; + line-height: 100px; + border-radius: 5px; +} +.empty-state .empty-state-icon i { + font-size: 40px; + color: #fff; + position: relative; + z-index: 1; +} +.empty-state h2 { + font-size: 20px; + margin-top: 30px; +} +.empty-state p { + font-size: 16px; +} +.pricing { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; + text-align: center; +} +.pricing.pricing-highlight .pricing-title { + background-color: #6777ef; + color: #fff; +} +.pricing.pricing-highlight .pricing-cta a { + background-color: #6777ef; + color: #fff; +} +.pricing.pricing-highlight .pricing-cta a:hover { + background-color: #394eea !important; +} +.pricing .pricing-padding { + padding: 40px; +} +.pricing .pricing-title { + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 2.5px; + background-color: #f3f6f8; + color: #6777ef; + border-radius: 0 0 3px 3px; + display: inline-block; + padding: 5px 15px; +} +.pricing .pricing-price { + margin-bottom: 45px; +} +.pricing .pricing-price div:first-child { + font-weight: 600; + font-size: 50px; +} +.pricing .pricing-details { + text-align: left; + display: inline-block; +} +.pricing .pricing-details .pricing-item { + display: flex; + margin-bottom: 15px; +} +.pricing .pricing-details .pricing-item .pricing-item-icon { + width: 20px; + height: 20px; + line-height: 20px; + border-radius: 50%; + text-align: center; + background-color: #63ed7a; + color: #fff; + margin-right: 10px; +} +.pricing .pricing-details .pricing-item .pricing-item-icon i { + font-size: 11px; +} +.pricing .pricing-cta { + margin-top: 20px; +} +.pricing .pricing-cta a { + display: block; + padding: 20px 40px; + background-color: #f3f6f8; + text-transform: uppercase; + letter-spacing: 2.5px; + font-size: 14px; + font-weight: 700; + text-decoration: none; + border-radius: 0 0 3px 3px; +} +.pricing .pricing-cta a .fas, +.pricing .pricing-cta a .far, +.pricing .pricing-cta a .fab, +.pricing .pricing-cta a .fal, +.pricing .pricing-cta a .ion { + margin-left: 5px; +} +.pricing .pricing-cta a:hover { + background-color: #e3eaef; +} +.hero { + border-radius: 3px; + padding: 55px; + display: flex; + justify-content: center; + flex-direction: column; + position: relative; +} +.hero.hero-bg-image { + background-position: center; + background-size: cover; +} +.hero.hero-bg-image:before { + content: " +"; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 0; + border-radius: 3px; +} +.hero.hero-bg-image.hero-bg-parallax { + background-attachment: fixed; +} +.hero .hero-inner { + position: relative; + z-index: 1; +} +.hero h2 { + font-size: 24px; +} +.hero p { + margin-bottom: 0; + font-size: 16px; + letter-spacing: 0.3px; +} +.avatar { + background: #6777ef; + border-radius: 50%; + color: #e3eaef; + display: inline-block; + font-size: 16px; + font-weight: 300; + margin: 0; + position: relative; + vertical-align: middle; + line-height: 1.28; + height: 45px; + width: 45px; +} +.avatar.avatar-xs { + font-size: 6px; + height: 15px; + width: 15px; +} +.avatar.avatar-sm { + font-size: 12px; + height: 30px; + width: 30px; +} +.avatar.avatar-lg { + font-size: 23px; + height: 60px; + width: 60px; +} +.avatar.avatar-xl { + font-size: 30px; + height: 75px; + width: 75px; +} +.avatar img { + border-radius: 50%; + height: 100%; + position: relative; + width: 100%; + z-index: 1; +} +.avatar .avatar-icon { + background: #fff; + bottom: 14.64%; + height: 50%; + padding: 0.1rem; + position: absolute; + right: 14.64%; + transform: translate(50%, 50%); + width: 50%; + z-index: 2; +} +.avatar .avatar-presence { + background: #fff; + bottom: 14.64%; + height: 50%; + padding: 0.1rem; + position: absolute; + right: 14.64%; + transform: translate(50%, 50%); + width: 50%; + z-index: 2; + background: #bcc3ce; + border-radius: 50%; + box-shadow: 0 0 0 0.1rem #fff; + height: 0.5em; + width: 0.5em; +} +.avatar .avatar-presence.online { + background: #63ed7a; +} +.avatar .avatar-presence.busy { + background: #fc544b; +} +.avatar .avatar-presence.away { + background: #ffa426; +} +.avatar[data-initial]::before { + color: currentColor; + content: attr(data-initial); + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + z-index: 1; +} +.wizard-steps { + display: flex; + margin: 0 -10px; + margin-bottom: 60px; + counter-reset: wizard-counter; +} +.wizard-steps .wizard-step { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + background-color: #fff; + border-radius: 3px; + border: none; + position: relative; + margin-bottom: 30px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05); + padding: 30px; + text-align: center; + flex-grow: 1; + flex-basis: 0; + margin: 0 10px; +} +.wizard-steps .wizard-step:before { + counter-increment: wizard-counter; + content: counter(wizard-counter); + position: absolute; + bottom: -40px; + left: 50%; + transform: translateX(-50%); + width: 20px; + height: 20px; + line-height: 21px; + font-size: 10px; + font-weight: 700; + border-radius: 50%; + background-color: #e3eaef; +} +.wizard-steps .wizard-step.wizard-step-active { + box-shadow: 0 2px 6px #acb5f6; + background-color: #6777ef; + color: #fff; +} +.wizard-steps .wizard-step.wizard-step-active:before { + background-color: #6777ef; + color: #fff; +} +.wizard-steps .wizard-step.wizard-step-success { + background-color: #63ed7a; + color: #fff; +} +.wizard-steps .wizard-step.wizard-step-success:before { + background-color: #63ed7a; + color: #fff; +} +.wizard-steps .wizard-step.wizard-step-danger { + background-color: #fc544b; + color: #fff; +} +.wizard-steps .wizard-step.wizard-step-danger:before { + background-color: #fc544b; + color: #fff; +} +.wizard-steps .wizard-step.wizard-step-warning { + background-color: #ffa426; + color: #fff; +} +.wizard-steps .wizard-step.wizard-step-warning:before { + background-color: #ffa426; + color: #fff; +} +.wizard-steps .wizard-step.wizard-step-info { + background-color: #3abaf4; + color: #fff; +} +.wizard-steps .wizard-step.wizard-step-info:before { + background-color: #3abaf4; + color: #fff; +} +.wizard-steps .wizard-step .wizard-step-icon .fas, +.wizard-steps .wizard-step .wizard-step-icon .far, +.wizard-steps .wizard-step .wizard-step-icon .fab, +.wizard-steps .wizard-step .wizard-step-icon .fal, +.wizard-steps .wizard-step .wizard-step-icon .ion { + font-size: 34px; + margin-bottom: 15px; +} +.wizard-steps .wizard-step .wizard-step-label { + font-size: 10px; + text-transform: uppercase; + letter-spacing: 1px; + font-weight: 700; +} +@media (max-width: 575.98px) { + .wizard-steps { + display: block; + } + .wizard-steps .wizard-step { + margin-bottom: 50px; + } +} /*# +sourceMappingURL=components.min.css.map */ diff --git a/public/assets/css/login_register/style.css b/public/assets/css/login_register/style.css new file mode 100644 index 0000000..18ac38f --- /dev/null +++ b/public/assets/css/login_register/style.css @@ -0,0 +1,990 @@ +@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700;800&display=swap"); + +:root { + --primary: #900c3e; + --secondary: #bfc0c0; + --white: #fff; + --text-clr: #5b6475; + --header-clr: #25273d; + --next-btn-hover: #900c3e; + --back-btn-hover: #8b8c8c; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body, +input { + font-family: "Poppins", sans-serif; +} + +input[type="text"] { + border: none; + outline: 0; +} + +video { + background: primary; +} + +.container { + position: relative; + width: 100%; + background-color: #fff; + min-height: 100vh; + overflow: hidden; +} + +.forms-container { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; +} + +.signin-signup { + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + left: 75%; + width: 50%; + transition: 1s 0.7s ease-in-out; + display: grid; + grid-template-columns: 1fr; + z-index: 3; +} + +.flex-input-btn { + width: 100%; + display: flex; + align-items: center; + margin-top: 3%; +} + +form.sign-up-form { + display: flex; + align-items: start; + justify-content: center; + flex-direction: column; + padding: 0rem 2rem 0 5rem; + transition: all 0.2s 0.7s; + overflow: hidden; + grid-column: 1 / 2; + grid-row: 1 / 2; + opacity: 0; + width: 110%; + z-index: 1; +} + +form.sign-in-form { + display: flex; + align-items: start; + justify-content: center; + flex-direction: column; + padding: 0 3rem; + transition: all 0.2s 0.7s; + overflow: hidden; + grid-column: 1 / 2; + grid-row: 1 / 2; + width: 100%; + z-index: 8; +} + +form p { + font-size: 0.9rem; + width: 110%; + margin-bottom: 2%; +} + +.title { + font-size: 2.2rem; + color: #444; + margin-bottom: 10px; +} + +.input-field-signin-flex, +.input-field-signup-flex { + width: 100%; + height: 55px; + margin-top: 2%; + background-color: #f0f0f0; + border-radius: 1rem; + display: grid; + grid-template-columns: 15% 85%; + display: flex; + align-items: center; + position: relative; +} + +.input { + width: 100%; + height: 55px; + background-color: #f0f0f0; + border-radius: 1rem; + display: grid; + grid-template-columns: 15% 85%; + display: flex; + align-items: center; + position: relative; +} +.input input { + width: 110%; + height: 100%; + background: none; + outline: none; + border: none; + border-radius: 1rem; + line-height: 1; + font-weight: 600; + margin-right: 1rem; + font-size: 0.8rem; + color: #333; +} + +.input i { + padding: 0 1.5rem; + color: #acacac; + transition: 0.5s; +} + +.up { + margin-top: 3%; +} + +.input-field-signin-flex input, +.input-field-signup-flex input { + width: 82%; + height: 100%; + background: none; + outline: none; + border: none; + border-radius: 1rem; + line-height: 1; + font-weight: 600; + margin-right: 1rem; + font-size: 0.8rem; + color: #333; +} + +.input-field-signin-flex i, +.input-field-signup-flex i { + padding: 0 1.5rem; + color: #acacac; + transition: 0.5s; +} + +.input-field { + width: 100%; + height: 55px; + background-color: #f0f0f0; + border-radius: 1rem; + display: grid; + grid-template-columns: 15% 85%; + display: flex; + align-items: center; + position: relative; + margin-top: 17px; +} + +.input-field i, +.input-field box-icon { + padding: 0 1.5rem; + color: #acacac; + transition: 0.5s; +} + +.input-field input { + width: 110%; + height: 100%; + background: none; + outline: none; + border: none; + border-radius: 1rem; + line-height: 1; + font-weight: 600; + margin-right: 1rem; + font-size: 0.8rem; + color: #333; +} + +.input-field input::placeholder { + color: #aaa; + font-weight: 500; +} + +.error { + display: none; +} + +.validate { + width: 120%; + align-items: center; + padding: 0.5rem 0.1rem; + color: red; + font-size: 0.9rem; +} + +.validate-text { + margin-left: 1%; +} + +.btn { + width: 100%; + background-color: #900c3e; + border: none; + outline: none; + height: 49px; + border-radius: 1rem; + color: #fff; + text-transform: uppercase; + font-weight: 600; + margin: 10px 0; + cursor: pointer; + transition: 0.25s; +} + +.btn:hover { + -webkit-transform: translateY(-0.22em); + transform: translateY(-0.252m); +} + +.btn-otp, +.btn-foto { + width: fit-content; + height: fit-content; + margin-left: 2%; + font-size: 0.7rem; + padding: 0.85rem 0.9rem; + border: 1px solid #900c3e; + color: #900c3e; + background: none; + outline: none; + border-radius: 0.7rem; + text-transform: uppercase; + font-weight: 600; + cursor: pointer; + transition: 0.25s; +} + +.btn-otp:hover { + -webkit-transform: translateY(-0.22em); + transform: translateY(-0.252m); +} + +.btn-otp:disabled { + cursor: not-allowed; /* Mengganti cursor menjadi "not-allowed" saat tombol dinonaktifkan */ + opacity: 0.6; /* Mengurangi opasitas tombol saat dinonaktifkan */ + border-color: #ccc; /* Mengganti warna border saat dinonaktifkan */ + color: #ccc; /* Mengganti warna teks saat dinonaktifkan */ + pointer-events: none; /* Mencegah interaksi dengan tombol saat dinonaktifkan */ +} + +.panels-container { + position: absolute; + height: 100%; + width: 100%; + top: 0; + left: 0; + display: grid; + grid-template-columns: repeat(2, 1fr); +} + +.container:before { + content: ""; + position: absolute; + height: 2000px; + width: 2000px; + top: -10%; + right: 48%; + transform: translateY(-50%); + background-image: linear-gradient(-45deg, #900c3e 0%, #900c3e 100%); + transition: 1.8s ease-in-out; + border-radius: 50%; + z-index: 4; +} + +.image { + width: 100%; + transition: transform 1.1s ease-in-out; + transition-delay: 0.4s; +} + +.panel { + display: flex; + flex-direction: column; + align-items: flex-end; + justify-content: space-around; + text-align: center; + z-index: 4; +} + +.left-panel { + pointer-events: all; + padding: 3rem 17% 2rem 12%; +} + +.right-panel { + pointer-events: none; + padding: 3rem 12% 2rem 17%; +} + +.panel .content { + color: #fff; + transition: transform 0.9s ease-in-out; + transition-delay: 0.6s; +} + +.content a { + cursor: pointer; + color: white; + font-size: 12px; +} + +.panel h3 { + font-weight: 600; + line-height: 1; + font-size: 1.5rem; +} + +.panel p { + font-size: 1rem; + padding: 0.7rem 0; +} + +.btn.transparent { + margin: 0; + background: none; + border: 2px solid #fff; + width: 130px; + height: 41px; + font-weight: 600; + font-size: 0.8rem; +} + +.right-panel .image, +.right-panel .content { + transform: translateX(800px); +} + +/* ANIMATION */ + +.container.sign-up-mode:before { + transform: translate(100%, -50%); + right: 52%; +} + +.container.sign-up-mode .left-panel .image, +.container.sign-up-mode .left-panel .content { + transform: translateX(-800px); +} + +.container.sign-up-mode .signin-signup { + left: 25%; +} + +.container.sign-up-mode form.sign-up-form { + opacity: 1; + z-index: 2; +} + +.container.sign-up-mode form.sign-in-form { + opacity: 0; + z-index: 1; +} + +.container.sign-up-mode .right-panel .image, +.container.sign-up-mode .right-panel .content { + transform: translateX(0%); +} + +.container.sign-up-mode .left-panel { + pointer-events: none; +} + +.container.sign-up-mode .right-panel { + pointer-events: all; +} + +@media (max-width: 1100px) { + .container { + min-height: 1000px; + height: 100vh; + } + + form.sign-in-form { + justify-content: start; + } + + .header { + padding: 0; + } + + .header ul li div { + padding: 0 1.2rem; + } + + .signin-signup { + width: 100%; + top: 95%; + transform: translate(-50%, -100%); + transition: 1s 0.8s ease-in-out; + } + + .signin-signup, + .container.sign-up-mode .signin-signup { + left: 50%; + } + + .panels-container { + grid-template-columns: 1fr; + grid-template-rows: 1fr 2fr 1fr; + } + + .panel { + flex-direction: row; + justify-content: space-around; + grid-column: 1 / 2; + } + + .right-panel { + grid-row: 3 / 4; + } + + .left-panel { + grid-row: 1 / 2; + } + + .image { + width: 200px; + transition: transform 0.9s ease-in-out; + transition-delay: 0.6s; + } + + .panel .content { + padding-right: 15%; + transition: transform 0.9s ease-in-out; + transition-delay: 0.8s; + } + + .panel h3 { + font-size: 1.2rem; + } + + .panel p { + font-size: 0.7rem; + padding: 0.5rem 0; + } + + .btn.transparent { + width: 110px; + height: 35px; + font-size: 0.7rem; + } + + .container:before { + width: 1500px; + height: 1500px; + transform: translateX(-50%); + left: 30%; + bottom: 68%; + right: initial; + top: initial; + transition: 2s ease-in-out; + } + + .container.sign-up-mode:before { + transform: translate(-50%, 100%); + bottom: 26%; + right: initial; + } + + .container.sign-up-mode .left-panel .image, + .container.sign-up-mode .left-panel .content { + transform: translateY(-300px); + } + + .container.sign-up-mode .right-panel .image, + .container.sign-up-mode .right-panel .content { + transform: translateY(0px); + } + + .right-panel .image, + .right-panel .content { + transform: translateY(300px); + } + + .container.sign-up-mode .signin-signup { + top: 5%; + transform: translate(-50%, 0); + } +} + +@media (max-width: 740px) { + .form_4 div { + width: 90%; + } + + .btns_wrap .common_btns.form_4_btns { + width: 90%; + } + + .image { + display: none; + } + .panel .content { + padding: 0.5rem 1rem; + } + .container { + padding: 1.5rem; + } + + .container:before { + bottom: 72%; + left: 50%; + } + + .container.sign-up-mode:before { + bottom: 28%; + left: 50%; + } +} + +/* // MULTIPLE PROGGRESS BAR */ +.wrapper { + width: fit-content; + max-width: 100%; + background: var(--white); + margin: 0 auto 0; + border-radius: 1rem; +} + +.header { + display: flex; + justify-content: center; +} + +.header ul { + display: flex; +} + +.header ul li { + margin-right: 50px; + position: relative; + list-style: none; +} + +.header ul li:last-child { + margin-right: 0; +} + +.header ul li:before { + content: ""; + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 55px; + width: 130%; + height: 4px; + background: var(--secondary); +} + +.header ul li:last-child:before { + display: none; +} + +.header ul li div { + padding: 1.2rem; + border-radius: 50%; +} + +.header ul li p { + width: 50px; + height: 50px; + background: var(--secondary); + color: var(--white); + text-align: center; + line-height: 50px; + border-radius: 50%; +} + +.header ul li.active:before { + background: var(--primary); +} + +.header ul li.active p { + background: var(--primary); +} + +.form_wrap h2 { + color: var(--header-clr); + text-align: start; + text-transform: uppercase; + margin-bottom: 20px; +} + +.form_wrap .input_wrap { + width: 350px; + max-width: 100%; + margin: 0 auto 20px; +} + +.form_wrap .input_wrap:last-child { + margin-bottom: 0; +} + +.form_wrap .input_wrap label { + display: block; + margin-bottom: 5px; +} + +.form_wrap .input_wrap .input { + border: 2px solid var(--secondary); + border-radius: 3px; + padding: 10px; + display: block; + width: 100%; + font-size: 16px; + transition: 0.5s ease; +} + +.form_wrap .input_wrap .input:focus { + border-color: var(--primary); +} + +.btns_wrap { + width: 100%; + margin: 4% auto; +} + +.btns_wrap .common_btns { + display: flex; + justify-content: space-between; +} + +.btns_wrap .common_btns.form_1_btns { + justify-content: flex-end; +} + +.btns_wrap .common_btns.form_2_btns { + width: 190%; + margin-top: 10%; +} + +.btns_wrap .common_btns.form_3_btns { + width: 60%; + margin-top: 2%; +} + +.btns_wrap .common_btns button { + position: relative; + border: 0; + padding: 12px 15px; + background: var(--primary); + color: var(--white); + width: 135px; + justify-content: center; + display: flex; + align-items: center; + font-size: 0.8rem; + border-radius: 1rem; + transition: 0.5s ease; + cursor: pointer; +} + +.btns_wrap .common_btns button.btn_back { + background: var(--secondary); + box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; + transition: 0.25s; +} + +.btns_wrap .common_btns button.btn_next { + box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; + transition: 0.25s; +} + +.btns_wrap .common_btns button.btn_done { + box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; + transition: 0.25s; +} + +.btns_wrap .common_btns button.btn_next .icon { + display: flex; + margin-left: 10px; +} + +.btns_wrap .common_btns button.btn_back .icon { + display: flex; + margin-right: 10px; +} + +.btns_wrap .common_btns button.btn_next:hover, +.btns_wrap .common_btns button.btn_done:hover { + background: var(--next-btn-hover); + box-shadow: rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, + rgba(0, 0, 0, 0.3) 0px 3px 7px -3px; + -webkit-transform: translateY(-0.22em); + transform: translateY(-0.252m); +} + +.btns_wrap .common_btns button.btn_back:hover { + background: var(--back-btn-hover); + box-shadow: rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, + rgba(0, 0, 0, 0.3) 0px 3px 7px -3px; + -webkit-transform: translateY(-0.22em); + transform: translateY(-0.252m); +} + +.modal_wrapper { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + visibility: hidden; + z-index: 5; +} + +.modal_wrapper .shadow { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.8); + opacity: 0; + transition: 0.2s ease; +} + +.modal_wrapper .success_wrap { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -800px); + background: var(--white); + padding: 50px; + display: flex; + align-items: center; + border-radius: 5px; + transition: 0.5s ease; +} + +.modal_wrapper .success_wrap .modal_icon { + margin-right: 20px; + width: 50px; + height: 50px; + background: var(--primary); + color: var(--white); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 32px; + font-weight: 700; +} + +.modal_wrapper.active { + visibility: visible; +} + +.modal_wrapper.active .shadow { + opacity: 1; +} + +.modal_wrapper.active .success_wrap { + transform: translate(-50%, -50%); +} + +/****************************************** + /* END DROPDOWN INPUT + ==================================================*/ +.select2-container .select2-selection--single { + border: none; + background: none; + outline: none; + box-shadow: none; + padding: 0; +} + +.select2-container .select2-selection--single:focus { + border: none; +} + +.select2-container .select2-selection--single .select2-selection__arrow { + border: none; + background: none; +} + +.select2-container--default.select2-container--open .select2-selection--single { + border: none; +} + +.select2-results { + border-bottom: 1px solid #aaa; +} + +.select2-results__option { + padding: 10px; + color: #333; + background-color: white; +} + +.select2-container--default + .select2-results + > .select2-results__options + .select2-results__option--highlighted { + background-color: #900c3e !important; + color: #fff !important; +} + +.gender-select-menu, +.select-menu { + height: 100%; + font-size: 0.9rem; +} +.gender-select-menu .gender-select-input, +.select-menu .select-btn { + width: 100%; + height: 55px; + background: #f0f0f0; + border-radius: 1rem; + grid-template-columns: 15% 85%; + display: flex; + padding: 0 1.2rem; + align-items: center; + justify-content: space-between; + position: relative; + cursor: pointer; +} +.select-btn i { + font-size: 25px; + transition: 0.3s; +} + +.gender-select, +.sBtn-text { + font-size: 0.8rem; + color: #aaa; + font-weight: 500; +} + +.gender-select-menu.active .select-btn i, +.select-menu.active .select-btn i { + transform: rotate(-180deg); +} +.gender-select-menu .gender-options, +.select-menu .options { + width: 100%; + max-height: 200px; + overflow-y: auto; + position: absolute; + padding: 0.5rem 0; + margin-top: 10px; + border-radius: 1rem; + box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px; + display: none; + background: white; + z-index: 7; +} + +.gender-select-menu.active .gender-options, +.select-menu.active .options { + display: block; +} +.options .gender-option, +.options .option { + display: flex; + height: 55px; + cursor: pointer; + padding: 0 1.4rem; + border-radius: 8px; + align-items: center; + background: #fff; +} +.options .gender-option:hover, +.options .option:hover { + background: #f2f2f2; +} + +.option .gender-option-text, +.option .option-text { + font-size: 0.8rem; + color: #333; +} +/****************************************** + /* END DROPDOWN INPUT + ==================================================*/ + +/****************************************** + /* SLIDER + ==================================================*/ +.slider-container { + position: relative; + max-width: 60%; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.slider { + display: flex; + + transition: transform 0.5s ease-in-out; +} + +.slide { + flex: 0 0 100%; +} + +.slider h3 { + margin: 1rem 0; +} + +.slide img { + width: 100%; + height: auto; +} + +.dots { + display: flex; + align-items: center; + width: fit-content; + margin-top: 1rem; +} + +.dot { + display: inline-block; + width: 10px; + height: 10px; + margin: 0 5px; + background-color: #bbb; + border-radius: 50%; + cursor: pointer; +} + +.prev, +.next { + font-size: 1rem; + background: none; + border: none; + cursor: pointer; + margin: 0 1rem; +} + +.dot.active { + background-color: #900c3e; +} + +#webcamKtp, +#webcamEkyc { + height: 30vh; + border-radius: 1rem; +} +/****************************************** + /* END SLIDER + ==================================================*/ diff --git a/public/assets/css/main.css b/public/assets/css/main.css new file mode 100644 index 0000000..e29ef20 --- /dev/null +++ b/public/assets/css/main.css @@ -0,0 +1,54 @@ + +/*-------------------------------------------------------------- +# Profie Page +--------------------------------------------------------------*/ +.profile .profile-card img { + max-width: 120px; +} + +.profile .profile-card h2 { + font-size: 24px; + font-weight: 700; + color: #2c384e; + margin: 10px 0 0 0; +} + +.profile .profile-card h3 { + font-size: 18px; +} + +.profile .profile-card .social-links a { + font-size: 20px; + display: inline-block; + color: rgba(1, 41, 112, 0.5); + line-height: 0; + margin-right: 10px; + transition: 0.3s; +} + +.profile .profile-card .social-links a:hover { + color: #012970; +} + +.profile .profile-overview .row { + margin-bottom: 20px; + font-size: 15px; +} + +.profile .profile-overview .card-title { + color: #012970; +} + +.profile .profile-overview .label { + font-weight: 600; + color: rgba(1, 41, 112, 0.6); +} + +.profile .profile-edit label { + font-weight: 600; + color: rgba(1, 41, 112, 0.6); +} + +.profile .profile-edit img { + max-width: 120px; +} diff --git a/public/assets/css/style.css b/public/assets/css/style.css index d23859d..a29b547 100644 --- a/public/assets/css/style.css +++ b/public/assets/css/style.css @@ -64,11 +64,11 @@ } a { - color: #900C3F; + color: #900c3f; font-weight: 500; - transition: all .5s; - -webkit-transition: all .5s; - -o-transition: all .5s; + transition: all 0.5s; + -webkit-transition: all 0.5s; + -o-transition: all 0.5s; } a:not(.btn-social-icon):not(.btn-social):not(.page-link) .ion, @@ -80,7 +80,15 @@ a:not(.btn-social-icon):not(.btn-social):not(.page-link) .fab { } .bg-primary { - background-color: #BA2760 !important; + background-color: #ba2760 !important; +} + +.bg-buyer { + background-color: #d6760f !important; +} + +.bg-seller { + background-color: #02a393 !important; } .bg-secondary { @@ -115,7 +123,7 @@ a:not(.btn-social-icon):not(.btn-social):not(.page-link) .fab { .text-primary-all *, .text-primary-all *:before, .text-primary-all *:after { - color: #900C3F !important; + color: #900c3f !important; } .text-secondary, @@ -234,11 +242,11 @@ select.form-control:not([size]):not([multiple]), .form-control:not(.form-control-sm):not(.form-control-lg) { font-size: 14px; padding: 10px 15px; - height: 42px; + height: auto; } textarea.form-control { - height: 64px !important; + min-height: 200px !important; } .custom-control { @@ -294,11 +302,11 @@ select.form-control:not([size]):not([multiple]) { } .form-group .control-label, -.form-group>label { +.form-group > label { font-weight: 600; color: #34395e; font-size: 12px; - letter-spacing: .5px; + letter-spacing: 0.5px; } .form-group.floating-addon { @@ -334,7 +342,7 @@ select.form-control:not([size]):not([multiple]) { padding-left: 40px; } -.form-group.floating-addon .form-control+.form-control { +.form-group.floating-addon .form-control + .form-control { border-radius: 0 3px 3px 0; padding-left: 15px; } @@ -348,9 +356,9 @@ select.form-control:not([size]):not([multiple]) { line-height: 22px; } -.custom-radio .custom-control-input:checked~.custom-control-label::before, -.custom-control-input:checked~.custom-control-label::before { - background-color: #900C3F !important; +.custom-radio .custom-control-input:checked ~ .custom-control-label::before, +.custom-control-input:checked ~ .custom-control-label::before { + background-color: #900c3f !important; } .custom-file-label { @@ -369,12 +377,12 @@ select.form-control:not([size]):not([multiple]) { outline: none; } -.custom-file-input:focus+.custom-file-label { +.custom-file-input:focus + .custom-file-label { box-shadow: none; - border-color: #900C3F; + border-color: #900c3f; } -.custom-file-input:focus+.custom-file-label:after { +.custom-file-input:focus + .custom-file-label:after { border-color: transparent; } @@ -389,7 +397,7 @@ select.form-control:not([size]):not([multiple]) { position: relative; } -.selectgroup-item+.selectgroup-item { +.selectgroup-item + .selectgroup-item { margin-left: -1px; } @@ -433,17 +441,17 @@ select.form-control:not([size]):not([multiple]) { } .selectgroup-button-icon { - padding-left: .5rem; - padding-right: .5rem; + padding-left: 0.5rem; + padding-right: 0.5rem; } .selectgroup-button-icon i { font-size: 14px; } -.selectgroup-input:focus+.selectgroup-button, -.selectgroup-input:checked+.selectgroup-button { - background-color: #900C3F; +.selectgroup-input:focus + .selectgroup-button, +.selectgroup-input:checked + .selectgroup-button { + background-color: #900c3f; color: #fff; z-index: 1; } @@ -457,7 +465,7 @@ select.form-control:not([size]):not([multiple]) { } .selectgroup-pills .selectgroup-item { - margin-right: .5rem; + margin-right: 0.5rem; -ms-flex-positive: 0; flex-grow: 0; } @@ -493,7 +501,7 @@ select.form-control:not([size]):not([multiple]) { } .custom-switches-stacked .custom-switch { - margin-bottom: .5rem; + margin-bottom: 0.5rem; } .custom-switch-indicator { @@ -505,11 +513,11 @@ select.form-control:not([size]):not([multiple]) { position: relative; vertical-align: bottom; border: 1px solid rgba(0, 40, 100, 0.12); - transition: .3s border-color, .3s background-color; + transition: 0.3s border-color, 0.3s background-color; } .custom-switch-indicator:before { - content: ''; + content: ""; position: absolute; height: calc(1.25rem - 4px); width: calc(1.25rem - 4px); @@ -517,28 +525,28 @@ select.form-control:not([size]):not([multiple]) { left: 1px; background: #fff; border-radius: 50%; - transition: .3s left; + transition: 0.3s left; } -.custom-switch-input:checked~.custom-switch-indicator { - background: #900C3F; +.custom-switch-input:checked ~ .custom-switch-indicator { + background: #900c3f; } -.custom-switch-input:checked~.custom-switch-indicator:before { +.custom-switch-input:checked ~ .custom-switch-indicator:before { left: calc(1rem + 1px); } -.custom-switch-input:focus~.custom-switch-indicator { - border-color: #900C3F; +.custom-switch-input:focus ~ .custom-switch-indicator { + border-color: #900c3f; } .custom-switch-description { - margin-left: .5rem; + margin-left: 0.5rem; color: #6e7687; - transition: .3s color; + transition: 0.3s color; } -.custom-switch-input:checked~.custom-switch-description { +.custom-switch-input:checked ~ .custom-switch-description { color: #495057; } @@ -564,19 +572,19 @@ select.form-control:not([size]):not([multiple]) { position: relative; } -.imagecheck-input:focus~.imagecheck-figure { - border-color: #900C3F; +.imagecheck-input:focus ~ .imagecheck-figure { + border-color: #900c3f; } -.imagecheck-input:checked~.imagecheck-figure { +.imagecheck-input:checked ~ .imagecheck-figure { border-color: rgba(0, 40, 100, 0.24); } .imagecheck-figure:before { - content: ''; + content: ""; position: absolute; - top: .25rem; - left: .25rem; + top: 0.25rem; + left: 0.25rem; display: block; width: 1rem; height: 1rem; @@ -585,22 +593,24 @@ select.form-control:not([size]):not([multiple]) { -moz-user-select: none; -ms-user-select: none; user-select: none; - background: #900C3F url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") no-repeat center center/50% 50%; + background: #900c3f + url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") + no-repeat center center/50% 50%; color: #fff; z-index: 1; border-radius: 3px; opacity: 0; - transition: .3s opacity; + transition: 0.3s opacity; } -.imagecheck-input:checked~.imagecheck-figure:before { +.imagecheck-input:checked ~ .imagecheck-figure:before { opacity: 1; } .imagecheck-image { max-width: 100%; - opacity: .64; - transition: .3s opacity; + opacity: 0.64; + transition: 0.3s opacity; } .imagecheck-image:first-child { @@ -617,25 +627,25 @@ select.form-control:not([size]):not([multiple]) { opacity: 1; } -.imagecheck-input:focus~.imagecheck-figure .imagecheck-image, -.imagecheck-input:checked~.imagecheck-figure .imagecheck-image { +.imagecheck-input:focus ~ .imagecheck-figure .imagecheck-image, +.imagecheck-input:checked ~ .imagecheck-figure .imagecheck-image { opacity: 1; } .imagecheck-caption { text-align: center; - padding: .25rem .25rem; + padding: 0.25rem 0.25rem; color: #9aa0ac; font-size: 0.875rem; - transition: .3s color; + transition: 0.3s color; } .imagecheck:hover .imagecheck-caption { color: #495057; } -.imagecheck-input:focus~.imagecheck-figure .imagecheck-caption, -.imagecheck-input:checked~.imagecheck-figure .imagecheck-caption { +.imagecheck-input:focus ~ .imagecheck-figure .imagecheck-caption, +.imagecheck-input:checked ~ .imagecheck-figure .imagecheck-caption { color: #495057; } @@ -665,18 +675,19 @@ select.form-control:not([size]):not([multiple]) { } .colorinput-color:before { - content: ''; + content: ""; opacity: 0; position: absolute; - top: .25rem; - left: .25rem; + top: 0.25rem; + left: 0.25rem; height: 1.25rem; width: 1.25rem; - transition: .3s opacity; - background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") no-repeat center center/50% 50%; + transition: 0.3s opacity; + background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") + no-repeat center center/50% 50%; } -.colorinput-input:checked~.colorinput-color:before { +.colorinput-input:checked ~ .colorinput-color:before { opacity: 1; } @@ -702,7 +713,7 @@ select.form-control:not([size]):not([multiple]) { } .list-group-item.active { - background-color: #900C3F; + background-color: #900c3f; } .list-group-item.disabled { @@ -710,7 +721,7 @@ select.form-control:not([size]):not([multiple]) { } .list-group-item-primary { - background-color: #900C3F; + background-color: #900c3f; color: #fff; } @@ -841,13 +852,13 @@ select.form-control:not([size]):not([multiple]) { margin-top: 20px; /* Adjust the value to your preference */ padding: 20px; } -.card-head{ +.card-head { /* background-image: linear-gradient(to bottom right, rgb(144, 12, 63) 0%, rgb(186, 39, 96) 100%, rgb(161, 9, 73) 100%); */ text-align: center; width: 100%; - background-color: #E6EBEE; - border-radius: 10px 10px 10px 10px ; - color: #393B45; + background-color: #e6ebee; + border-radius: 10px 10px 10px 10px; + color: #393b45; height: 250px; font-weight: 800; } @@ -855,12 +866,12 @@ select.form-control:not([size]):not([multiple]) { width: 100%; height: 100%; object-fit: cover; - border-radius: 10px 10px 10px 10px ; + border-radius: 10px 10px 10px 10px; } .image-crop { display: block; position: relative; - background-color: #E6EBEE; + background-color: #e6ebee; width: 120px; height: 120px; margin: 0 auto; @@ -868,8 +879,8 @@ select.form-control:not([size]):not([multiple]) { margin-right: 950px; overflow: hidden; border-radius: 50%; - box-shadow:2px 2px 5px rgba(0, 0, 0, 0.5); - border:3px solid #fff; + box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); + border: 3px solid #fff; } .card .card-header, .card .card-body, @@ -896,7 +907,7 @@ select.form-control:not([size]):not([multiple]) { margin-top: 8px; } -.card .card-body .section-title+.section-lead { +.card .card-body .section-title + .section-lead { margin-top: -5px; } @@ -935,7 +946,7 @@ select.form-control:not([size]):not([multiple]) { border-radius: 30px; } -.card .card-header .form-control+.input-group-btn .btn { +.card .card-header .form-control + .input-group-btn .btn { margin-top: -1px; } @@ -952,63 +963,89 @@ select.form-control:not([size]):not([multiple]) { margin-left: 250px; margin-bottom: 0; } -.card .card-header h4+.card-header-action, -.card .card-header h4+.card-header-form { +.card .card-header h4 + .card-header-action, +.card .card-header h4 + .card-header-form { margin-left: auto; } -.card .card-header h4+.card-header-action .btn, -.card .card-header h4+.card-header-form .btn { +.card .card-header h4 + .card-header-action .btn, +.card .card-header h4 + .card-header-form .btn { font-size: 12px; border-radius: 30px !important; padding-left: 13px !important; padding-right: 13px !important; } -.card .card-header h4+.card-header-action .btn.active, -.card .card-header h4+.card-header-form .btn.active { +.card .card-header h4 + .card-header-action .btn.active, +.card .card-header h4 + .card-header-form .btn.active { box-shadow: 0 2px 6px #acb5f6; background-color: #6777ef; color: #fff; } -.card .card-header h4+.card-header-action .dropdown, -.card .card-header h4+.card-header-form .dropdown { +.card .card-header h4 + .card-header-action .dropdown, +.card .card-header h4 + .card-header-form .dropdown { display: inline; } -.card .card-header h4+.card-header-action .btn-group .btn, -.card .card-header h4+.card-header-form .btn-group .btn { +.card .card-header h4 + .card-header-action .btn-group .btn, +.card .card-header h4 + .card-header-form .btn-group .btn { border-radius: 0 !important; } -.card .card-header h4+.card-header-action .btn-group .btn:first-child, -.card .card-header h4+.card-header-form .btn-group .btn:first-child { +.card .card-header h4 + .card-header-action .btn-group .btn:first-child, +.card .card-header h4 + .card-header-form .btn-group .btn:first-child { border-radius: 30px 0 0 30px !important; } -.card .card-header h4+.card-header-action .btn-group .btn:last-child, -.card .card-header h4+.card-header-form .btn-group .btn:last-child { +.card .card-header h4 + .card-header-action .btn-group .btn:last-child, +.card .card-header h4 + .card-header-form .btn-group .btn:last-child { border-radius: 0 30px 30px 0 !important; } -.card .card-header h4+.card-header-action .input-group .form-control, -.card .card-header h4+.card-header-form .input-group .form-control { +.card .card-header h4 + .card-header-action .input-group .form-control, +.card .card-header h4 + .card-header-form .input-group .form-control { border-radius: 30px 0 0 30px !important; } -.card .card-header h4+.card-header-action .input-group .form-control+.input-group-btn .btn, -.card .card-header h4+.card-header-form .input-group .form-control+.input-group-btn .btn { +.card + .card-header + h4 + + .card-header-action + .input-group + .form-control + + .input-group-btn + .btn, +.card + .card-header + h4 + + .card-header-form + .input-group + .form-control + + .input-group-btn + .btn { border-radius: 0 30px 30px 0 !important; } -.card .card-header h4+.card-header-action .input-group .input-group-btn+.form-control, -.card .card-header h4+.card-header-form .input-group .input-group-btn+.form-control { +.card + .card-header + h4 + + .card-header-action + .input-group + .input-group-btn + + .form-control, +.card + .card-header + h4 + + .card-header-form + .input-group + .input-group-btn + + .form-control { border-radius: 0 30px 30px 0 !important; } -.card .card-header h4+.card-header-action .input-group .input-group-btn .btn, -.card .card-header h4+.card-header-form .input-group .input-group-btn .btn { +.card .card-header h4 + .card-header-action .input-group .input-group-btn .btn, +.card .card-header h4 + .card-header-form .input-group .input-group-btn .btn { margin-top: -1px; border-radius: 30px 0 0 30px !important; } @@ -1023,7 +1060,7 @@ select.form-control:not([size]):not([multiple]) { } .card.card-progress:after { - content: ' '; + content: " "; position: absolute; top: 0; left: 0; @@ -1118,7 +1155,6 @@ select.form-control:not([size]):not([multiple]) { .card.card-hero .card-header .card-icon .fab, .card.card-hero .card-header .card-icon .fal { font-size: 140px; - } .card.card-statistic-1 .card-header, @@ -1203,8 +1239,8 @@ select.form-control:not([size]):not([multiple]) { padding-top: 20px; } -.card.card-statistic-2 .card-header+.card-body, -.card.card-statistic-2 .card-body+.card-header { +.card.card-statistic-2 .card-header + .card-body, +.card.card-statistic-2 .card-body + .card-header { padding-top: 0; } @@ -1212,7 +1248,7 @@ select.form-control:not([size]):not([multiple]) { .card.card-statistic-2 .card-header h4 { font-weight: 600; font-size: 13px; - letter-spacing: .5px; + letter-spacing: 0.5px; } .card.card-statistic-1 .card-header h4 { @@ -1251,7 +1287,7 @@ select.form-control:not([size]):not([multiple]) { background-color: #fff; font-size: 13px; font-weight: 600; - letter-spacing: .3px; + letter-spacing: 0.3px; } .card .card-stats .card-stats-items { @@ -1268,7 +1304,7 @@ select.form-control:not([size]):not([multiple]) { .card .card-stats .card-stats-item .card-stats-item-label { font-size: 12px; - letter-spacing: .5px; + letter-spacing: 0.5px; margin-top: 4px; text-overflow: ellipsis; overflow: hidden; @@ -1313,7 +1349,7 @@ select.form-control:not([size]):not([multiple]) { } .card.card-large-icons .card-body p { - opacity: .6; + opacity: 0.6; font-weight: 500; } @@ -1341,7 +1377,7 @@ select.form-control:not([size]):not([multiple]) { .card.bg-dark .card-header, .card.bg-warning .card-header { color: #fff; - opacity: .9; + opacity: 0.9; } @media (max-width: 575.98px) { @@ -1361,8 +1397,8 @@ select.form-control:not([size]):not([multiple]) { flex-wrap: wrap; } - .card .card-header h4+.card-header-action, - .card .card-header h4+.card-header-form { + .card .card-header h4 + .card-header-action, + .card .card-header h4 + .card-header-form { flex-grow: 0; width: 100%; margin-top: 10px; @@ -1378,7 +1414,11 @@ select.form-control:not([size]):not([multiple]) { padding: 5px 7px; } - .card .card-stats .card-stats-items .card-stats-item .card-stats-item-count { + .card + .card-stats + .card-stats-items + .card-stats-item + .card-stats-item-count { font-size: 16px; } @@ -1427,7 +1467,7 @@ select.form-control:not([size]):not([multiple]) { font-size: 12px; margin-top: 5px; opacity: 0; - transition: all .3s; + transition: all 0.3s; } .table-links a { @@ -1502,7 +1542,7 @@ table tr:hover .table-links { } .modal-progress .modal-content:after { - content: ' '; + content: " "; position: absolute; top: 0; left: 0; @@ -1523,14 +1563,14 @@ table tr:hover .table-links { /* 3.9 Nav */ .nav-tabs .nav-item .nav-link { - color: #900C3F; + color: #900c3f; } .nav-tabs .nav-item .nav-link.active { color: #000; } -.tab-content>.tab-pane { +.tab-content > .tab-pane { padding: 10px 0; line-height: 24px; } @@ -1542,13 +1582,13 @@ table tr:hover .table-links { } .nav-pills .nav-link.active, -.nav-pills .show>.nav-link { +.nav-pills .show > .nav-link { color: #fff; - background-color: #900C3F; + background-color: #900c3f; } .nav-pills .nav-item .nav-link { - color: #900C3F; + color: #900c3f; padding-left: 15px !important; padding-right: 15px !important; } @@ -1560,7 +1600,7 @@ table tr:hover .table-links { .nav-pills .nav-item .nav-link.active { box-shadow: 0 2px 6px #acb5f6; color: #fff; - background-color: #900C3F; + background-color: #900c3f; } .nav-pills .nav-item .nav-link .badge { @@ -1579,21 +1619,21 @@ table tr:hover .table-links { /* 3.10 Pagination */ .page-item .page-link { - color: #900C3F; + color: #900c3f; border-radius: 3px; margin: 0 3px; } .page-item.active .page-link { - background-color: #900C3F; - border-color: #900C3F; + background-color: #900c3f; + border-color: #900c3f; } .page-item.disabled .page-link { border-color: transparent; background-color: #f9fafe; - color: #900C3F; - opacity: .6; + color: #900c3f; + opacity: 0.6; } .page-link { @@ -1603,7 +1643,7 @@ table tr:hover .table-links { } .page-link:hover { - background-color: #900C3F; + background-color: #900c3f; color: #fff; border-color: transparent; } @@ -1621,13 +1661,14 @@ table tr:hover .table-links { vertical-align: middle; padding: 7px 12px; font-weight: 600; - letter-spacing: .3px; + letter-spacing: 0.3px; border-radius: 30px; font-size: 12px; } .badge.badge-warning { - color: #fff; + background-color: #ffb300; + color: #ffffff; } .badge.badge-primary { @@ -1737,8 +1778,8 @@ h6 .badge { font-weight: 600; font-size: 12px; line-height: 24px; - padding: .3rem .8rem; - letter-spacing: .5px; + padding: 0.3rem 0.8rem; + letter-spacing: 0.5px; } .btn.btn-icon-split { @@ -1787,12 +1828,12 @@ h6 .badge { background-color: white; } -.btn>i { +.btn > i { margin-left: 0 !important; } .btn.btn-lg { - padding: .55rem 1.5rem; + padding: 0.55rem 1.5rem; font-size: 12px; } @@ -1805,7 +1846,7 @@ h6 .badge { } .btn.btn-sm { - padding: .10rem .4rem; + padding: 0.1rem 0.4rem; font-size: 12px; } @@ -2066,8 +2107,8 @@ h6 .badge { .btn-outline-primary, .btn-outline-primary.disabled { - border-color: #900C3F; - color: #900C3F; + border-color: #900c3f; + color: #900c3f; } .btn-outline-primary:hover, @@ -2076,7 +2117,7 @@ h6 .badge { .btn-outline-primary.disabled:hover, .btn-outline-primary.disabled:focus, .btn-outline-primary.disabled:active { - background-color: #900C3F !important; + background-color: #900c3f !important; color: #fff; } @@ -2093,7 +2134,7 @@ h6 .badge { .btn-outline-white.disabled:focus, .btn-outline-white.disabled:active { background-color: #fff; - color: #900C3F; + color: #900c3f; } .btn-round { @@ -2114,7 +2155,7 @@ h6 .badge { padding-right: 18px; } -.btn-social-icon> :first-child { +.btn-social-icon > :first-child { font-size: 16px; } @@ -2124,7 +2165,7 @@ h6 .badge { font-weight: 500; } -.btn-social> :first-child { +.btn-social > :first-child { width: 55px; line-height: 50px; border-right: none; @@ -2135,7 +2176,7 @@ h6 .badge { } .btn-group .btn.active { - background-color: #900C3F; + background-color: #900c3f; color: #fff; } @@ -2152,7 +2193,7 @@ h6 .badge { /* 3.13 Media */ .media .media-right { float: right; - color: #900C3F; + color: #900c3f; font-weight: 600; font-size: 16px; } @@ -2225,7 +2266,7 @@ h6 .badge { font-weight: 600; font-size: 12px; color: #34395e; - letter-spacing: .5px; + letter-spacing: 0.5px; } .media .media-items .media-item .media-value { @@ -2262,7 +2303,7 @@ h6 .badge { background-color: #f9f9f9; border-radius: 3px; cursor: pointer; - transition: all .5s; + transition: all 0.5s; } .accordion .accordion-header h4 { @@ -2278,7 +2319,7 @@ h6 .badge { .accordion .accordion-header[aria-expanded="true"] { box-shadow: 0 2px 6px #acb5f6; - background-color: #900C3F; + background-color: #900c3f; color: #fff; } @@ -2302,22 +2343,22 @@ h6 .badge { color: #fff; } -.bs-popover-auto[x-placement^=left] .arrow::before, +.bs-popover-auto[x-placement^="left"] .arrow::before, .bs-popover-left .arrow::before { border-left-color: #f2f2f2; } -.bs-popover-auto[x-placement^=bottom] .arrow::before, +.bs-popover-auto[x-placement^="bottom"] .arrow::before, .bs-popover-bottom .arrow::before { border-bottom-color: #f2f2f2; } -.bs-popover-auto[x-placement^=top] .arrow::before, +.bs-popover-auto[x-placement^="top"] .arrow::before, .bs-popover-top .arrow::before { border-top-color: #f2f2f2; } -.bs-popover-auto[x-placement^=right] .arrow::before, +.bs-popover-auto[x-placement^="right"] .arrow::before, .bs-popover-right .arrow::before { border-right-color: #f2f2f2; } @@ -2340,8 +2381,8 @@ h6 .badge { margin-right: -5px; } -.sm-gutters>.col, -.sm-gutters>[class*=col-] { +.sm-gutters > .col, +.sm-gutters > [class*="col-"] { padding-left: 5px; padding-right: 5px; } @@ -2357,12 +2398,12 @@ h6 .badge { } .navbar.active { - background-color: #900C3F; + background-color: #900c3f; box-shadow: rgba(103, 119, 239, 0.2) rgba(0, 0, 0, 0.03); } .navbar-bg { - content: ' '; + content: " "; position: absolute; top: 0; left: 0; @@ -2370,7 +2411,12 @@ h6 .badge { height: 115px; /* background-image: url('/public/assets/images/bg-web.png'); */ /* background: rgb(144, 12, 63); */ - background-image: linear-gradient(to bottom right, rgb(144, 12, 63) 0%, rgb(186, 39, 96) 100%, rgb(161, 9, 73) 100%); + background-image: linear-gradient( + to bottom right, + rgb(144, 12, 63) 0%, + rgb(186, 39, 96) 100%, + rgb(161, 9, 73) 100% + ); z-index: -1; } @@ -2398,17 +2444,22 @@ h6 .badge { } .navbar .form-inline .form-control:focus, -.navbar .form-inline .form-control:focus+.btn { +.navbar .form-inline .form-control:focus + .btn { position: relative; z-index: 9001; } -.navbar .form-inline .form-control:focus+.btn+.search-backdrop { - opacity: .6; +.navbar .form-inline .form-control:focus + .btn + .search-backdrop { + opacity: 0.6; visibility: visible; } -.navbar .form-inline .form-control:focus+.btn+.search-backdrop+.search-result { +.navbar + .form-inline + .form-control:focus + + .btn + + .search-backdrop + + .search-result { opacity: 1; visibility: visible; top: 80px; @@ -2431,7 +2482,7 @@ h6 .badge { background-color: #000; opacity: 0; visibility: hidden; - transition: all .5s; + transition: all 0.5s; } .navbar .form-inline .search-result { @@ -2443,16 +2494,16 @@ h6 .badge { width: 450px; opacity: 0; visibility: hidden; - transition: all .5s; + transition: all 0.5s; } .navbar .form-inline .search-result:before { position: absolute; top: -26px; left: 34px; - content: '\f0d8'; + content: "\f0d8"; font-weight: 600; - font-family: 'Font Awesome 5 Free'; + font-family: "Font Awesome 5 Free"; color: #fff; font-size: 30px; } @@ -2565,7 +2616,7 @@ h6 .badge { .navbar .nav-link.disabled { color: #fff; - opacity: .6; + opacity: 0.6; } .nav-collapse { @@ -2659,12 +2710,12 @@ h6 .badge { .nav-collapse .navbar-nav .nav-item .nav-link:hover { background-color: #fcfcfd; - color: #900C3F; + color: #900c3f; } - .nav-collapse .navbar-nav .nav-item:focus>a, - .nav-collapse .navbar-nav .nav-item.active>a { - background-color: #900C3F; + .nav-collapse .navbar-nav .nav-item:focus > a, + .nav-collapse .navbar-nav .nav-item.active > a { + background-color: #900c3f; color: #fff; } @@ -2734,7 +2785,7 @@ a.dropdown-item { a.dropdown-item:focus, a.dropdown-item:active, a.dropdown-item.active { - background-color: #900C3F; + background-color: #900c3f; color: #fff !important; } @@ -2765,7 +2816,7 @@ a.dropdown-item.active { font-weight: 600; text-transform: uppercase; font-size: 10px; - letter-spacing: .5px; + letter-spacing: 0.5px; } .dropdown-list .dropdown-item .dropdown-item-avatar { @@ -2802,7 +2853,7 @@ a.dropdown-item.active { } .dropdown-list .dropdown-item:focus { - background-color: #900C3F; + background-color: #900c3f; } .dropdown-list .dropdown-item:focus .dropdown-item-desc { @@ -2817,7 +2868,10 @@ a.dropdown-item.active { color: #6c757d; } -.dropdown-list .dropdown-item.dropdown-item-unread:active .dropdown-item-desc b { +.dropdown-list + .dropdown-item.dropdown-item-unread:active + .dropdown-item-desc + b { color: #6c757d; } @@ -2844,7 +2898,7 @@ a.dropdown-item.active { .dropdown-list .dropdown-footer, .dropdown-list .dropdown-header { - letter-spacing: .5px; + letter-spacing: 0.5px; font-weight: 600; padding: 15px; } @@ -2860,12 +2914,17 @@ a.dropdown-item.active { } .dropdown-list .dropdown-list-content:not(.is-end):after { - content: ' '; + content: " "; position: absolute; bottom: 46px; left: 0; width: 100%; - background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.8)); + background-image: linear-gradient( + to bottom, + rgba(255, 255, 255, 0), + rgba(255, 255, 255, 0.4), + rgba(255, 255, 255, 0.8) + ); height: 60px; } @@ -2907,7 +2966,7 @@ a.dropdown-item.active { } .dropdown-flag .dropdown-item.active { - background-color: #900C3F; + background-color: #900c3f; color: #fff; } @@ -2923,17 +2982,17 @@ a.dropdown-item.active { } /* 3.20 Dropdown */ -.tab-content.no-padding>.tab-pane { +.tab-content.no-padding > .tab-pane { padding: 0; } -.tab-content>.tab-pane { +.tab-content > .tab-pane { line-height: 28px; } /* 3.21 Progress Bar */ .progress-bar { - background-color: #900C3F; + background-color: #900c3f; } /* 3.22 Jumbotron */ @@ -2951,45 +3010,69 @@ a.dropdown-item.active { /* 4.1 Misc */ /* nunito-regular - latin */ @font-face { - font-family: 'Nunito'; + font-family: "Nunito"; font-style: normal; font-weight: 400; src: url("../fonts/nunito-v9-latin-regular.eot"); /* IE9 Compat Modes */ - src: local("Nunito Regular"), local("Nunito-Regular"), url("../fonts/nunito-v9-latin-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/nunito-v9-latin-regular.woff2") format("woff2"), url("../fonts/nunito-v9-latin-regular.woff") format("woff"), url("../fonts/nunito-v9-latin-regular.ttf") format("truetype"), url("../fonts/nunito-v9-latin-regular.svg#Nunito") format("svg"); + src: local("Nunito Regular"), local("Nunito-Regular"), + url("../fonts/nunito-v9-latin-regular.eot?#iefix") + format("embedded-opentype"), + url("../fonts/nunito-v9-latin-regular.woff2") format("woff2"), + url("../fonts/nunito-v9-latin-regular.woff") format("woff"), + url("../fonts/nunito-v9-latin-regular.ttf") format("truetype"), + url("../fonts/nunito-v9-latin-regular.svg#Nunito") format("svg"); /* Legacy iOS */ } /* nunito-600 - latin */ @font-face { - font-family: 'Nunito'; + font-family: "Nunito"; font-style: normal; font-weight: 600; src: url("../fonts/nunito-v9-latin-600.eot"); /* IE9 Compat Modes */ - src: local("Nunito SemiBold"), local("Nunito-SemiBold"), url("../fonts/nunito-v9-latin-600.eot?#iefix") format("embedded-opentype"), url("../fonts/nunito-v9-latin-600.woff2") format("woff2"), url("../fonts/nunito-v9-latin-600.woff") format("woff"), url("../fonts/nunito-v9-latin-600.ttf") format("truetype"), url("../fonts/nunito-v9-latin-600.svg#Nunito") format("svg"); + src: local("Nunito SemiBold"), local("Nunito-SemiBold"), + url("../fonts/nunito-v9-latin-600.eot?#iefix") + format("embedded-opentype"), + url("../fonts/nunito-v9-latin-600.woff2") format("woff2"), + url("../fonts/nunito-v9-latin-600.woff") format("woff"), + url("../fonts/nunito-v9-latin-600.ttf") format("truetype"), + url("../fonts/nunito-v9-latin-600.svg#Nunito") format("svg"); /* Legacy iOS */ } /* nunito-700 - latin */ @font-face { - font-family: 'Nunito'; + font-family: "Nunito"; font-style: normal; font-weight: 700; src: url("../fonts/nunito-v9-latin-700.eot"); /* IE9 Compat Modes */ - src: local("Nunito Bold"), local("Nunito-Bold"), url("../fonts/nunito-v9-latin-700.eot?#iefix") format("embedded-opentype"), url("../fonts/nunito-v9-latin-700.woff2") format("woff2"), url("../fonts/nunito-v9-latin-700.woff") format("woff"), url("../fonts/nunito-v9-latin-700.ttf") format("truetype"), url("../fonts/nunito-v9-latin-700.svg#Nunito") format("svg"); + src: local("Nunito Bold"), local("Nunito-Bold"), + url("../fonts/nunito-v9-latin-700.eot?#iefix") + format("embedded-opentype"), + url("../fonts/nunito-v9-latin-700.woff2") format("woff2"), + url("../fonts/nunito-v9-latin-700.woff") format("woff"), + url("../fonts/nunito-v9-latin-700.ttf") format("truetype"), + url("../fonts/nunito-v9-latin-700.svg#Nunito") format("svg"); /* Legacy iOS */ } /* nunito-800 - latin */ @font-face { - font-family: 'Nunito'; + font-family: "Nunito"; font-style: normal; font-weight: 800; src: url("../fonts/nunito-v9-latin-800.eot"); /* IE9 Compat Modes */ - src: local("Nunito ExtraBold"), local("Nunito-ExtraBold"), url("../fonts/nunito-v9-latin-800.eot?#iefix") format("embedded-opentype"), url("../fonts/nunito-v9-latin-800.woff2") format("woff2"), url("../fonts/nunito-v9-latin-800.woff") format("woff"), url("../fonts/nunito-v9-latin-800.ttf") format("truetype"), url("../fonts/nunito-v9-latin-800.svg#Nunito") format("svg"); + src: local("Nunito ExtraBold"), local("Nunito-ExtraBold"), + url("../fonts/nunito-v9-latin-800.eot?#iefix") + format("embedded-opentype"), + url("../fonts/nunito-v9-latin-800.woff2") format("woff2"), + url("../fonts/nunito-v9-latin-800.woff") format("woff"), + url("../fonts/nunito-v9-latin-800.ttf") format("truetype"), + url("../fonts/nunito-v9-latin-800.svg#Nunito") format("svg"); /* Legacy iOS */ } @@ -3009,13 +3092,13 @@ body { background-color: #fafdfb; font-size: 14px; font-weight: 400; - font-family: 'Nunito', 'Segoe UI', arial; + font-family: "Nunito", "Segoe UI", arial; color: #6c757d; } a.bb { text-decoration: none; - border-bottom: 1px solid #900C3F; + border-bottom: 1px solid #900c3f; padding-bottom: 1px; } @@ -3054,11 +3137,11 @@ a.bb { } .bullet:after { - content: '\2022'; + content: "\2022"; } .slash:after { - content: '/'; + content: "/"; } .login-brand { @@ -3101,12 +3184,17 @@ a.bb { } .gradient-bottom:after { - content: ' '; + content: " "; position: absolute; bottom: 41px; left: 0; width: 100%; - background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.8)); + background-image: linear-gradient( + to bottom, + rgba(255, 255, 255, 0), + rgba(255, 255, 255, 0.4), + rgba(255, 255, 255, 0.8) + ); height: 60px; } @@ -3148,9 +3236,9 @@ blockquote { background-color: #f9f9f9; border-radius: 3px; position: relative; - font-family: 'Time new Romans'; + font-family: "Time new Romans"; font-size: 16px; - letter-spacing: .3px; + letter-spacing: 0.3px; } blockquote:before { @@ -3159,7 +3247,7 @@ blockquote:before { position: absolute; top: 10px; left: 20px; - opacity: .2; + opacity: 0.2; } blockquote .blockquote-footer { @@ -3216,8 +3304,8 @@ pre { } .circle-step .circle.circle-primary { - border-color: #900C3F; - color: #900C3F; + border-color: #900c3f; + color: #900c3f; } .pe-none { @@ -3280,8 +3368,8 @@ pre { margin-left: -0.25rem; } -.gutters-xs>.col, -.gutters-xs>[class*="col-"] { +.gutters-xs > .col, +.gutters-xs > [class*="col-"] { padding-right: 0.25rem; padding-left: 0.25rem; } @@ -3291,7 +3379,7 @@ pre { } .beep:after { - content: ''; + content: ""; position: absolute; top: 2px; right: 8px; @@ -3334,7 +3422,7 @@ pre { z-index: 1; } -.section>*:first-child { +.section > *:first-child { margin-top: -7px; } @@ -3365,7 +3453,7 @@ pre { } .section .section-header .section-header-back .btn:hover { - background-color: #900C3F; + background-color: #900c3f; color: #fff; } @@ -3396,18 +3484,66 @@ pre { } .section .section-title:before { - content: ' '; + content: " "; border-radius: 5px; height: 8px; width: 30px; - background-color: #900C3F; + background-color: #900c3f; display: inline-block; float: left; margin-top: 6px; margin-right: 15px; } -.section .section-title+.section-lead { +.section .section-buyer { + font-size: 18px; + color: #191d21; + font-weight: 600; + position: relative; + margin: 30px 0 25px 0; +} + +.section .section-buyer:before { + content: " "; + border-radius: 5px; + height: 8px; + width: 30px; + background-color: #d6760f; + display: inline-block; + float: left; + margin-top: 6px; + margin-right: 15px; +} + +.section .section-seller { + font-size: 18px; + color: #191d21; + font-weight: 600; + position: relative; + margin: 30px 0 25px 0; +} + +.section .section-seller:before { + content: " "; + border-radius: 5px; + height: 8px; + width: 30px; + background-color: #0cf9e1; + display: inline-block; + float: left; + margin-top: 6px; + margin-right: 15px; +} + +.section .section-title + .section-lead { + margin-top: -20px; +} + +.section .section-buyer + .section-lead { + margin-top: -20px; +} + +.section .section-seller + .section-lead { margin-top: -20px; } @@ -3430,6 +3566,14 @@ pre { font-size: 14px; } + .section .section-buyer { + font-size: 14px; + } + + .section .section-seller { + font-size: 14px; + } + .section .section-header { flex-wrap: wrap; margin-bottom: 20px !important; @@ -3505,7 +3649,12 @@ pre { top: 0; height: 100%; width: 250px; - background-image: linear-gradient(to bottom right, rgb(144, 12, 63) 0%, rgb(186, 39, 96) 100%, rgb(161, 9, 73) 100%); + background-image: linear-gradient( + to bottom right, + rgb(144, 12, 63) 0%, + rgb(186, 39, 96) 100%, + rgb(161, 9, 73) 100% + ); /* background-color: #900C3F; */ z-index: 880; left: 0; @@ -3515,7 +3664,7 @@ pre { .navbar, .main-content, .main-footer { - transition: all .5s; + transition: all 0.5s; } body.sidebar-gone .main-sidebar { @@ -3535,9 +3684,9 @@ body.sidebar-mini .main-sidebar { body.sidebar-mini .main-sidebar:after { box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - content: ' '; + content: " "; position: fixed; - background-color: #fff; + background-color: #900c3f; width: 65px; height: 100%; left: 0; @@ -3567,37 +3716,37 @@ body.sidebar-mini .main-sidebar .sidebar-brand-sm { display: block; } -body.sidebar-mini .main-sidebar .sidebar-menu>li { +body.sidebar-mini .main-sidebar .sidebar-menu > li { padding: 10px; } -body.sidebar-mini .main-sidebar .sidebar-menu>li.menu-header { +body.sidebar-mini .main-sidebar .sidebar-menu > li.menu-header { padding: 0; font-size: 0; height: 2px; } -body.sidebar-mini .main-sidebar .sidebar-menu>li>a { +body.sidebar-mini .main-sidebar .sidebar-menu > li > a { border-radius: 3px; height: 45px; padding: 0; justify-content: center; } -body.sidebar-mini .main-sidebar .sidebar-menu>li>a .ion, -body.sidebar-mini .main-sidebar .sidebar-menu>li>a .fas, -body.sidebar-mini .main-sidebar .sidebar-menu>li>a .far, -body.sidebar-mini .main-sidebar .sidebar-menu>li>a .fab, -body.sidebar-mini .main-sidebar .sidebar-menu>li>a .fal { +body.sidebar-mini .main-sidebar .sidebar-menu > li > a .ion, +body.sidebar-mini .main-sidebar .sidebar-menu > li > a .fas, +body.sidebar-mini .main-sidebar .sidebar-menu > li > a .far, +body.sidebar-mini .main-sidebar .sidebar-menu > li > a .fab, +body.sidebar-mini .main-sidebar .sidebar-menu > li > a .fal { margin: 0; font-size: 20px; } -body.sidebar-mini .main-sidebar .sidebar-menu>li>a span { +body.sidebar-mini .main-sidebar .sidebar-menu > li > a span { display: none; } -body.sidebar-mini .main-sidebar .sidebar-menu>li>a .badge { +body.sidebar-mini .main-sidebar .sidebar-menu > li > a .badge { padding: 5px; position: absolute; top: 4px; @@ -3605,17 +3754,17 @@ body.sidebar-mini .main-sidebar .sidebar-menu>li>a .badge { font-size: 10px; } -body.sidebar-mini .main-sidebar .sidebar-menu>li>a.has-dropdown:after { +body.sidebar-mini .main-sidebar .sidebar-menu > li > a.has-dropdown:after { content: initial; } -body.sidebar-mini .main-sidebar .sidebar-menu>li.active>a { +body.sidebar-mini .main-sidebar .sidebar-menu > li.active > a { box-shadow: 0 4px 8px #acb5f6; - background-color: #900C3F; + background-color: #900c3f; color: #fff; } -body.sidebar-mini .main-sidebar .sidebar-menu>li ul.dropdown-menu { +body.sidebar-mini .main-sidebar .sidebar-menu > li ul.dropdown-menu { position: absolute; background-color: #fff; left: 65px; @@ -3625,22 +3774,46 @@ body.sidebar-mini .main-sidebar .sidebar-menu>li ul.dropdown-menu { box-shadow: 0 0 30px rgba(0, 0, 0, 0.03); } -body.sidebar-mini .main-sidebar .sidebar-menu>li ul.dropdown-menu li>a:focus, -body.sidebar-mini .main-sidebar .sidebar-menu>li ul.dropdown-menu li.active>a, -body.sidebar-mini .main-sidebar .sidebar-menu>li ul.dropdown-menu li.active>a:hover { +body.sidebar-mini + .main-sidebar + .sidebar-menu + > li + ul.dropdown-menu + li + > a:focus, +body.sidebar-mini + .main-sidebar + .sidebar-menu + > li + ul.dropdown-menu + li.active + > a, +body.sidebar-mini + .main-sidebar + .sidebar-menu + > li + ul.dropdown-menu + li.active + > a:hover { color: #fff; - background-color: #900C3F !important; + background-color: #900c3f !important; } -body.sidebar-mini .main-sidebar .sidebar-menu>li ul.dropdown-menu li a { +body.sidebar-mini .main-sidebar .sidebar-menu > li ul.dropdown-menu li a { height: 40px; padding: 0 20px; background-color: #fff; } -body.sidebar-mini .main-sidebar .sidebar-menu>li ul.dropdown-menu li a.has-dropdown:after { +body.sidebar-mini + .main-sidebar + .sidebar-menu + > li + ul.dropdown-menu + li + a.has-dropdown:after { content: ""; - font-family: 'Font Awesome 5 Free'; + font-family: "Font Awesome 5 Free"; font-weight: 900; position: absolute; top: 50%; @@ -3650,15 +3823,27 @@ body.sidebar-mini .main-sidebar .sidebar-menu>li ul.dropdown-menu li a.has-dropd font-size: 12px; } -body.sidebar-mini .main-sidebar .sidebar-menu li:hover>ul.dropdown-menu { +body.sidebar-mini .main-sidebar .sidebar-menu li:hover > ul.dropdown-menu { display: block !important; } -body.sidebar-mini .main-sidebar .sidebar-menu li:hover>ul.dropdown-menu li:hover>a { +body.sidebar-mini + .main-sidebar + .sidebar-menu + li:hover + > ul.dropdown-menu + li:hover + > a { background-color: #fcfcfd; } -body.sidebar-mini .main-sidebar .sidebar-menu li:hover>ul.dropdown-menu li .dropdown-menu { +body.sidebar-mini + .main-sidebar + .sidebar-menu + li:hover + > ul.dropdown-menu + li + .dropdown-menu { left: 200px; padding: 0; } @@ -3720,7 +3905,7 @@ body.layout-2 .main-sidebar .sidebar-menu li a.has-dropdown:after { } body.layout-2 .main-sidebar .sidebar-menu li a:hover { - color: #900C3F; + color: #900c3f; background-color: transparent; } @@ -3755,27 +3940,43 @@ body.layout-3 .navbar.navbar-secondary { z-index: 889; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item.active>.nav-link { - color: #900C3F; +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item.active + > .nav-link { + color: #900c3f; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item.active>.nav-link:before { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item.active + > .nav-link:before { left: 35px; right: 0; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item:first-child .nav-link { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item:first-child + .nav-link { margin-left: 0; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item:last-child .nav-link { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item:last-child + .nav-link { margin-right: 0; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item>.nav-link { +body.layout-3 .navbar.navbar-secondary .navbar-nav > .nav-item > .nav-link { color: #868e96; font-size: 13px; - letter-spacing: .3px; + letter-spacing: 0.3px; height: 70px; padding: 0; padding-left: 0 !important; @@ -3785,13 +3986,21 @@ body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item>.nav-link { position: relative; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item>.nav-link.has-dropdown { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + > .nav-link.has-dropdown { margin-right: 35px; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item>.nav-link.has-dropdown:after { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + > .nav-link.has-dropdown:after { content: ""; - font-family: 'Font Awesome 5 Free'; + font-family: "Font Awesome 5 Free"; font-weight: 900; position: absolute; top: 50%; @@ -3802,46 +4011,71 @@ body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item>.nav-link.has-dropd right: -20px; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item>.nav-link:before { - content: ' '; +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + > .nav-link:before { + content: " "; position: absolute; left: initial; right: initial; bottom: 0; height: 2px; - background-color: #900C3F; - transition: all .5s; + background-color: #900c3f; + transition: all 0.5s; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item>.nav-link span { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + > .nav-link + span { line-height: 74px; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item>.nav-link i { +body.layout-3 .navbar.navbar-secondary .navbar-nav > .nav-item > .nav-link i { width: 30px; font-size: 16px; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item>.nav-link:hover { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + > .nav-link:hover { color: #191d21 !important; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item .dropdown-menu { +body.layout-3 .navbar.navbar-secondary .navbar-nav > .nav-item .dropdown-menu { padding: 0; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item .dropdown-menu .nav-item .nav-link { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + .dropdown-menu + .nav-item + .nav-link { color: #6c757d; font-weight: 600; - letter-spacing: .3px; + letter-spacing: 0.3px; padding: 7px !important; padding-left: 20px !important; padding-right: 20px !important; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item .dropdown-menu .nav-item .nav-link.has-dropdown:after { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + .dropdown-menu + .nav-item + .nav-link.has-dropdown:after { content: ""; - font-family: 'Font Awesome 5 Free'; + font-family: "Font Awesome 5 Free"; font-weight: 900; position: absolute; top: 50%; @@ -3852,20 +4086,44 @@ body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item .dropdown-menu .nav right: 15px; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item .dropdown-menu .nav-item:hover>.nav-link { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + .dropdown-menu + .nav-item:hover + > .nav-link { background-color: #fcfcfd; color: #191d21; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item .dropdown-menu .nav-item:hover>.dropdown-menu { +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + .dropdown-menu + .nav-item:hover + > .dropdown-menu { display: block !important; top: -5px; left: 200px; } -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item .dropdown-menu .nav-item.active>.nav-link, -body.layout-3 .navbar.navbar-secondary .navbar-nav>.nav-item .dropdown-menu .nav-item .nav-link:focus { - background-color: #900C3F; +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + .dropdown-menu + .nav-item.active + > .nav-link, +body.layout-3 + .navbar.navbar-secondary + .navbar-nav + > .nav-item + .dropdown-menu + .nav-item + .nav-link:focus { + background-color: #900c3f; color: #fff; } @@ -3946,7 +4204,7 @@ body.layout-3 .main-footer { height: 50px; padding: 0 20px; width: 100%; - letter-spacing: .3px; + letter-spacing: 0.3px; color: #ffffff; text-decoration: none; } @@ -3984,7 +4242,7 @@ body.layout-3 .main-footer { .main-sidebar .sidebar-menu li a.has-dropdown:after { content: ""; - font-family: 'Font Awesome 5 Free'; + font-family: "Font Awesome 5 Free"; font-weight: 900; position: absolute; top: 50%; @@ -3994,11 +4252,11 @@ body.layout-3 .main-footer { font-size: 12px; } -.main-sidebar .sidebar-menu li.active>ul.dropdown-menu { +.main-sidebar .sidebar-menu li.active > ul.dropdown-menu { display: block; } -.main-sidebar .sidebar-menu li.active>ul.dropdown-menu li a:hover { +.main-sidebar .sidebar-menu li.active > ul.dropdown-menu li a:hover { background-color: #ffffff; } @@ -4021,11 +4279,10 @@ body.layout-3 .main-footer { } .main-sidebar .sidebar-menu li ul.dropdown-menu li a:hover { - background-color: #dfe4ea; } -.main-sidebar .sidebar-menu li ul.dropdown-menu li.active>a { +.main-sidebar .sidebar-menu li ul.dropdown-menu li.active > a { color: #dfe4ea; font-weight: 600; } @@ -4071,41 +4328,65 @@ body.layout-3 .main-footer { } body:not(.sidebar-mini) .sidebar-style-1 .sidebar-menu li.active a { - background-color: #900C3F; + background-color: #900c3f; color: #fff; } -body:not(.sidebar-mini) .sidebar-style-1 .sidebar-menu li.active ul.dropdown-menu li a { +body:not(.sidebar-mini) + .sidebar-style-1 + .sidebar-menu + li.active + ul.dropdown-menu + li + a { color: #e8ebfd; } -body:not(.sidebar-mini) .sidebar-style-1 .sidebar-menu li.active ul.dropdown-menu li a:hover { - background-color: #900C3F; +body:not(.sidebar-mini) + .sidebar-style-1 + .sidebar-menu + li.active + ul.dropdown-menu + li + a:hover { + background-color: #900c3f; color: #fff; } -body:not(.sidebar-mini) .sidebar-style-1 .sidebar-menu li.active ul.dropdown-menu li.active a { +body:not(.sidebar-mini) + .sidebar-style-1 + .sidebar-menu + li.active + ul.dropdown-menu + li.active + a { color: #fff; } -body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu>li.active>a { +body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu > li.active > a { padding-left: 16px; background-color: transparent; position: relative; } -body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu>li.active>a:before { - content: ''; +body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu > li.active > a:before { + content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%); height: 25px; width: 4px; - background-color: #900C3F; + background-color: #900c3f; } -body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu li.active ul.dropdown-menu li a { +body:not(.sidebar-mini) + .sidebar-style-2 + .sidebar-menu + li.active + ul.dropdown-menu + li + a { padding-left: 61px; background-color: #fff; } @@ -4156,7 +4437,7 @@ body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu li.active ul.dropdown-men body.search-show:before, body.sidebar-show:before { - content: ''; + content: ""; position: fixed; left: 0; right: 0; @@ -4175,13 +4456,13 @@ body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu li.active ul.dropdown-men @-webkit-keyframes fadeinbackdrop { to { - opacity: .6; + opacity: 0.6; } } @keyframes fadeinbackdrop { to { - opacity: .6; + opacity: 0.6; } } } @@ -4196,16 +4477,16 @@ body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu li.active ul.dropdown-men @-webkit-keyframes pulsate { 0% { -webkit-transform: scale(0.1, 0.1); - opacity: 0.0; + opacity: 0; } 50% { - opacity: 1.0; + opacity: 1; } 100% { -webkit-transform: scale(1.2, 1.2); - opacity: 0.0; + opacity: 0; } } @@ -4273,7 +4554,7 @@ body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu li.active ul.dropdown-men } /* CSS khusus untuk switch */ - /* For switch styles */ +/* For switch styles */ .switch { position: relative; display: inline-block; @@ -4295,8 +4576,8 @@ body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu li.active ul.dropdown-men right: 0; bottom: 0; background-color: #ff5e57; - -webkit-transition: .4s; - transition: .4s; + -webkit-transition: 0.4s; + transition: 0.4s; } .slider:before { @@ -4307,8 +4588,8 @@ body:not(.sidebar-mini) .sidebar-style-2 .sidebar-menu li.active ul.dropdown-men left: 2px; bottom: 2px; background-color: white; - -webkit-transition: .4s; - transition: .4s; + -webkit-transition: 0.4s; + transition: 0.4s; } input:checked + .slider { @@ -4331,30 +4612,184 @@ input:checked + .slider:before { border-radius: 50%; } /* CSS khusus untuk alert */ - .alert { +.alert { position: relative; margin-right: 30px; margin-left: 30px; /* margin-bottom: 20px; */ border: 1px solid transparent; border-radius: 0.25rem; - } - .alert-primary { +} +.alert-primary { color: #004085; background-color: #cce5ff; border-color: #b8daff; - } +} - .alert-dismissible { +.alert-dismissible { padding-right: 3rem; - } +} - .btn-close { - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - padding: 0.5rem 1rem; +.btn-close { + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + padding: 0.5rem 1rem; +} - } +/* CSS untuk gambar profil */ +.card-head { + /* background-image: linear-gradient(to bottom right, rgb(144, 12, 63) 0%, rgb(186, 39, 96) 100%, rgb(161, 9, 73) 100%); */ + text-align: center; + width: 100%; + background-color: #e6ebee; + border-radius: 10px 10px 10px 10px; + color: #393b45; + height: 350px; + font-weight: 800; +} +#card_head { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 10px 10px 10px 10px; +} +.image-crop { + display: block; + position: relative; + background-color: #e6ebee; + width: 170px; + height: 170px; + margin: 0 auto; + margin-top: -70px; + margin-left: 60px; + overflow: hidden; + border-radius: 50%; + box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); + border: 3px solid #fff; + background-size: cover; /* Menyesuaikan gambar dengan elemen */ + background-position: center; /* Menengahkan gambar */ + background-repeat: no-repeat; /* Menghindari pengulangan gambar */ +} + +.row-divider { + margin-bottom: 10px; +} + +/* tracking penjual */ +.activity { + display: flex; + margin-bottom: 10px; +} + +.activity-icon { + flex-shrink: 0; + border-radius: 50%; + width: 60px; + height: 60px; + display: flex; + align-items: center; + justify-content: center; +} + +.activity-detail { + flex-grow: 1; + margin-left: 15px; + background-color: #f9f9f9; + padding: 10px; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.activity-detail p { + margin-bottom: 0; +} + +.text-job { + font-size: 14px; + color: #6c757d; +} + +/* verifikasi */ + +.container { + max-width: 800px; +} + +.card.card-danger { + border: none; + border-radius: 10px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + background-color: #fff; +} + +.card-header { + border-bottom: none; + padding: 20px; + text-align: center; + background-color: #007bff; + border-radius: 10px 10px 0 0; +} + +.card-body { + padding: 20px; +} + +.card-body p { + margin-bottom: 10px; + font-size: 16px; +} + +.card-body b { + font-weight: bold; +} + +.verification-code { + font-size: 3em; + color: #640707; + margin-bottom: 20px; +} + +/* transaksi */ +.card-header h2 { + border-bottom: 3px solid #000; /* Warna dan ketebalan garis dapat disesuaikan */ + padding-bottom: 5px; /* Jarak antara teks dan garis */ + width: 80%; +} + +.dashed-line { + border-top: 1px dashed #000; /* Garis putus-putus dengan ketebalan 1px dan warna hitam (#000) */ + margin-bottom: 10px; +} + +.form-row { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 10px; + padding-left: 10px; + padding-right: 10px; +} + +.label, +.h5 { + flex: 1; + margin-right: 10px; +} + +.value { + flex: 2; +} + +@media (max-width: 768px) { + .form-row { + flex-direction: column; + } + + .label { + margin-right: 0; + margin-bottom: 5px; + } +} diff --git a/public/assets/images/dashboard/Asset 3.png b/public/assets/images/dashboard/Asset 3.png new file mode 100644 index 0000000..9ff9605 Binary files /dev/null and b/public/assets/images/dashboard/Asset 3.png differ diff --git a/public/assets/images/google-removebg-preview.png b/public/assets/images/google-removebg-preview.png new file mode 100644 index 0000000..529008e Binary files /dev/null and b/public/assets/images/google-removebg-preview.png differ diff --git a/public/assets/img/avatar/ok.jpg b/public/assets/img/avatar/ok.jpg new file mode 100644 index 0000000..64a268a Binary files /dev/null and b/public/assets/img/avatar/ok.jpg differ diff --git a/public/assets/img/avatar/rusak.jpeg b/public/assets/img/avatar/rusak.jpeg new file mode 100644 index 0000000..f870c44 Binary files /dev/null and b/public/assets/img/avatar/rusak.jpeg differ diff --git a/public/assets/img/login_register/Payment Information-pana.svg b/public/assets/img/login_register/Payment Information-pana.svg new file mode 100644 index 0000000..dfdf15c --- /dev/null +++ b/public/assets/img/login_register/Payment Information-pana.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/img/metode_pembayaran/alfamart.png b/public/assets/img/metode_pembayaran/alfamart.png new file mode 100644 index 0000000..8e6a86e Binary files /dev/null and b/public/assets/img/metode_pembayaran/alfamart.png differ diff --git a/public/assets/img/metode_pembayaran/bank_transfer.png b/public/assets/img/metode_pembayaran/bank_transfer.png new file mode 100644 index 0000000..284f7b2 Binary files /dev/null and b/public/assets/img/metode_pembayaran/bank_transfer.png differ diff --git a/public/assets/img/metode_pembayaran/bca.png b/public/assets/img/metode_pembayaran/bca.png new file mode 100644 index 0000000..8700dd5 Binary files /dev/null and b/public/assets/img/metode_pembayaran/bca.png differ diff --git a/public/assets/img/metode_pembayaran/bri.png b/public/assets/img/metode_pembayaran/bri.png new file mode 100644 index 0000000..c2b6f46 Binary files /dev/null and b/public/assets/img/metode_pembayaran/bri.png differ diff --git a/public/assets/img/metode_pembayaran/bri_epay.png b/public/assets/img/metode_pembayaran/bri_epay.png new file mode 100644 index 0000000..25249a8 Binary files /dev/null and b/public/assets/img/metode_pembayaran/bri_epay.png differ diff --git a/public/assets/img/metode_pembayaran/gopay.png b/public/assets/img/metode_pembayaran/gopay.png new file mode 100644 index 0000000..e6788f2 Binary files /dev/null and b/public/assets/img/metode_pembayaran/gopay.png differ diff --git a/public/assets/img/metode_pembayaran/indomaret.png b/public/assets/img/metode_pembayaran/indomaret.png new file mode 100644 index 0000000..fdb90b7 Binary files /dev/null and b/public/assets/img/metode_pembayaran/indomaret.png differ diff --git a/public/assets/img/metode_pembayaran/mandiri.png b/public/assets/img/metode_pembayaran/mandiri.png new file mode 100644 index 0000000..3fd96a6 Binary files /dev/null and b/public/assets/img/metode_pembayaran/mandiri.png differ diff --git a/public/assets/img/metode_pembayaran/qris.png b/public/assets/img/metode_pembayaran/qris.png new file mode 100644 index 0000000..9b0cb19 Binary files /dev/null and b/public/assets/img/metode_pembayaran/qris.png differ diff --git a/public/assets/js/login_register/app.js b/public/assets/js/login_register/app.js new file mode 100644 index 0000000..10f4971 --- /dev/null +++ b/public/assets/js/login_register/app.js @@ -0,0 +1,578 @@ +/****************************************** + * ANIMATION BTN SIGN IN & SIGN UP + ******************************************/ +const sign_in_btn = document.querySelector("#sign-in-btn"); +const sign_up_btn = document.querySelector("#sign-up-btn"); +const container = document.querySelector(".container"); + +sign_up_btn.addEventListener("click", () => { + container.classList.add("sign-up-mode"); +}); + +sign_in_btn.addEventListener("click", () => { + container.classList.remove("sign-up-mode"); +}); +/****************************************** + * END ANIMATION BTN SIGN IN & SIGN UP + ******************************************/ + +/****************************************** + * PRELOADER + ******************************************/ +setTimeout(function () { + $("#preloader").fadeToggle(); +}, 200); +/****************************************** + * END PRELOADER + ******************************************/ + +/****************************************** + * MULTIPLE FORM + ******************************************/ +var form_1 = document.querySelector(".form_1"); +var form_2 = document.querySelector(".form_2"); +var form_3 = document.querySelector(".form_3"); +var form_4 = document.querySelector(".form_4"); + +var form_1_btns = document.querySelector(".form_1_btns"); +var form_2_btns = document.querySelector(".form_2_btns"); +var form_3_btns = document.querySelector(".form_3_btns"); +var form_4_btns = document.querySelector(".form_4_btns"); + +var form_1_next_btn = document.querySelector(".form_1_btns .btn_next"); +var form_2_back_btn = document.querySelector(".form_2_btns .btn_back"); +var form_2_next_btn = document.querySelector(".form_2_btns .btn_next"); +var form_3_back_btn = document.querySelector(".form_3_btns .btn_back"); +var form_3_next_btn = document.querySelector(".form_3_btns .btn_next"); +var form_4_back_btn = document.querySelector(".form_4_btns .btn_back"); + +var form_2_progessbar = document.querySelector(".form_2_progessbar"); +var form_3_progessbar = document.querySelector(".form_3_progessbar"); +var form_4_progessbar = document.querySelector(".form_4_progessbar"); + +var btn_done = document.querySelector(".btn_done"); +var modal_wrapper = document.querySelector(".modal_wrapper"); +var shadow = document.querySelector(".shadow"); + +form_1_next_btn.addEventListener("click", function () { + form_1.style.display = "none"; + form_2.style.display = "block"; + + form_1_btns.style.display = "none"; + form_2_btns.style.display = "flex"; + + form_2_progessbar.classList.add("active"); +}); + +form_2_back_btn.addEventListener("click", function () { + form_1.style.display = "block"; + form_2.style.display = "none"; + + form_1_btns.style.display = "flex"; + form_2_btns.style.display = "none"; + + form_2_progessbar.classList.remove("active"); +}); + +form_2_next_btn.addEventListener("click", function () { + form_2.style.display = "none"; + form_3.style.display = "block"; + + form_3_btns.style.display = "flex"; + form_2_btns.style.display = "none"; + + form_3_progessbar.classList.add("active"); +}); + +form_3_next_btn.addEventListener("click", function () { + form_3.style.display = "none"; + form_4.style.display = "block"; + + form_4_btns.style.display = "flex"; + form_3_btns.style.display = "none"; + + form_4_progessbar.classList.add("active"); +}); + +form_3_back_btn.addEventListener("click", function () { + form_2.style.display = "block"; + form_3.style.display = "none"; + + form_3_btns.style.display = "none"; + form_2_btns.style.display = "flex"; + + form_3_progessbar.classList.remove("active"); +}); + +form_4_back_btn.addEventListener("click", function () { + form_3.style.display = "block"; + form_4.style.display = "none"; + + form_4_btns.style.display = "none"; + form_3_btns.style.display = "flex"; + + form_4_progessbar.classList.remove("active"); +}); + +/****************************************** + * MULTIPLE FORM END + ******************************************/ + +/****************************************** + * KTP & E-KYC CAMERA + ******************************************/ +document.addEventListener("DOMContentLoaded", function () { + const videoElementKtp = document.getElementById("webcamKtp"); + const captureButtonKtp = document.getElementById("captureButtonKtp"); + const fotoInputKtp = document.getElementById("fotoKtp"); + const startButtonKtp = document.getElementById("startButtonKtp"); + const refreshButtonKtp = document.getElementById("refreshButtonKtp"); + const imageHolderKtp = document.getElementById("imageHolderKtp"); + + const videoElementEkyc = document.getElementById("webcamEkyc"); + const captureButtonEkyc = document.getElementById("captureButtonEkyc"); + const fotoInputEkyc = document.getElementById("fotoEkyc"); + const startButtonEkyc = document.getElementById("startButtonEkyc"); + const refreshButtonEkyc = document.getElementById("refreshButtonEkyc"); + const imageHolderEkyc = document.getElementById("imageHolderEkyc"); + + // Inisialisasi status kamera + let ktpStream = null; + let ekycStream = null; + + // Tampilan tombol capture dan refresh + captureButtonKtp.style.display = "none"; + refreshButtonKtp.style.display = "none"; + videoElementKtp.style.display = "none"; + imageHolderKtp.style.display = "block"; + + captureButtonEkyc.style.display = "none"; + refreshButtonEkyc.style.display = "none"; + videoElementEkyc.style.display = "none"; + imageHolderEkyc.style.display = "block"; + + // Fungsi untuk menyalakan kamera + function turnOnCamera(stream, videoElement, startButton) { + videoElement.srcObject = stream; + startButton.textContent = "Matikan Kamera"; + videoElement.style.display = "block"; // Tampilkan video + } + + // Fungsi untuk mematikan kamera + function turnOffCamera(stream, videoElement, startButton) { + if (stream) { + stream.getTracks().forEach((track) => track.stop()); + videoElement.srcObject = null; + } + startButton.textContent = "Nyalakan Kamera"; + videoElement.style.display = "none"; // Sembunyikan video + } + + // Fungsi untuk menghapus hasil foto + function clearPhoto(fotoInput, fotoPreview) { + fotoInput.value = ""; + fotoPreview.innerHTML = ""; + } + + startButtonKtp.addEventListener("click", function () { + if (ktpStream) { + // Matikan kamera jika sudah aktif + turnOffCamera(ktpStream, videoElementKtp, startButtonKtp); + // Hapus hasil foto + clearPhoto( + fotoInputKtp, + document.getElementById("foto-preview-ktp") + ); + ktpStream = null; + imageHolderKtp.style.display = "block"; + captureButtonKtp.style.display = "none"; + } else { + // Aktifkan kamera jika belum aktif + navigator.mediaDevices + .getUserMedia({ video: true }) + .then(function (stream) { + ktpStream = stream; + turnOnCamera(ktpStream, videoElementKtp, startButtonKtp); + imageHolderKtp.style.display = "none"; + captureButtonKtp.style.display = "block"; + }) + .catch(function (error) { + Swal.fire({ + title: "Gagal", + text: "Gagal mengakses kamera, karena " + error, + icon: "error", + }); + }); + } + }); + + startButtonEkyc.addEventListener("click", function () { + if (ekycStream) { + // Matikan kamera jika sudah aktif + turnOffCamera(ekycStream, videoElementEkyc, startButtonEkyc); + // Hapus hasil foto + clearPhoto( + fotoInputEkyc, + document.getElementById("foto-preview-ekyc") + ); + ekycStream = null; + imageHolderEkyc.style.display = "block"; + captureButtonEkyc.style.display = "none"; + } else { + // Aktifkan kamera jika belum aktif + navigator.mediaDevices + .getUserMedia({ video: true }) + .then(function (stream) { + ekycStream = stream; + turnOnCamera(ekycStream, videoElementEkyc, startButtonEkyc); + imageHolderEkyc.style.display = "none"; + captureButtonEkyc.style.display = "block"; + }) + .catch(function (error) { + Swal.fire({ + title: "Gagal", + text: "Gagal mengakses kamera, karena " + error, + icon: "error", + }); + }); + } + }); + + refreshButtonKtp.addEventListener("click", function () { + // Hapus hasil foto jika tombol "Ulang Foto" ditekan + clearPhoto(fotoInputKtp, document.getElementById("foto-preview-ktp")); + + if (ktpStream) { + // Matikan kamera jika sedang aktif + turnOffCamera(ktpStream, videoElementKtp, startButtonKtp); + ktpStream = null; + } + + // Menyalakan kembali kamera + navigator.mediaDevices + .getUserMedia({ video: true }) + .then(function (stream) { + ktpStream = stream; + turnOnCamera(ktpStream, videoElementKtp, startButtonKtp); + }) + .catch(function (error) { + Swal.fire({ + title: "Gagal", + text: "Gagal mengakses kamera, karena " + error, + icon: "error", + }); + }); + refreshButtonKtp.style.display = "none"; + captureButtonKtp.style.display = "block"; + startButtonKtp.style.display = "block"; + }); + + refreshButtonEkyc.addEventListener("click", function () { + // Hapus hasil foto jika tombol "Ulang Foto" ditekan + clearPhoto(fotoInputEkyc, document.getElementById("foto-preview-ekyc")); + + if (ekycStream) { + // Matikan kamera jika sedang aktif + turnOffCamera(ekycStream, videoElementEkyc, startButtonEkyc); + ekycStream = null; + } + + // Menyalakan kembali kamera + navigator.mediaDevices + .getUserMedia({ video: true }) + .then(function (stream) { + ekycStream = stream; + turnOnCamera(ekycStream, videoElementEkyc, startButtonEkyc); + }) + .catch(function (error) { + Swal.fire({ + title: "Gagal", + text: "Gagal mengakses kamera, karena " + error, + icon: "error", + }); + }); + refreshButtonEkyc.style.display = "none"; + captureButtonEkyc.style.display = "block"; + startButtonEkyc.style.display = "block"; + }); + + captureButtonKtp.addEventListener("click", function () { + if (ktpStream) { + const canvas = document.createElement("canvas"); + const context = canvas.getContext("2d"); + canvas.width = videoElementKtp.videoWidth; + canvas.height = videoElementKtp.videoHeight; + context.drawImage( + videoElementKtp, + 0, + 0, + canvas.width, + canvas.height + ); + const fotoDataUrl = canvas.toDataURL("image/jpeg"); + + fotoInputKtp.value = fotoDataUrl; + + const fotoPreview = document.getElementById("foto-preview-ktp"); + fotoPreview.innerHTML = + 'Foto'; + + // Matikan kamera setelah mengambil foto + turnOffCamera(ktpStream, videoElementKtp, startButtonKtp); + // Tombol ulang muncul + refreshButtonKtp.style.display = "block"; + captureButtonKtp.style.display = "none"; + startButtonKtp.style.display = "none"; + } + }); + + captureButtonEkyc.addEventListener("click", function () { + if (ekycStream) { + const canvas = document.createElement("canvas"); + const context = canvas.getContext("2d"); + canvas.width = videoElementEkyc.videoWidth; + canvas.height = videoElementEkyc.videoHeight; + context.drawImage( + videoElementEkyc, + 0, + 0, + canvas.width, + canvas.height + ); + const fotoDataUrl = canvas.toDataURL("image/jpeg"); + + fotoInputEkyc.value = fotoDataUrl; + + const fotoPreview = document.getElementById("foto-preview-ekyc"); + fotoPreview.innerHTML = + 'Foto'; + + // Matikan kamera setelah mengambil foto + turnOffCamera(ekycStream, videoElementEkyc, startButtonEkyc); + + refreshButtonEkyc.style.display = "block"; + captureButtonEkyc.style.display = "none"; + startButtonEkyc.style.display = "none"; + } + }); +}); +/****************************************** + * END KTP & E-KYC CAMERA + ******************************************/ + +/****************************************** + * SLIDE KTP & E-KYC FORM 3 + ******************************************/ +let slideIndex = 1; +showSlide(slideIndex); + +function plusSlide(n) { + showSlide((slideIndex += n)); +} + +function currentSlide(n) { + showSlide((slideIndex = n)); +} + +function showSlide(n) { + let slides = document.querySelectorAll(".slide"); + let dots = document.querySelectorAll(".dot"); + + if (n > slides.length) { + slideIndex = 1; + } + + if (n < 1) { + slideIndex = slides.length; + } + + for (let i = 0; i < slides.length; i++) { + slides[i].style.transform = + "translateX(-" + (slideIndex - 1) * 100 + "%)"; + } + + for (let i = 0; i < dots.length; i++) { + dots[i].classList.remove("active"); + } + + dots[slideIndex - 1].classList.add("active"); +} +/****************************************** + * END SLIDE KTP & E-KYC FORM 3 + ******************************************/ + +/****************************************** + * DROPDOWN SELECT GENDER + ******************************************/ +$(document).ready(function () { + $("#gender-select").select2(); +}); +/****************************************** + * END DROPDOWN SELECT GENDER + ******************************************/ + +/****************************************** + * AJAX DROPDOWN SELECT PROVINSI, KABUPATEN & KECAMATAN + ******************************************/ +$(document).ready(function () { + $("#selectProvince").select2({ + placeholder: "Pilih Provinsi", + ajax: { + url: $("#selectProvince").data("url"), + processResults: function ({ data }) { + return { + results: $.map(data, function (item) { + return { + id: item.code, + text: item.name, + }; + }), + }; + }, + }, + }); + + $("#selectCity").select2({ + placeholder: "Pilih Kabupaten/Kota", + ajax: { + url: "", // Isi dengan URL yang sesuai + processResults: function ({ data }) { + return { + results: $.map(data, function (item) { + return { + id: item.code, + text: item.name, + }; + }), + }; + }, + }, + }); + + $("#selectDistrict").select2({ + placeholder: "Pilih Kecamatan", + ajax: { + url: "", // Isi dengan URL yang sesuai + processResults: function ({ data }) { + return { + results: $.map(data, function (item) { + return { + id: item.code, + text: item.name, + }; + }), + }; + }, + }, + }); + + $("#selectVillage").select2({ + placeholder: "Pilih Kelurahan", + ajax: { + url: "", // Isi dengan URL yang sesuai + processResults: function ({ data }) { + return { + results: $.map(data, function (item) { + return { + id: item.code, + text: item.name, + }; + }), + }; + }, + }, + }); + + // Event Listener untuk selectProvince + $("#selectProvince").change(function () { + let code = $("#selectProvince").val(); + + // Mengosongkan pilihan di selectCity dan selectDistrict dan selectVillage + $("#selectCity", "#selectDistrict", "#selectVillage").empty(); + + // Menghapus properti 'disabled' pada selectCity dan selectDistrict dan selectVillage + $("#selectCity", "#selectDistrict", "#selectVillage").prop( + "disable", + false + ); + + // Muat ulang data berdasarkan provinsi yang baru dipilih di selectProvince + $("#selectCity").select2({ + placeholder: "Pilih Kabupaten/Kota", + ajax: { + url: "/cari-kota/" + code, + processResults: function ({ data }) { + return { + results: $.map(data, function (item) { + return { + id: item.code, + text: item.name, + }; + }), + }; + }, + }, + }); + }); + + // Event Listener untuk perubahan pada selectCity + $("#selectCity").change(function () { + let code = $("#selectCity").val(); + + // Mengosongkan pilihan di selectDistrict dan selectVillage + $("#selectDristrict", "#selectVillage").empty(); + + // Menghapus properti 'disable' pada selectDistrict dan selectVillage + $("#selectDistrict", "#selectVillage").prop("disabled", false); + + // Memuat ulang data berdasarkan wilayah yang baru dipilih di selectCity + $("#selectDistrict").select2({ + placeholder: "Pilih Kecamatan", + ajax: { + url: "/cari-kecamatan/" + code, // Isi dengan URL yang sesuai + processResults: function ({ data }) { + return { + results: $.map(data, function (item) { + return { + id: item.code, + text: item.name, + }; + }), + }; + }, + }, + }); + }); + + // Event Listener untuk selectDistrict + $("#selectDistrict").change(function () { + let code = $("#selectDistrict").val(); + + // Mengosongkan pilihan di selectVillage + $("#selectVillage").empty(); + + // Menghapus properti 'disabled' pada selectVillage + $("#selectVillage").prop("disabled", false); + + // Memuat ulang data berdasarkan wilayah yang baru dipilih di selectDistrict + $("#selectVillage").select2({ + placeholder: "Pilih Kelurahan", + ajax: { + url: "/cari-kelurahan/" + code, // Isi dengan URL yang sesuai + processResults: function ({ data }) { + return { + results: $.map(data, function (item) { + return { + id: item.code, + text: item.name, + }; + }), + }; + }, + }, + }); + }); +}); +/****************************************** + * END AJAX DROPDOWN SELECT PROVINSI, KABUPATEN & KECAMATAN + ******************************************/ diff --git a/public/assets/js/login_register/jquery.js b/public/assets/js/login_register/jquery.js new file mode 100644 index 0000000..9197247 --- /dev/null +++ b/public/assets/js/login_register/jquery.js @@ -0,0 +1,5791 @@ +/*! jQuery v2.2.2 | (c) jQuery Foundation | jquery.org/license */ +!(function (a, b) { + "object" == typeof module && "object" == typeof module.exports + ? (module.exports = a.document + ? b(a, !0) + : function (a) { + if (!a.document) + throw new Error( + "jQuery requires a window with a document" + ); + return b(a); + }) + : b(a); +})("undefined" != typeof window ? window : this, function (a, b) { + var c = [], + d = a.document, + e = c.slice, + f = c.concat, + g = c.push, + h = c.indexOf, + i = {}, + j = i.toString, + k = i.hasOwnProperty, + l = {}, + m = "2.2.2", + n = function (a, b) { + return new n.fn.init(a, b); + }, + o = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + p = /^-ms-/, + q = /-([\da-z])/gi, + r = function (a, b) { + return b.toUpperCase(); + }; + (n.fn = n.prototype = + { + jquery: m, + constructor: n, + selector: "", + length: 0, + toArray: function () { + return e.call(this); + }, + get: function (a) { + return null != a + ? 0 > a + ? this[a + this.length] + : this[a] + : e.call(this); + }, + pushStack: function (a) { + var b = n.merge(this.constructor(), a); + return (b.prevObject = this), (b.context = this.context), b; + }, + each: function (a) { + return n.each(this, a); + }, + map: function (a) { + return this.pushStack( + n.map(this, function (b, c) { + return a.call(b, c, b); + }) + ); + }, + slice: function () { + return this.pushStack(e.apply(this, arguments)); + }, + first: function () { + return this.eq(0); + }, + last: function () { + return this.eq(-1); + }, + eq: function (a) { + var b = this.length, + c = +a + (0 > a ? b : 0); + return this.pushStack(c >= 0 && b > c ? [this[c]] : []); + }, + end: function () { + return this.prevObject || this.constructor(); + }, + push: g, + sort: c.sort, + splice: c.splice, + }), + (n.extend = n.fn.extend = + function () { + var a, + b, + c, + d, + e, + f, + g = arguments[0] || {}, + h = 1, + i = arguments.length, + j = !1; + for ( + "boolean" == typeof g && + ((j = g), (g = arguments[h] || {}), h++), + "object" == typeof g || n.isFunction(g) || (g = {}), + h === i && ((g = this), h--); + i > h; + h++ + ) + if (null != (a = arguments[h])) + for (b in a) + (c = g[b]), + (d = a[b]), + g !== d && + (j && + d && + (n.isPlainObject(d) || (e = n.isArray(d))) + ? (e + ? ((e = !1), + (f = + c && n.isArray(c) ? c : [])) + : (f = + c && n.isPlainObject(c) + ? c + : {}), + (g[b] = n.extend(j, f, d))) + : void 0 !== d && (g[b] = d)); + return g; + }), + n.extend({ + expando: "jQuery" + (m + Math.random()).replace(/\D/g, ""), + isReady: !0, + error: function (a) { + throw new Error(a); + }, + noop: function () {}, + isFunction: function (a) { + return "function" === n.type(a); + }, + isArray: Array.isArray, + isWindow: function (a) { + return null != a && a === a.window; + }, + isNumeric: function (a) { + var b = a && a.toString(); + return !n.isArray(a) && b - parseFloat(b) + 1 >= 0; + }, + isPlainObject: function (a) { + var b; + if ("object" !== n.type(a) || a.nodeType || n.isWindow(a)) + return !1; + if ( + a.constructor && + !k.call(a, "constructor") && + !k.call(a.constructor.prototype || {}, "isPrototypeOf") + ) + return !1; + for (b in a); + return void 0 === b || k.call(a, b); + }, + isEmptyObject: function (a) { + var b; + for (b in a) return !1; + return !0; + }, + type: function (a) { + return null == a + ? a + "" + : "object" == typeof a || "function" == typeof a + ? i[j.call(a)] || "object" + : typeof a; + }, + globalEval: function (a) { + var b, + c = eval; + (a = n.trim(a)), + a && + (1 === a.indexOf("use strict") + ? ((b = d.createElement("script")), + (b.text = a), + d.head.appendChild(b).parentNode.removeChild(b)) + : c(a)); + }, + camelCase: function (a) { + return a.replace(p, "ms-").replace(q, r); + }, + nodeName: function (a, b) { + return ( + a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase() + ); + }, + each: function (a, b) { + var c, + d = 0; + if (s(a)) { + for (c = a.length; c > d; d++) + if (b.call(a[d], d, a[d]) === !1) break; + } else for (d in a) if (b.call(a[d], d, a[d]) === !1) break; + return a; + }, + trim: function (a) { + return null == a ? "" : (a + "").replace(o, ""); + }, + makeArray: function (a, b) { + var c = b || []; + return ( + null != a && + (s(Object(a)) + ? n.merge(c, "string" == typeof a ? [a] : a) + : g.call(c, a)), + c + ); + }, + inArray: function (a, b, c) { + return null == b ? -1 : h.call(b, a, c); + }, + merge: function (a, b) { + for (var c = +b.length, d = 0, e = a.length; c > d; d++) + a[e++] = b[d]; + return (a.length = e), a; + }, + grep: function (a, b, c) { + for (var d, e = [], f = 0, g = a.length, h = !c; g > f; f++) + (d = !b(a[f], f)), d !== h && e.push(a[f]); + return e; + }, + map: function (a, b, c) { + var d, + e, + g = 0, + h = []; + if (s(a)) + for (d = a.length; d > g; g++) + (e = b(a[g], g, c)), null != e && h.push(e); + else for (g in a) (e = b(a[g], g, c)), null != e && h.push(e); + return f.apply([], h); + }, + guid: 1, + proxy: function (a, b) { + var c, d, f; + return ( + "string" == typeof b && ((c = a[b]), (b = a), (a = c)), + n.isFunction(a) + ? ((d = e.call(arguments, 2)), + (f = function () { + return a.apply( + b || this, + d.concat(e.call(arguments)) + ); + }), + (f.guid = a.guid = a.guid || n.guid++), + f) + : void 0 + ); + }, + now: Date.now, + support: l, + }), + "function" == typeof Symbol && + (n.fn[Symbol.iterator] = c[Symbol.iterator]), + n.each( + "Boolean Number String Function Array Date RegExp Object Error Symbol".split( + " " + ), + function (a, b) { + i["[object " + b + "]"] = b.toLowerCase(); + } + ); + function s(a) { + var b = !!a && "length" in a && a.length, + c = n.type(a); + return "function" === c || n.isWindow(a) + ? !1 + : "array" === c || + 0 === b || + ("number" == typeof b && b > 0 && b - 1 in a); + } + var t = (function (a) { + var b, + c, + d, + e, + f, + g, + h, + i, + j, + k, + l, + m, + n, + o, + p, + q, + r, + s, + t, + u = "sizzle" + 1 * new Date(), + v = a.document, + w = 0, + x = 0, + y = ga(), + z = ga(), + A = ga(), + B = function (a, b) { + return a === b && (l = !0), 0; + }, + C = 1 << 31, + D = {}.hasOwnProperty, + E = [], + F = E.pop, + G = E.push, + H = E.push, + I = E.slice, + J = function (a, b) { + for (var c = 0, d = a.length; d > c; c++) + if (a[c] === b) return c; + return -1; + }, + K = + "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + L = "[\\x20\\t\\r\\n\\f]", + M = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + N = + "\\[" + + L + + "*(" + + M + + ")(?:" + + L + + "*([*^$|!~]?=)" + + L + + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + + M + + "))|)" + + L + + "*\\]", + O = + ":(" + + M + + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + + N + + ")*)|.*)\\)|)", + P = new RegExp(L + "+", "g"), + Q = new RegExp( + "^" + L + "+|((?:^|[^\\\\])(?:\\\\.)*)" + L + "+$", + "g" + ), + R = new RegExp("^" + L + "*," + L + "*"), + S = new RegExp("^" + L + "*([>+~]|" + L + ")" + L + "*"), + T = new RegExp("=" + L + "*([^\\]'\"]*?)" + L + "*\\]", "g"), + U = new RegExp(O), + V = new RegExp("^" + M + "$"), + W = { + ID: new RegExp("^#(" + M + ")"), + CLASS: new RegExp("^\\.(" + M + ")"), + TAG: new RegExp("^(" + M + "|[*])"), + ATTR: new RegExp("^" + N), + PSEUDO: new RegExp("^" + O), + CHILD: new RegExp( + "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + L + + "*(even|odd|(([+-]|)(\\d*)n|)" + + L + + "*(?:([+-]|)" + + L + + "*(\\d+)|))" + + L + + "*\\)|)", + "i" + ), + bool: new RegExp("^(?:" + K + ")$", "i"), + needsContext: new RegExp( + "^" + + L + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + L + + "*((?:-\\d)?\\d*)" + + L + + "*\\)|)(?=[^-]|$)", + "i" + ), + }, + X = /^(?:input|select|textarea|button)$/i, + Y = /^h\d$/i, + Z = /^[^{]+\{\s*\[native \w/, + $ = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + _ = /[+~]/, + aa = /'|\\/g, + ba = new RegExp( + "\\\\([\\da-f]{1,6}" + L + "?|(" + L + ")|.)", + "ig" + ), + ca = function (a, b, c) { + var d = "0x" + b - 65536; + return d !== d || c + ? b + : 0 > d + ? String.fromCharCode(d + 65536) + : String.fromCharCode( + (d >> 10) | 55296, + (1023 & d) | 56320 + ); + }, + da = function () { + m(); + }; + try { + H.apply((E = I.call(v.childNodes)), v.childNodes), + E[v.childNodes.length].nodeType; + } catch (ea) { + H = { + apply: E.length + ? function (a, b) { + G.apply(a, I.call(b)); + } + : function (a, b) { + var c = a.length, + d = 0; + while ((a[c++] = b[d++])); + a.length = c - 1; + }, + }; + } + function fa(a, b, d, e) { + var f, + h, + j, + k, + l, + o, + r, + s, + w = b && b.ownerDocument, + x = b ? b.nodeType : 9; + if ( + ((d = d || []), + "string" != typeof a || !a || (1 !== x && 9 !== x && 11 !== x)) + ) + return d; + if ( + !e && + ((b ? b.ownerDocument || b : v) !== n && m(b), (b = b || n), p) + ) { + if (11 !== x && (o = $.exec(a))) + if ((f = o[1])) { + if (9 === x) { + if (!(j = b.getElementById(f))) return d; + if (j.id === f) return d.push(j), d; + } else if ( + w && + (j = w.getElementById(f)) && + t(b, j) && + j.id === f + ) + return d.push(j), d; + } else { + if (o[2]) + return H.apply(d, b.getElementsByTagName(a)), d; + if ( + (f = o[3]) && + c.getElementsByClassName && + b.getElementsByClassName + ) + return H.apply(d, b.getElementsByClassName(f)), d; + } + if (c.qsa && !A[a + " "] && (!q || !q.test(a))) { + if (1 !== x) (w = b), (s = a); + else if ("object" !== b.nodeName.toLowerCase()) { + (k = b.getAttribute("id")) + ? (k = k.replace(aa, "\\$&")) + : b.setAttribute("id", (k = u)), + (r = g(a)), + (h = r.length), + (l = V.test(k) ? "#" + k : "[id='" + k + "']"); + while (h--) r[h] = l + " " + qa(r[h]); + (s = r.join(",")), + (w = (_.test(a) && oa(b.parentNode)) || b); + } + if (s) + try { + return H.apply(d, w.querySelectorAll(s)), d; + } catch (y) { + } finally { + k === u && b.removeAttribute("id"); + } + } + } + return i(a.replace(Q, "$1"), b, d, e); + } + function ga() { + var a = []; + function b(c, e) { + return ( + a.push(c + " ") > d.cacheLength && delete b[a.shift()], + (b[c + " "] = e) + ); + } + return b; + } + function ha(a) { + return (a[u] = !0), a; + } + function ia(a) { + var b = n.createElement("div"); + try { + return !!a(b); + } catch (c) { + return !1; + } finally { + b.parentNode && b.parentNode.removeChild(b), (b = null); + } + } + function ja(a, b) { + var c = a.split("|"), + e = c.length; + while (e--) d.attrHandle[c[e]] = b; + } + function ka(a, b) { + var c = b && a, + d = + c && + 1 === a.nodeType && + 1 === b.nodeType && + (~b.sourceIndex || C) - (~a.sourceIndex || C); + if (d) return d; + if (c) while ((c = c.nextSibling)) if (c === b) return -1; + return a ? 1 : -1; + } + function la(a) { + return function (b) { + var c = b.nodeName.toLowerCase(); + return "input" === c && b.type === a; + }; + } + function ma(a) { + return function (b) { + var c = b.nodeName.toLowerCase(); + return ("input" === c || "button" === c) && b.type === a; + }; + } + function na(a) { + return ha(function (b) { + return ( + (b = +b), + ha(function (c, d) { + var e, + f = a([], c.length, b), + g = f.length; + while (g--) c[(e = f[g])] && (c[e] = !(d[e] = c[e])); + }) + ); + }); + } + function oa(a) { + return a && "undefined" != typeof a.getElementsByTagName && a; + } + (c = fa.support = {}), + (f = fa.isXML = + function (a) { + var b = a && (a.ownerDocument || a).documentElement; + return b ? "HTML" !== b.nodeName : !1; + }), + (m = fa.setDocument = + function (a) { + var b, + e, + g = a ? a.ownerDocument || a : v; + return g !== n && 9 === g.nodeType && g.documentElement + ? ((n = g), + (o = n.documentElement), + (p = !f(n)), + (e = n.defaultView) && + e.top !== e && + (e.addEventListener + ? e.addEventListener("unload", da, !1) + : e.attachEvent && + e.attachEvent("onunload", da)), + (c.attributes = ia(function (a) { + return ( + (a.className = "i"), + !a.getAttribute("className") + ); + })), + (c.getElementsByTagName = ia(function (a) { + return ( + a.appendChild(n.createComment("")), + !a.getElementsByTagName("*").length + ); + })), + (c.getElementsByClassName = Z.test( + n.getElementsByClassName + )), + (c.getById = ia(function (a) { + return ( + (o.appendChild(a).id = u), + !n.getElementsByName || + !n.getElementsByName(u).length + ); + })), + c.getById + ? ((d.find.ID = function (a, b) { + if ( + "undefined" != + typeof b.getElementById && + p + ) { + var c = b.getElementById(a); + return c ? [c] : []; + } + }), + (d.filter.ID = function (a) { + var b = a.replace(ba, ca); + return function (a) { + return a.getAttribute("id") === b; + }; + })) + : (delete d.find.ID, + (d.filter.ID = function (a) { + var b = a.replace(ba, ca); + return function (a) { + var c = + "undefined" != + typeof a.getAttributeNode && + a.getAttributeNode("id"); + return c && c.value === b; + }; + })), + (d.find.TAG = c.getElementsByTagName + ? function (a, b) { + return "undefined" != + typeof b.getElementsByTagName + ? b.getElementsByTagName(a) + : c.qsa + ? b.querySelectorAll(a) + : void 0; + } + : function (a, b) { + var c, + d = [], + e = 0, + f = b.getElementsByTagName(a); + if ("*" === a) { + while ((c = f[e++])) + 1 === c.nodeType && d.push(c); + return d; + } + return f; + }), + (d.find.CLASS = + c.getElementsByClassName && + function (a, b) { + return "undefined" != + typeof b.getElementsByClassName && p + ? b.getElementsByClassName(a) + : void 0; + }), + (r = []), + (q = []), + (c.qsa = Z.test(n.querySelectorAll)) && + (ia(function (a) { + (o.appendChild(a).innerHTML = + ""), + a.querySelectorAll("[msallowcapture^='']") + .length && + q.push("[*^$]=" + L + "*(?:''|\"\")"), + a.querySelectorAll("[selected]").length || + q.push( + "\\[" + L + "*(?:value|" + K + ")" + ), + a.querySelectorAll("[id~=" + u + "-]") + .length || q.push("~="), + a.querySelectorAll(":checked").length || + q.push(":checked"), + a.querySelectorAll("a#" + u + "+*") + .length || q.push(".#.+[+~]"); + }), + ia(function (a) { + var b = n.createElement("input"); + b.setAttribute("type", "hidden"), + a + .appendChild(b) + .setAttribute("name", "D"), + a.querySelectorAll("[name=d]").length && + q.push("name" + L + "*[*^$|!~]?="), + a.querySelectorAll(":enabled").length || + q.push(":enabled", ":disabled"), + a.querySelectorAll("*,:x"), + q.push(",.*:"); + })), + (c.matchesSelector = Z.test( + (s = + o.matches || + o.webkitMatchesSelector || + o.mozMatchesSelector || + o.oMatchesSelector || + o.msMatchesSelector) + )) && + ia(function (a) { + (c.disconnectedMatch = s.call(a, "div")), + s.call(a, "[s!='']:x"), + r.push("!=", O); + }), + (q = q.length && new RegExp(q.join("|"))), + (r = r.length && new RegExp(r.join("|"))), + (b = Z.test(o.compareDocumentPosition)), + (t = + b || Z.test(o.contains) + ? function (a, b) { + var c = + 9 === a.nodeType + ? a.documentElement + : a, + d = b && b.parentNode; + return ( + a === d || + !( + !d || + 1 !== d.nodeType || + !(c.contains + ? c.contains(d) + : a.compareDocumentPosition && + 16 & + a.compareDocumentPosition( + d + )) + ) + ); + } + : function (a, b) { + if (b) + while ((b = b.parentNode)) + if (b === a) return !0; + return !1; + }), + (B = b + ? function (a, b) { + if (a === b) return (l = !0), 0; + var d = + !a.compareDocumentPosition - + !b.compareDocumentPosition; + return d + ? d + : ((d = + (a.ownerDocument || a) === + (b.ownerDocument || b) + ? a.compareDocumentPosition(b) + : 1), + 1 & d || + (!c.sortDetached && + b.compareDocumentPosition(a) === + d) + ? a === n || + (a.ownerDocument === v && + t(v, a)) + ? -1 + : b === n || + (b.ownerDocument === v && + t(v, b)) + ? 1 + : k + ? J(k, a) - J(k, b) + : 0 + : 4 & d + ? -1 + : 1); + } + : function (a, b) { + if (a === b) return (l = !0), 0; + var c, + d = 0, + e = a.parentNode, + f = b.parentNode, + g = [a], + h = [b]; + if (!e || !f) + return a === n + ? -1 + : b === n + ? 1 + : e + ? -1 + : f + ? 1 + : k + ? J(k, a) - J(k, b) + : 0; + if (e === f) return ka(a, b); + c = a; + while ((c = c.parentNode)) g.unshift(c); + c = b; + while ((c = c.parentNode)) h.unshift(c); + while (g[d] === h[d]) d++; + return d + ? ka(g[d], h[d]) + : g[d] === v + ? -1 + : h[d] === v + ? 1 + : 0; + }), + n) + : n; + }), + (fa.matches = function (a, b) { + return fa(a, null, null, b); + }), + (fa.matchesSelector = function (a, b) { + if ( + ((a.ownerDocument || a) !== n && m(a), + (b = b.replace(T, "='$1']")), + c.matchesSelector && + p && + !A[b + " "] && + (!r || !r.test(b)) && + (!q || !q.test(b))) + ) + try { + var d = s.call(a, b); + if ( + d || + c.disconnectedMatch || + (a.document && 11 !== a.document.nodeType) + ) + return d; + } catch (e) {} + return fa(b, n, null, [a]).length > 0; + }), + (fa.contains = function (a, b) { + return (a.ownerDocument || a) !== n && m(a), t(a, b); + }), + (fa.attr = function (a, b) { + (a.ownerDocument || a) !== n && m(a); + var e = d.attrHandle[b.toLowerCase()], + f = + e && D.call(d.attrHandle, b.toLowerCase()) + ? e(a, b, !p) + : void 0; + return void 0 !== f + ? f + : c.attributes || !p + ? a.getAttribute(b) + : (f = a.getAttributeNode(b)) && f.specified + ? f.value + : null; + }), + (fa.error = function (a) { + throw new Error("Syntax error, unrecognized expression: " + a); + }), + (fa.uniqueSort = function (a) { + var b, + d = [], + e = 0, + f = 0; + if ( + ((l = !c.detectDuplicates), + (k = !c.sortStable && a.slice(0)), + a.sort(B), + l) + ) { + while ((b = a[f++])) b === a[f] && (e = d.push(f)); + while (e--) a.splice(d[e], 1); + } + return (k = null), a; + }), + (e = fa.getText = + function (a) { + var b, + c = "", + d = 0, + f = a.nodeType; + if (f) { + if (1 === f || 9 === f || 11 === f) { + if ("string" == typeof a.textContent) + return a.textContent; + for (a = a.firstChild; a; a = a.nextSibling) + c += e(a); + } else if (3 === f || 4 === f) return a.nodeValue; + } else while ((b = a[d++])) c += e(b); + return c; + }), + (d = fa.selectors = + { + cacheLength: 50, + createPseudo: ha, + match: W, + attrHandle: {}, + find: {}, + relative: { + ">": { dir: "parentNode", first: !0 }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: !0 }, + "~": { dir: "previousSibling" }, + }, + preFilter: { + ATTR: function (a) { + return ( + (a[1] = a[1].replace(ba, ca)), + (a[3] = (a[3] || a[4] || a[5] || "").replace( + ba, + ca + )), + "~=" === a[2] && (a[3] = " " + a[3] + " "), + a.slice(0, 4) + ); + }, + CHILD: function (a) { + return ( + (a[1] = a[1].toLowerCase()), + "nth" === a[1].slice(0, 3) + ? (a[3] || fa.error(a[0]), + (a[4] = +(a[4] + ? a[5] + (a[6] || 1) + : 2 * + ("even" === a[3] || + "odd" === a[3]))), + (a[5] = +(a[7] + a[8] || "odd" === a[3]))) + : a[3] && fa.error(a[0]), + a + ); + }, + PSEUDO: function (a) { + var b, + c = !a[6] && a[2]; + return W.CHILD.test(a[0]) + ? null + : (a[3] + ? (a[2] = a[4] || a[5] || "") + : c && + U.test(c) && + (b = g(c, !0)) && + (b = + c.indexOf(")", c.length - b) - + c.length) && + ((a[0] = a[0].slice(0, b)), + (a[2] = c.slice(0, b))), + a.slice(0, 3)); + }, + }, + filter: { + TAG: function (a) { + var b = a.replace(ba, ca).toLowerCase(); + return "*" === a + ? function () { + return !0; + } + : function (a) { + return ( + a.nodeName && + a.nodeName.toLowerCase() === b + ); + }; + }, + CLASS: function (a) { + var b = y[a + " "]; + return ( + b || + ((b = new RegExp( + "(^|" + L + ")" + a + "(" + L + "|$)" + )) && + y(a, function (a) { + return b.test( + ("string" == typeof a.className && + a.className) || + ("undefined" != + typeof a.getAttribute && + a.getAttribute("class")) || + "" + ); + })) + ); + }, + ATTR: function (a, b, c) { + return function (d) { + var e = fa.attr(d, a); + return null == e + ? "!=" === b + : b + ? ((e += ""), + "=" === b + ? e === c + : "!=" === b + ? e !== c + : "^=" === b + ? c && 0 === e.indexOf(c) + : "*=" === b + ? c && e.indexOf(c) > -1 + : "$=" === b + ? c && e.slice(-c.length) === c + : "~=" === b + ? ( + " " + + e.replace(P, " ") + + " " + ).indexOf(c) > -1 + : "|=" === b + ? e === c || + e.slice(0, c.length + 1) === c + "-" + : !1) + : !0; + }; + }, + CHILD: function (a, b, c, d, e) { + var f = "nth" !== a.slice(0, 3), + g = "last" !== a.slice(-4), + h = "of-type" === b; + return 1 === d && 0 === e + ? function (a) { + return !!a.parentNode; + } + : function (b, c, i) { + var j, + k, + l, + m, + n, + o, + p = + f !== g + ? "nextSibling" + : "previousSibling", + q = b.parentNode, + r = h && b.nodeName.toLowerCase(), + s = !i && !h, + t = !1; + if (q) { + if (f) { + while (p) { + m = b; + while ((m = m[p])) + if ( + h + ? m.nodeName.toLowerCase() === + r + : 1 === m.nodeType + ) + return !1; + o = p = + "only" === a && + !o && + "nextSibling"; + } + return !0; + } + if ( + ((o = [ + g + ? q.firstChild + : q.lastChild, + ]), + g && s) + ) { + (m = q), + (l = m[u] || (m[u] = {})), + (k = + l[m.uniqueID] || + (l[m.uniqueID] = {})), + (j = k[a] || []), + (n = j[0] === w && j[1]), + (t = n && j[2]), + (m = n && q.childNodes[n]); + while ( + (m = + (++n && m && m[p]) || + (t = n = 0) || + o.pop()) + ) + if ( + 1 === m.nodeType && + ++t && + m === b + ) { + k[a] = [w, n, t]; + break; + } + } else if ( + (s && + ((m = b), + (l = m[u] || (m[u] = {})), + (k = + l[m.uniqueID] || + (l[m.uniqueID] = {})), + (j = k[a] || []), + (n = j[0] === w && j[1]), + (t = n)), + t === !1) + ) + while ( + (m = + (++n && m && m[p]) || + (t = n = 0) || + o.pop()) + ) + if ( + (h + ? m.nodeName.toLowerCase() === + r + : 1 === m.nodeType) && + ++t && + (s && + ((l = + m[u] || + (m[u] = {})), + (k = + l[m.uniqueID] || + (l[m.uniqueID] = + {})), + (k[a] = [w, t])), + m === b) + ) + break; + return ( + (t -= e), + t === d || + (t % d === 0 && t / d >= 0) + ); + } + }; + }, + PSEUDO: function (a, b) { + var c, + e = + d.pseudos[a] || + d.setFilters[a.toLowerCase()] || + fa.error("unsupported pseudo: " + a); + return e[u] + ? e(b) + : e.length > 1 + ? ((c = [a, a, "", b]), + d.setFilters.hasOwnProperty(a.toLowerCase()) + ? ha(function (a, c) { + var d, + f = e(a, b), + g = f.length; + while (g--) + (d = J(a, f[g])), + (a[d] = !(c[d] = f[g])); + }) + : function (a) { + return e(a, 0, c); + }) + : e; + }, + }, + pseudos: { + not: ha(function (a) { + var b = [], + c = [], + d = h(a.replace(Q, "$1")); + return d[u] + ? ha(function (a, b, c, e) { + var f, + g = d(a, null, e, []), + h = a.length; + while (h--) + (f = g[h]) && (a[h] = !(b[h] = f)); + }) + : function (a, e, f) { + return ( + (b[0] = a), + d(b, null, f, c), + (b[0] = null), + !c.pop() + ); + }; + }), + has: ha(function (a) { + return function (b) { + return fa(a, b).length > 0; + }; + }), + contains: ha(function (a) { + return ( + (a = a.replace(ba, ca)), + function (b) { + return ( + ( + b.textContent || + b.innerText || + e(b) + ).indexOf(a) > -1 + ); + } + ); + }), + lang: ha(function (a) { + return ( + V.test(a || "") || + fa.error("unsupported lang: " + a), + (a = a.replace(ba, ca).toLowerCase()), + function (b) { + var c; + do + if ( + (c = p + ? b.lang + : b.getAttribute("xml:lang") || + b.getAttribute("lang")) + ) + return ( + (c = c.toLowerCase()), + c === a || + 0 === c.indexOf(a + "-") + ); + while ( + (b = b.parentNode) && + 1 === b.nodeType + ); + return !1; + } + ); + }), + target: function (b) { + var c = a.location && a.location.hash; + return c && c.slice(1) === b.id; + }, + root: function (a) { + return a === o; + }, + focus: function (a) { + return ( + a === n.activeElement && + (!n.hasFocus || n.hasFocus()) && + !!(a.type || a.href || ~a.tabIndex) + ); + }, + enabled: function (a) { + return a.disabled === !1; + }, + disabled: function (a) { + return a.disabled === !0; + }, + checked: function (a) { + var b = a.nodeName.toLowerCase(); + return ( + ("input" === b && !!a.checked) || + ("option" === b && !!a.selected) + ); + }, + selected: function (a) { + return ( + a.parentNode && a.parentNode.selectedIndex, + a.selected === !0 + ); + }, + empty: function (a) { + for (a = a.firstChild; a; a = a.nextSibling) + if (a.nodeType < 6) return !1; + return !0; + }, + parent: function (a) { + return !d.pseudos.empty(a); + }, + header: function (a) { + return Y.test(a.nodeName); + }, + input: function (a) { + return X.test(a.nodeName); + }, + button: function (a) { + var b = a.nodeName.toLowerCase(); + return ( + ("input" === b && "button" === a.type) || + "button" === b + ); + }, + text: function (a) { + var b; + return ( + "input" === a.nodeName.toLowerCase() && + "text" === a.type && + (null == (b = a.getAttribute("type")) || + "text" === b.toLowerCase()) + ); + }, + first: na(function () { + return [0]; + }), + last: na(function (a, b) { + return [b - 1]; + }), + eq: na(function (a, b, c) { + return [0 > c ? c + b : c]; + }), + even: na(function (a, b) { + for (var c = 0; b > c; c += 2) a.push(c); + return a; + }), + odd: na(function (a, b) { + for (var c = 1; b > c; c += 2) a.push(c); + return a; + }), + lt: na(function (a, b, c) { + for (var d = 0 > c ? c + b : c; --d >= 0; ) + a.push(d); + return a; + }), + gt: na(function (a, b, c) { + for (var d = 0 > c ? c + b : c; ++d < b; ) + a.push(d); + return a; + }), + }, + }), + (d.pseudos.nth = d.pseudos.eq); + for (b in { + radio: !0, + checkbox: !0, + file: !0, + password: !0, + image: !0, + }) + d.pseudos[b] = la(b); + for (b in { submit: !0, reset: !0 }) d.pseudos[b] = ma(b); + function pa() {} + (pa.prototype = d.filters = d.pseudos), + (d.setFilters = new pa()), + (g = fa.tokenize = + function (a, b) { + var c, + e, + f, + g, + h, + i, + j, + k = z[a + " "]; + if (k) return b ? 0 : k.slice(0); + (h = a), (i = []), (j = d.preFilter); + while (h) { + (c && !(e = R.exec(h))) || + (e && (h = h.slice(e[0].length) || h), + i.push((f = []))), + (c = !1), + (e = S.exec(h)) && + ((c = e.shift()), + f.push({ + value: c, + type: e[0].replace(Q, " "), + }), + (h = h.slice(c.length))); + for (g in d.filter) + !(e = W[g].exec(h)) || + (j[g] && !(e = j[g](e))) || + ((c = e.shift()), + f.push({ value: c, type: g, matches: e }), + (h = h.slice(c.length))); + if (!c) break; + } + return b ? h.length : h ? fa.error(a) : z(a, i).slice(0); + }); + function qa(a) { + for (var b = 0, c = a.length, d = ""; c > b; b++) d += a[b].value; + return d; + } + function ra(a, b, c) { + var d = b.dir, + e = c && "parentNode" === d, + f = x++; + return b.first + ? function (b, c, f) { + while ((b = b[d])) + if (1 === b.nodeType || e) return a(b, c, f); + } + : function (b, c, g) { + var h, + i, + j, + k = [w, f]; + if (g) { + while ((b = b[d])) + if ((1 === b.nodeType || e) && a(b, c, g)) + return !0; + } else + while ((b = b[d])) + if (1 === b.nodeType || e) { + if ( + ((j = b[u] || (b[u] = {})), + (i = + j[b.uniqueID] || + (j[b.uniqueID] = {})), + (h = i[d]) && h[0] === w && h[1] === f) + ) + return (k[2] = h[2]); + if (((i[d] = k), (k[2] = a(b, c, g)))) + return !0; + } + }; + } + function sa(a) { + return a.length > 1 + ? function (b, c, d) { + var e = a.length; + while (e--) if (!a[e](b, c, d)) return !1; + return !0; + } + : a[0]; + } + function ta(a, b, c) { + for (var d = 0, e = b.length; e > d; d++) fa(a, b[d], c); + return c; + } + function ua(a, b, c, d, e) { + for (var f, g = [], h = 0, i = a.length, j = null != b; i > h; h++) + (f = a[h]) && + ((c && !c(f, d, e)) || (g.push(f), j && b.push(h))); + return g; + } + function va(a, b, c, d, e, f) { + return ( + d && !d[u] && (d = va(d)), + e && !e[u] && (e = va(e, f)), + ha(function (f, g, h, i) { + var j, + k, + l, + m = [], + n = [], + o = g.length, + p = f || ta(b || "*", h.nodeType ? [h] : h, []), + q = !a || (!f && b) ? p : ua(p, m, a, h, i), + r = c ? (e || (f ? a : o || d) ? [] : g) : q; + if ((c && c(q, r, h, i), d)) { + (j = ua(r, n)), d(j, [], h, i), (k = j.length); + while (k--) (l = j[k]) && (r[n[k]] = !(q[n[k]] = l)); + } + if (f) { + if (e || a) { + if (e) { + (j = []), (k = r.length); + while (k--) (l = r[k]) && j.push((q[k] = l)); + e(null, (r = []), j, i); + } + k = r.length; + while (k--) + (l = r[k]) && + (j = e ? J(f, l) : m[k]) > -1 && + (f[j] = !(g[j] = l)); + } + } else (r = ua(r === g ? r.splice(o, r.length) : r)), e ? e(null, g, r, i) : H.apply(g, r); + }) + ); + } + function wa(a) { + for ( + var b, + c, + e, + f = a.length, + g = d.relative[a[0].type], + h = g || d.relative[" "], + i = g ? 1 : 0, + k = ra( + function (a) { + return a === b; + }, + h, + !0 + ), + l = ra( + function (a) { + return J(b, a) > -1; + }, + h, + !0 + ), + m = [ + function (a, c, d) { + var e = + (!g && (d || c !== j)) || + ((b = c).nodeType ? k(a, c, d) : l(a, c, d)); + return (b = null), e; + }, + ]; + f > i; + i++ + ) + if ((c = d.relative[a[i].type])) m = [ra(sa(m), c)]; + else { + if ( + ((c = d.filter[a[i].type].apply(null, a[i].matches)), + c[u]) + ) { + for (e = ++i; f > e; e++) + if (d.relative[a[e].type]) break; + return va( + i > 1 && sa(m), + i > 1 && + qa( + a.slice(0, i - 1).concat({ + value: " " === a[i - 2].type ? "*" : "", + }) + ).replace(Q, "$1"), + c, + e > i && wa(a.slice(i, e)), + f > e && wa((a = a.slice(e))), + f > e && qa(a) + ); + } + m.push(c); + } + return sa(m); + } + function xa(a, b) { + var c = b.length > 0, + e = a.length > 0, + f = function (f, g, h, i, k) { + var l, + o, + q, + r = 0, + s = "0", + t = f && [], + u = [], + v = j, + x = f || (e && d.find.TAG("*", k)), + y = (w += null == v ? 1 : Math.random() || 0.1), + z = x.length; + for ( + k && (j = g === n || g || k); + s !== z && null != (l = x[s]); + s++ + ) { + if (e && l) { + (o = 0), + g || l.ownerDocument === n || (m(l), (h = !p)); + while ((q = a[o++])) + if (q(l, g || n, h)) { + i.push(l); + break; + } + k && (w = y); + } + c && ((l = !q && l) && r--, f && t.push(l)); + } + if (((r += s), c && s !== r)) { + o = 0; + while ((q = b[o++])) q(t, u, g, h); + if (f) { + if (r > 0) + while (s--) t[s] || u[s] || (u[s] = F.call(i)); + u = ua(u); + } + H.apply(i, u), + k && + !f && + u.length > 0 && + r + b.length > 1 && + fa.uniqueSort(i); + } + return k && ((w = y), (j = v)), t; + }; + return c ? ha(f) : f; + } + return ( + (h = fa.compile = + function (a, b) { + var c, + d = [], + e = [], + f = A[a + " "]; + if (!f) { + b || (b = g(a)), (c = b.length); + while (c--) + (f = wa(b[c])), f[u] ? d.push(f) : e.push(f); + (f = A(a, xa(e, d))), (f.selector = a); + } + return f; + }), + (i = fa.select = + function (a, b, e, f) { + var i, + j, + k, + l, + m, + n = "function" == typeof a && a, + o = !f && g((a = n.selector || a)); + if (((e = e || []), 1 === o.length)) { + if ( + ((j = o[0] = o[0].slice(0)), + j.length > 2 && + "ID" === (k = j[0]).type && + c.getById && + 9 === b.nodeType && + p && + d.relative[j[1].type]) + ) { + if ( + ((b = (d.find.ID( + k.matches[0].replace(ba, ca), + b + ) || [])[0]), + !b) + ) + return e; + n && (b = b.parentNode), + (a = a.slice(j.shift().value.length)); + } + i = W.needsContext.test(a) ? 0 : j.length; + while (i--) { + if (((k = j[i]), d.relative[(l = k.type)])) break; + if ( + (m = d.find[l]) && + (f = m( + k.matches[0].replace(ba, ca), + (_.test(j[0].type) && oa(b.parentNode)) || b + )) + ) { + if ( + (j.splice(i, 1), + (a = f.length && qa(j)), + !a) + ) + return H.apply(e, f), e; + break; + } + } + } + return ( + (n || h(a, o))( + f, + b, + !p, + e, + !b || (_.test(a) && oa(b.parentNode)) || b + ), + e + ); + }), + (c.sortStable = u.split("").sort(B).join("") === u), + (c.detectDuplicates = !!l), + m(), + (c.sortDetached = ia(function (a) { + return 1 & a.compareDocumentPosition(n.createElement("div")); + })), + ia(function (a) { + return ( + (a.innerHTML = ""), + "#" === a.firstChild.getAttribute("href") + ); + }) || + ja("type|href|height|width", function (a, b, c) { + return c + ? void 0 + : a.getAttribute(b, "type" === b.toLowerCase() ? 1 : 2); + }), + (c.attributes && + ia(function (a) { + return ( + (a.innerHTML = ""), + a.firstChild.setAttribute("value", ""), + "" === a.firstChild.getAttribute("value") + ); + })) || + ja("value", function (a, b, c) { + return c || "input" !== a.nodeName.toLowerCase() + ? void 0 + : a.defaultValue; + }), + ia(function (a) { + return null == a.getAttribute("disabled"); + }) || + ja(K, function (a, b, c) { + var d; + return c + ? void 0 + : a[b] === !0 + ? b.toLowerCase() + : (d = a.getAttributeNode(b)) && d.specified + ? d.value + : null; + }), + fa + ); + })(a); + (n.find = t), + (n.expr = t.selectors), + (n.expr[":"] = n.expr.pseudos), + (n.uniqueSort = n.unique = t.uniqueSort), + (n.text = t.getText), + (n.isXMLDoc = t.isXML), + (n.contains = t.contains); + var u = function (a, b, c) { + var d = [], + e = void 0 !== c; + while ((a = a[b]) && 9 !== a.nodeType) + if (1 === a.nodeType) { + if (e && n(a).is(c)) break; + d.push(a); + } + return d; + }, + v = function (a, b) { + for (var c = []; a; a = a.nextSibling) + 1 === a.nodeType && a !== b && c.push(a); + return c; + }, + w = n.expr.match.needsContext, + x = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/, + y = /^.[^:#\[\.,]*$/; + function z(a, b, c) { + if (n.isFunction(b)) + return n.grep(a, function (a, d) { + return !!b.call(a, d, a) !== c; + }); + if (b.nodeType) + return n.grep(a, function (a) { + return (a === b) !== c; + }); + if ("string" == typeof b) { + if (y.test(b)) return n.filter(b, a, c); + b = n.filter(b, a); + } + return n.grep(a, function (a) { + return h.call(b, a) > -1 !== c; + }); + } + (n.filter = function (a, b, c) { + var d = b[0]; + return ( + c && (a = ":not(" + a + ")"), + 1 === b.length && 1 === d.nodeType + ? n.find.matchesSelector(d, a) + ? [d] + : [] + : n.find.matches( + a, + n.grep(b, function (a) { + return 1 === a.nodeType; + }) + ) + ); + }), + n.fn.extend({ + find: function (a) { + var b, + c = this.length, + d = [], + e = this; + if ("string" != typeof a) + return this.pushStack( + n(a).filter(function () { + for (b = 0; c > b; b++) + if (n.contains(e[b], this)) return !0; + }) + ); + for (b = 0; c > b; b++) n.find(a, e[b], d); + return ( + (d = this.pushStack(c > 1 ? n.unique(d) : d)), + (d.selector = this.selector ? this.selector + " " + a : a), + d + ); + }, + filter: function (a) { + return this.pushStack(z(this, a || [], !1)); + }, + not: function (a) { + return this.pushStack(z(this, a || [], !0)); + }, + is: function (a) { + return !!z( + this, + "string" == typeof a && w.test(a) ? n(a) : a || [], + !1 + ).length; + }, + }); + var A, + B = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + C = (n.fn.init = function (a, b, c) { + var e, f; + if (!a) return this; + if (((c = c || A), "string" == typeof a)) { + if ( + ((e = + "<" === a[0] && ">" === a[a.length - 1] && a.length >= 3 + ? [null, a, null] + : B.exec(a)), + !e || (!e[1] && b)) + ) + return !b || b.jquery + ? (b || c).find(a) + : this.constructor(b).find(a); + if (e[1]) { + if ( + ((b = b instanceof n ? b[0] : b), + n.merge( + this, + n.parseHTML( + e[1], + b && b.nodeType ? b.ownerDocument || b : d, + !0 + ) + ), + x.test(e[1]) && n.isPlainObject(b)) + ) + for (e in b) + n.isFunction(this[e]) + ? this[e](b[e]) + : this.attr(e, b[e]); + return this; + } + return ( + (f = d.getElementById(e[2])), + f && f.parentNode && ((this.length = 1), (this[0] = f)), + (this.context = d), + (this.selector = a), + this + ); + } + return a.nodeType + ? ((this.context = this[0] = a), (this.length = 1), this) + : n.isFunction(a) + ? void 0 !== c.ready + ? c.ready(a) + : a(n) + : (void 0 !== a.selector && + ((this.selector = a.selector), + (this.context = a.context)), + n.makeArray(a, this)); + }); + (C.prototype = n.fn), (A = n(d)); + var D = /^(?:parents|prev(?:Until|All))/, + E = { children: !0, contents: !0, next: !0, prev: !0 }; + n.fn.extend({ + has: function (a) { + var b = n(a, this), + c = b.length; + return this.filter(function () { + for (var a = 0; c > a; a++) + if (n.contains(this, b[a])) return !0; + }); + }, + closest: function (a, b) { + for ( + var c, + d = 0, + e = this.length, + f = [], + g = + w.test(a) || "string" != typeof a + ? n(a, b || this.context) + : 0; + e > d; + d++ + ) + for (c = this[d]; c && c !== b; c = c.parentNode) + if ( + c.nodeType < 11 && + (g + ? g.index(c) > -1 + : 1 === c.nodeType && n.find.matchesSelector(c, a)) + ) { + f.push(c); + break; + } + return this.pushStack(f.length > 1 ? n.uniqueSort(f) : f); + }, + index: function (a) { + return a + ? "string" == typeof a + ? h.call(n(a), this[0]) + : h.call(this, a.jquery ? a[0] : a) + : this[0] && this[0].parentNode + ? this.first().prevAll().length + : -1; + }, + add: function (a, b) { + return this.pushStack(n.uniqueSort(n.merge(this.get(), n(a, b)))); + }, + addBack: function (a) { + return this.add( + null == a ? this.prevObject : this.prevObject.filter(a) + ); + }, + }); + function F(a, b) { + while ((a = a[b]) && 1 !== a.nodeType); + return a; + } + n.each( + { + parent: function (a) { + var b = a.parentNode; + return b && 11 !== b.nodeType ? b : null; + }, + parents: function (a) { + return u(a, "parentNode"); + }, + parentsUntil: function (a, b, c) { + return u(a, "parentNode", c); + }, + next: function (a) { + return F(a, "nextSibling"); + }, + prev: function (a) { + return F(a, "previousSibling"); + }, + nextAll: function (a) { + return u(a, "nextSibling"); + }, + prevAll: function (a) { + return u(a, "previousSibling"); + }, + nextUntil: function (a, b, c) { + return u(a, "nextSibling", c); + }, + prevUntil: function (a, b, c) { + return u(a, "previousSibling", c); + }, + siblings: function (a) { + return v((a.parentNode || {}).firstChild, a); + }, + children: function (a) { + return v(a.firstChild); + }, + contents: function (a) { + return a.contentDocument || n.merge([], a.childNodes); + }, + }, + function (a, b) { + n.fn[a] = function (c, d) { + var e = n.map(this, b, c); + return ( + "Until" !== a.slice(-5) && (d = c), + d && "string" == typeof d && (e = n.filter(d, e)), + this.length > 1 && + (E[a] || n.uniqueSort(e), D.test(a) && e.reverse()), + this.pushStack(e) + ); + }; + } + ); + var G = /\S+/g; + function H(a) { + var b = {}; + return ( + n.each(a.match(G) || [], function (a, c) { + b[c] = !0; + }), + b + ); + } + (n.Callbacks = function (a) { + a = "string" == typeof a ? H(a) : n.extend({}, a); + var b, + c, + d, + e, + f = [], + g = [], + h = -1, + i = function () { + for (e = a.once, d = b = !0; g.length; h = -1) { + c = g.shift(); + while (++h < f.length) + f[h].apply(c[0], c[1]) === !1 && + a.stopOnFalse && + ((h = f.length), (c = !1)); + } + a.memory || (c = !1), (b = !1), e && (f = c ? [] : ""); + }, + j = { + add: function () { + return ( + f && + (c && !b && ((h = f.length - 1), g.push(c)), + (function d(b) { + n.each(b, function (b, c) { + n.isFunction(c) + ? (a.unique && j.has(c)) || f.push(c) + : c && + c.length && + "string" !== n.type(c) && + d(c); + }); + })(arguments), + c && !b && i()), + this + ); + }, + remove: function () { + return ( + n.each(arguments, function (a, b) { + var c; + while ((c = n.inArray(b, f, c)) > -1) + f.splice(c, 1), h >= c && h--; + }), + this + ); + }, + has: function (a) { + return a ? n.inArray(a, f) > -1 : f.length > 0; + }, + empty: function () { + return f && (f = []), this; + }, + disable: function () { + return (e = g = []), (f = c = ""), this; + }, + disabled: function () { + return !f; + }, + lock: function () { + return (e = g = []), c || (f = c = ""), this; + }, + locked: function () { + return !!e; + }, + fireWith: function (a, c) { + return ( + e || + ((c = c || []), + (c = [a, c.slice ? c.slice() : c]), + g.push(c), + b || i()), + this + ); + }, + fire: function () { + return j.fireWith(this, arguments), this; + }, + fired: function () { + return !!d; + }, + }; + return j; + }), + n.extend({ + Deferred: function (a) { + var b = [ + [ + "resolve", + "done", + n.Callbacks("once memory"), + "resolved", + ], + [ + "reject", + "fail", + n.Callbacks("once memory"), + "rejected", + ], + ["notify", "progress", n.Callbacks("memory")], + ], + c = "pending", + d = { + state: function () { + return c; + }, + always: function () { + return e.done(arguments).fail(arguments), this; + }, + then: function () { + var a = arguments; + return n + .Deferred(function (c) { + n.each(b, function (b, f) { + var g = n.isFunction(a[b]) && a[b]; + e[f[1]](function () { + var a = + g && g.apply(this, arguments); + a && n.isFunction(a.promise) + ? a + .promise() + .progress(c.notify) + .done(c.resolve) + .fail(c.reject) + : c[f[0] + "With"]( + this === d + ? c.promise() + : this, + g ? [a] : arguments + ); + }); + }), + (a = null); + }) + .promise(); + }, + promise: function (a) { + return null != a ? n.extend(a, d) : d; + }, + }, + e = {}; + return ( + (d.pipe = d.then), + n.each(b, function (a, f) { + var g = f[2], + h = f[3]; + (d[f[1]] = g.add), + h && + g.add( + function () { + c = h; + }, + b[1 ^ a][2].disable, + b[2][2].lock + ), + (e[f[0]] = function () { + return ( + e[f[0] + "With"]( + this === e ? d : this, + arguments + ), + this + ); + }), + (e[f[0] + "With"] = g.fireWith); + }), + d.promise(e), + a && a.call(e, e), + e + ); + }, + when: function (a) { + var b = 0, + c = e.call(arguments), + d = c.length, + f = 1 !== d || (a && n.isFunction(a.promise)) ? d : 0, + g = 1 === f ? a : n.Deferred(), + h = function (a, b, c) { + return function (d) { + (b[a] = this), + (c[a] = + arguments.length > 1 + ? e.call(arguments) + : d), + c === i + ? g.notifyWith(b, c) + : --f || g.resolveWith(b, c); + }; + }, + i, + j, + k; + if (d > 1) + for ( + i = new Array(d), j = new Array(d), k = new Array(d); + d > b; + b++ + ) + c[b] && n.isFunction(c[b].promise) + ? c[b] + .promise() + .progress(h(b, j, i)) + .done(h(b, k, c)) + .fail(g.reject) + : --f; + return f || g.resolveWith(k, c), g.promise(); + }, + }); + var I; + (n.fn.ready = function (a) { + return n.ready.promise().done(a), this; + }), + n.extend({ + isReady: !1, + readyWait: 1, + holdReady: function (a) { + a ? n.readyWait++ : n.ready(!0); + }, + ready: function (a) { + (a === !0 ? --n.readyWait : n.isReady) || + ((n.isReady = !0), + (a !== !0 && --n.readyWait > 0) || + (I.resolveWith(d, [n]), + n.fn.triggerHandler && + (n(d).triggerHandler("ready"), n(d).off("ready")))); + }, + }); + function J() { + d.removeEventListener("DOMContentLoaded", J), + a.removeEventListener("load", J), + n.ready(); + } + (n.ready.promise = function (b) { + return ( + I || + ((I = n.Deferred()), + "complete" === d.readyState || + ("loading" !== d.readyState && !d.documentElement.doScroll) + ? a.setTimeout(n.ready) + : (d.addEventListener("DOMContentLoaded", J), + a.addEventListener("load", J))), + I.promise(b) + ); + }), + n.ready.promise(); + var K = function (a, b, c, d, e, f, g) { + var h = 0, + i = a.length, + j = null == c; + if ("object" === n.type(c)) { + e = !0; + for (h in c) K(a, b, h, c[h], !0, f, g); + } else if ( + void 0 !== d && + ((e = !0), + n.isFunction(d) || (g = !0), + j && + (g + ? (b.call(a, d), (b = null)) + : ((j = b), + (b = function (a, b, c) { + return j.call(n(a), c); + }))), + b) + ) + for (; i > h; h++) + b(a[h], c, g ? d : d.call(a[h], h, b(a[h], c))); + return e ? a : j ? b.call(a) : i ? b(a[0], c) : f; + }, + L = function (a) { + return 1 === a.nodeType || 9 === a.nodeType || !+a.nodeType; + }; + function M() { + this.expando = n.expando + M.uid++; + } + (M.uid = 1), + (M.prototype = { + register: function (a, b) { + var c = b || {}; + return ( + a.nodeType + ? (a[this.expando] = c) + : Object.defineProperty(a, this.expando, { + value: c, + writable: !0, + configurable: !0, + }), + a[this.expando] + ); + }, + cache: function (a) { + if (!L(a)) return {}; + var b = a[this.expando]; + return ( + b || + ((b = {}), + L(a) && + (a.nodeType + ? (a[this.expando] = b) + : Object.defineProperty(a, this.expando, { + value: b, + configurable: !0, + }))), + b + ); + }, + set: function (a, b, c) { + var d, + e = this.cache(a); + if ("string" == typeof b) e[b] = c; + else for (d in b) e[d] = b[d]; + return e; + }, + get: function (a, b) { + return void 0 === b + ? this.cache(a) + : a[this.expando] && a[this.expando][b]; + }, + access: function (a, b, c) { + var d; + return void 0 === b || + (b && "string" == typeof b && void 0 === c) + ? ((d = this.get(a, b)), + void 0 !== d ? d : this.get(a, n.camelCase(b))) + : (this.set(a, b, c), void 0 !== c ? c : b); + }, + remove: function (a, b) { + var c, + d, + e, + f = a[this.expando]; + if (void 0 !== f) { + if (void 0 === b) this.register(a); + else { + n.isArray(b) + ? (d = b.concat(b.map(n.camelCase))) + : ((e = n.camelCase(b)), + b in f + ? (d = [b, e]) + : ((d = e), + (d = d in f ? [d] : d.match(G) || []))), + (c = d.length); + while (c--) delete f[d[c]]; + } + (void 0 === b || n.isEmptyObject(f)) && + (a.nodeType + ? (a[this.expando] = void 0) + : delete a[this.expando]); + } + }, + hasData: function (a) { + var b = a[this.expando]; + return void 0 !== b && !n.isEmptyObject(b); + }, + }); + var N = new M(), + O = new M(), + P = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + Q = /[A-Z]/g; + function R(a, b, c) { + var d; + if (void 0 === c && 1 === a.nodeType) + if ( + ((d = "data-" + b.replace(Q, "-$&").toLowerCase()), + (c = a.getAttribute(d)), + "string" == typeof c) + ) { + try { + c = + "true" === c + ? !0 + : "false" === c + ? !1 + : "null" === c + ? null + : +c + "" === c + ? +c + : P.test(c) + ? n.parseJSON(c) + : c; + } catch (e) {} + O.set(a, b, c); + } else c = void 0; + return c; + } + n.extend({ + hasData: function (a) { + return O.hasData(a) || N.hasData(a); + }, + data: function (a, b, c) { + return O.access(a, b, c); + }, + removeData: function (a, b) { + O.remove(a, b); + }, + _data: function (a, b, c) { + return N.access(a, b, c); + }, + _removeData: function (a, b) { + N.remove(a, b); + }, + }), + n.fn.extend({ + data: function (a, b) { + var c, + d, + e, + f = this[0], + g = f && f.attributes; + if (void 0 === a) { + if ( + this.length && + ((e = O.get(f)), + 1 === f.nodeType && !N.get(f, "hasDataAttrs")) + ) { + c = g.length; + while (c--) + g[c] && + ((d = g[c].name), + 0 === d.indexOf("data-") && + ((d = n.camelCase(d.slice(5))), + R(f, d, e[d]))); + N.set(f, "hasDataAttrs", !0); + } + return e; + } + return "object" == typeof a + ? this.each(function () { + O.set(this, a); + }) + : K( + this, + function (b) { + var c, d; + if (f && void 0 === b) { + if ( + ((c = + O.get(f, a) || + O.get( + f, + a.replace(Q, "-$&").toLowerCase() + )), + void 0 !== c) + ) + return c; + if ( + ((d = n.camelCase(a)), + (c = O.get(f, d)), + void 0 !== c) + ) + return c; + if (((c = R(f, d, void 0)), void 0 !== c)) + return c; + } else + (d = n.camelCase(a)), + this.each(function () { + var c = O.get(this, d); + O.set(this, d, b), + a.indexOf("-") > -1 && + void 0 !== c && + O.set(this, a, b); + }); + }, + null, + b, + arguments.length > 1, + null, + !0 + ); + }, + removeData: function (a) { + return this.each(function () { + O.remove(this, a); + }); + }, + }), + n.extend({ + queue: function (a, b, c) { + var d; + return a + ? ((b = (b || "fx") + "queue"), + (d = N.get(a, b)), + c && + (!d || n.isArray(c) + ? (d = N.access(a, b, n.makeArray(c))) + : d.push(c)), + d || []) + : void 0; + }, + dequeue: function (a, b) { + b = b || "fx"; + var c = n.queue(a, b), + d = c.length, + e = c.shift(), + f = n._queueHooks(a, b), + g = function () { + n.dequeue(a, b); + }; + "inprogress" === e && ((e = c.shift()), d--), + e && + ("fx" === b && c.unshift("inprogress"), + delete f.stop, + e.call(a, g, f)), + !d && f && f.empty.fire(); + }, + _queueHooks: function (a, b) { + var c = b + "queueHooks"; + return ( + N.get(a, c) || + N.access(a, c, { + empty: n.Callbacks("once memory").add(function () { + N.remove(a, [b + "queue", c]); + }), + }) + ); + }, + }), + n.fn.extend({ + queue: function (a, b) { + var c = 2; + return ( + "string" != typeof a && ((b = a), (a = "fx"), c--), + arguments.length < c + ? n.queue(this[0], a) + : void 0 === b + ? this + : this.each(function () { + var c = n.queue(this, a, b); + n._queueHooks(this, a), + "fx" === a && + "inprogress" !== c[0] && + n.dequeue(this, a); + }) + ); + }, + dequeue: function (a) { + return this.each(function () { + n.dequeue(this, a); + }); + }, + clearQueue: function (a) { + return this.queue(a || "fx", []); + }, + promise: function (a, b) { + var c, + d = 1, + e = n.Deferred(), + f = this, + g = this.length, + h = function () { + --d || e.resolveWith(f, [f]); + }; + "string" != typeof a && ((b = a), (a = void 0)), + (a = a || "fx"); + while (g--) + (c = N.get(f[g], a + "queueHooks")), + c && c.empty && (d++, c.empty.add(h)); + return h(), e.promise(b); + }, + }); + var S = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + T = new RegExp("^(?:([+-])=|)(" + S + ")([a-z%]*)$", "i"), + U = ["Top", "Right", "Bottom", "Left"], + V = function (a, b) { + return ( + (a = b || a), + "none" === n.css(a, "display") || + !n.contains(a.ownerDocument, a) + ); + }; + function W(a, b, c, d) { + var e, + f = 1, + g = 20, + h = d + ? function () { + return d.cur(); + } + : function () { + return n.css(a, b, ""); + }, + i = h(), + j = (c && c[3]) || (n.cssNumber[b] ? "" : "px"), + k = (n.cssNumber[b] || ("px" !== j && +i)) && T.exec(n.css(a, b)); + if (k && k[3] !== j) { + (j = j || k[3]), (c = c || []), (k = +i || 1); + do (f = f || ".5"), (k /= f), n.style(a, b, k + j); + while (f !== (f = h() / i) && 1 !== f && --g); + } + return ( + c && + ((k = +k || +i || 0), + (e = c[1] ? k + (c[1] + 1) * c[2] : +c[2]), + d && ((d.unit = j), (d.start = k), (d.end = e))), + e + ); + } + var X = /^(?:checkbox|radio)$/i, + Y = /<([\w:-]+)/, + Z = /^$|\/(?:java|ecma)script/i, + $ = { + option: [1, ""], + thead: [1, "", "
"], + col: [2, "", "
"], + tr: [2, "", "
"], + td: [3, "", "
"], + _default: [0, "", ""], + }; + ($.optgroup = $.option), + ($.tbody = $.tfoot = $.colgroup = $.caption = $.thead), + ($.th = $.td); + function _(a, b) { + var c = + "undefined" != typeof a.getElementsByTagName + ? a.getElementsByTagName(b || "*") + : "undefined" != typeof a.querySelectorAll + ? a.querySelectorAll(b || "*") + : []; + return void 0 === b || (b && n.nodeName(a, b)) ? n.merge([a], c) : c; + } + function aa(a, b) { + for (var c = 0, d = a.length; d > c; c++) + N.set(a[c], "globalEval", !b || N.get(b[c], "globalEval")); + } + var ba = /<|&#?\w+;/; + function ca(a, b, c, d, e) { + for ( + var f, + g, + h, + i, + j, + k, + l = b.createDocumentFragment(), + m = [], + o = 0, + p = a.length; + p > o; + o++ + ) + if (((f = a[o]), f || 0 === f)) + if ("object" === n.type(f)) n.merge(m, f.nodeType ? [f] : f); + else if (ba.test(f)) { + (g = g || l.appendChild(b.createElement("div"))), + (h = (Y.exec(f) || ["", ""])[1].toLowerCase()), + (i = $[h] || $._default), + (g.innerHTML = i[1] + n.htmlPrefilter(f) + i[2]), + (k = i[0]); + while (k--) g = g.lastChild; + n.merge(m, g.childNodes), + (g = l.firstChild), + (g.textContent = ""); + } else m.push(b.createTextNode(f)); + (l.textContent = ""), (o = 0); + while ((f = m[o++])) + if (d && n.inArray(f, d) > -1) e && e.push(f); + else if ( + ((j = n.contains(f.ownerDocument, f)), + (g = _(l.appendChild(f), "script")), + j && aa(g), + c) + ) { + k = 0; + while ((f = g[k++])) Z.test(f.type || "") && c.push(f); + } + return l; + } + !(function () { + var a = d.createDocumentFragment(), + b = a.appendChild(d.createElement("div")), + c = d.createElement("input"); + c.setAttribute("type", "radio"), + c.setAttribute("checked", "checked"), + c.setAttribute("name", "t"), + b.appendChild(c), + (l.checkClone = b.cloneNode(!0).cloneNode(!0).lastChild.checked), + (b.innerHTML = ""), + (l.noCloneChecked = !!b.cloneNode(!0).lastChild.defaultValue); + })(); + var da = /^key/, + ea = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + fa = /^([^.]*)(?:\.(.+)|)/; + function ga() { + return !0; + } + function ha() { + return !1; + } + function ia() { + try { + return d.activeElement; + } catch (a) {} + } + function ja(a, b, c, d, e, f) { + var g, h; + if ("object" == typeof b) { + "string" != typeof c && ((d = d || c), (c = void 0)); + for (h in b) ja(a, h, c, d, b[h], f); + return a; + } + if ( + (null == d && null == e + ? ((e = c), (d = c = void 0)) + : null == e && + ("string" == typeof c + ? ((e = d), (d = void 0)) + : ((e = d), (d = c), (c = void 0))), + e === !1) + ) + e = ha; + else if (!e) return a; + return ( + 1 === f && + ((g = e), + (e = function (a) { + return n().off(a), g.apply(this, arguments); + }), + (e.guid = g.guid || (g.guid = n.guid++))), + a.each(function () { + n.event.add(this, b, e, d, c); + }) + ); + } + (n.event = { + global: {}, + add: function (a, b, c, d, e) { + var f, + g, + h, + i, + j, + k, + l, + m, + o, + p, + q, + r = N.get(a); + if (r) { + c.handler && ((f = c), (c = f.handler), (e = f.selector)), + c.guid || (c.guid = n.guid++), + (i = r.events) || (i = r.events = {}), + (g = r.handle) || + (g = r.handle = + function (b) { + return "undefined" != typeof n && + n.event.triggered !== b.type + ? n.event.dispatch.apply(a, arguments) + : void 0; + }), + (b = (b || "").match(G) || [""]), + (j = b.length); + while (j--) + (h = fa.exec(b[j]) || []), + (o = q = h[1]), + (p = (h[2] || "").split(".").sort()), + o && + ((l = n.event.special[o] || {}), + (o = (e ? l.delegateType : l.bindType) || o), + (l = n.event.special[o] || {}), + (k = n.extend( + { + type: o, + origType: q, + data: d, + handler: c, + guid: c.guid, + selector: e, + needsContext: + e && n.expr.match.needsContext.test(e), + namespace: p.join("."), + }, + f + )), + (m = i[o]) || + ((m = i[o] = []), + (m.delegateCount = 0), + (l.setup && l.setup.call(a, d, p, g) !== !1) || + (a.addEventListener && + a.addEventListener(o, g))), + l.add && + (l.add.call(a, k), + k.handler.guid || (k.handler.guid = c.guid)), + e ? m.splice(m.delegateCount++, 0, k) : m.push(k), + (n.event.global[o] = !0)); + } + }, + remove: function (a, b, c, d, e) { + var f, + g, + h, + i, + j, + k, + l, + m, + o, + p, + q, + r = N.hasData(a) && N.get(a); + if (r && (i = r.events)) { + (b = (b || "").match(G) || [""]), (j = b.length); + while (j--) + if ( + ((h = fa.exec(b[j]) || []), + (o = q = h[1]), + (p = (h[2] || "").split(".").sort()), + o) + ) { + (l = n.event.special[o] || {}), + (o = (d ? l.delegateType : l.bindType) || o), + (m = i[o] || []), + (h = + h[2] && + new RegExp( + "(^|\\.)" + + p.join("\\.(?:.*\\.|)") + + "(\\.|$)" + )), + (g = f = m.length); + while (f--) + (k = m[f]), + (!e && q !== k.origType) || + (c && c.guid !== k.guid) || + (h && !h.test(k.namespace)) || + (d && + d !== k.selector && + ("**" !== d || !k.selector)) || + (m.splice(f, 1), + k.selector && m.delegateCount--, + l.remove && l.remove.call(a, k)); + g && + !m.length && + ((l.teardown && + l.teardown.call(a, p, r.handle) !== !1) || + n.removeEvent(a, o, r.handle), + delete i[o]); + } else for (o in i) n.event.remove(a, o + b[j], c, d, !0); + n.isEmptyObject(i) && N.remove(a, "handle events"); + } + }, + dispatch: function (a) { + a = n.event.fix(a); + var b, + c, + d, + f, + g, + h = [], + i = e.call(arguments), + j = (N.get(this, "events") || {})[a.type] || [], + k = n.event.special[a.type] || {}; + if ( + ((i[0] = a), + (a.delegateTarget = this), + !k.preDispatch || k.preDispatch.call(this, a) !== !1) + ) { + (h = n.event.handlers.call(this, a, j)), (b = 0); + while ((f = h[b++]) && !a.isPropagationStopped()) { + (a.currentTarget = f.elem), (c = 0); + while ( + (g = f.handlers[c++]) && + !a.isImmediatePropagationStopped() + ) + (a.rnamespace && !a.rnamespace.test(g.namespace)) || + ((a.handleObj = g), + (a.data = g.data), + (d = ( + (n.event.special[g.origType] || {}).handle || + g.handler + ).apply(f.elem, i)), + void 0 !== d && + (a.result = d) === !1 && + (a.preventDefault(), a.stopPropagation())); + } + return k.postDispatch && k.postDispatch.call(this, a), a.result; + } + }, + handlers: function (a, b) { + var c, + d, + e, + f, + g = [], + h = b.delegateCount, + i = a.target; + if ( + h && + i.nodeType && + ("click" !== a.type || isNaN(a.button) || a.button < 1) + ) + for (; i !== this; i = i.parentNode || this) + if ( + 1 === i.nodeType && + (i.disabled !== !0 || "click" !== a.type) + ) { + for (d = [], c = 0; h > c; c++) + (f = b[c]), + (e = f.selector + " "), + void 0 === d[e] && + (d[e] = f.needsContext + ? n(e, this).index(i) > -1 + : n.find(e, this, null, [i]).length), + d[e] && d.push(f); + d.length && g.push({ elem: i, handlers: d }); + } + return ( + h < b.length && g.push({ elem: this, handlers: b.slice(h) }), g + ); + }, + props: "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split( + " " + ), + fixHooks: {}, + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function (a, b) { + return ( + null == a.which && + (a.which = null != b.charCode ? b.charCode : b.keyCode), + a + ); + }, + }, + mouseHooks: { + props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split( + " " + ), + filter: function (a, b) { + var c, + e, + f, + g = b.button; + return ( + null == a.pageX && + null != b.clientX && + ((c = a.target.ownerDocument || d), + (e = c.documentElement), + (f = c.body), + (a.pageX = + b.clientX + + ((e && e.scrollLeft) || (f && f.scrollLeft) || 0) - + ((e && e.clientLeft) || (f && f.clientLeft) || 0)), + (a.pageY = + b.clientY + + ((e && e.scrollTop) || (f && f.scrollTop) || 0) - + ((e && e.clientTop) || (f && f.clientTop) || 0))), + a.which || + void 0 === g || + (a.which = 1 & g ? 1 : 2 & g ? 3 : 4 & g ? 2 : 0), + a + ); + }, + }, + fix: function (a) { + if (a[n.expando]) return a; + var b, + c, + e, + f = a.type, + g = a, + h = this.fixHooks[f]; + h || + (this.fixHooks[f] = h = + ea.test(f) + ? this.mouseHooks + : da.test(f) + ? this.keyHooks + : {}), + (e = h.props ? this.props.concat(h.props) : this.props), + (a = new n.Event(g)), + (b = e.length); + while (b--) (c = e[b]), (a[c] = g[c]); + return ( + a.target || (a.target = d), + 3 === a.target.nodeType && (a.target = a.target.parentNode), + h.filter ? h.filter(a, g) : a + ); + }, + special: { + load: { noBubble: !0 }, + focus: { + trigger: function () { + return this !== ia() && this.focus + ? (this.focus(), !1) + : void 0; + }, + delegateType: "focusin", + }, + blur: { + trigger: function () { + return this === ia() && this.blur + ? (this.blur(), !1) + : void 0; + }, + delegateType: "focusout", + }, + click: { + trigger: function () { + return "checkbox" === this.type && + this.click && + n.nodeName(this, "input") + ? (this.click(), !1) + : void 0; + }, + _default: function (a) { + return n.nodeName(a.target, "a"); + }, + }, + beforeunload: { + postDispatch: function (a) { + void 0 !== a.result && + a.originalEvent && + (a.originalEvent.returnValue = a.result); + }, + }, + }, + }), + (n.removeEvent = function (a, b, c) { + a.removeEventListener && a.removeEventListener(b, c); + }), + (n.Event = function (a, b) { + return this instanceof n.Event + ? (a && a.type + ? ((this.originalEvent = a), + (this.type = a.type), + (this.isDefaultPrevented = + a.defaultPrevented || + (void 0 === a.defaultPrevented && + a.returnValue === !1) + ? ga + : ha)) + : (this.type = a), + b && n.extend(this, b), + (this.timeStamp = (a && a.timeStamp) || n.now()), + void (this[n.expando] = !0)) + : new n.Event(a, b); + }), + (n.Event.prototype = { + constructor: n.Event, + isDefaultPrevented: ha, + isPropagationStopped: ha, + isImmediatePropagationStopped: ha, + preventDefault: function () { + var a = this.originalEvent; + (this.isDefaultPrevented = ga), a && a.preventDefault(); + }, + stopPropagation: function () { + var a = this.originalEvent; + (this.isPropagationStopped = ga), a && a.stopPropagation(); + }, + stopImmediatePropagation: function () { + var a = this.originalEvent; + (this.isImmediatePropagationStopped = ga), + a && a.stopImmediatePropagation(), + this.stopPropagation(); + }, + }), + n.each( + { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout", + }, + function (a, b) { + n.event.special[a] = { + delegateType: b, + bindType: b, + handle: function (a) { + var c, + d = this, + e = a.relatedTarget, + f = a.handleObj; + return ( + (e && (e === d || n.contains(d, e))) || + ((a.type = f.origType), + (c = f.handler.apply(this, arguments)), + (a.type = b)), + c + ); + }, + }; + } + ), + n.fn.extend({ + on: function (a, b, c, d) { + return ja(this, a, b, c, d); + }, + one: function (a, b, c, d) { + return ja(this, a, b, c, d, 1); + }, + off: function (a, b, c) { + var d, e; + if (a && a.preventDefault && a.handleObj) + return ( + (d = a.handleObj), + n(a.delegateTarget).off( + d.namespace + ? d.origType + "." + d.namespace + : d.origType, + d.selector, + d.handler + ), + this + ); + if ("object" == typeof a) { + for (e in a) this.off(e, b, a[e]); + return this; + } + return ( + (b !== !1 && "function" != typeof b) || + ((c = b), (b = void 0)), + c === !1 && (c = ha), + this.each(function () { + n.event.remove(this, a, c, b); + }) + ); + }, + }); + var ka = + /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + la = /\s*$/g; + function pa(a, b) { + return n.nodeName(a, "table") && + n.nodeName(11 !== b.nodeType ? b : b.firstChild, "tr") + ? a.getElementsByTagName("tbody")[0] || + a.appendChild(a.ownerDocument.createElement("tbody")) + : a; + } + function qa(a) { + return (a.type = (null !== a.getAttribute("type")) + "/" + a.type), a; + } + function ra(a) { + var b = na.exec(a.type); + return b ? (a.type = b[1]) : a.removeAttribute("type"), a; + } + function sa(a, b) { + var c, d, e, f, g, h, i, j; + if (1 === b.nodeType) { + if ( + N.hasData(a) && + ((f = N.access(a)), (g = N.set(b, f)), (j = f.events)) + ) { + delete g.handle, (g.events = {}); + for (e in j) + for (c = 0, d = j[e].length; d > c; c++) + n.event.add(b, e, j[e][c]); + } + O.hasData(a) && + ((h = O.access(a)), (i = n.extend({}, h)), O.set(b, i)); + } + } + function ta(a, b) { + var c = b.nodeName.toLowerCase(); + "input" === c && X.test(a.type) + ? (b.checked = a.checked) + : ("input" !== c && "textarea" !== c) || + (b.defaultValue = a.defaultValue); + } + function ua(a, b, c, d) { + b = f.apply([], b); + var e, + g, + h, + i, + j, + k, + m = 0, + o = a.length, + p = o - 1, + q = b[0], + r = n.isFunction(q); + if (r || (o > 1 && "string" == typeof q && !l.checkClone && ma.test(q))) + return a.each(function (e) { + var f = a.eq(e); + r && (b[0] = q.call(this, e, f.html())), ua(f, b, c, d); + }); + if ( + o && + ((e = ca(b, a[0].ownerDocument, !1, a, d)), + (g = e.firstChild), + 1 === e.childNodes.length && (e = g), + g || d) + ) { + for (h = n.map(_(e, "script"), qa), i = h.length; o > m; m++) + (j = e), + m !== p && + ((j = n.clone(j, !0, !0)), + i && n.merge(h, _(j, "script"))), + c.call(a[m], j, m); + if (i) + for ( + k = h[h.length - 1].ownerDocument, n.map(h, ra), m = 0; + i > m; + m++ + ) + (j = h[m]), + Z.test(j.type || "") && + !N.access(j, "globalEval") && + n.contains(k, j) && + (j.src + ? n._evalUrl && n._evalUrl(j.src) + : n.globalEval(j.textContent.replace(oa, ""))); + } + return a; + } + function va(a, b, c) { + for (var d, e = b ? n.filter(b, a) : a, f = 0; null != (d = e[f]); f++) + c || 1 !== d.nodeType || n.cleanData(_(d)), + d.parentNode && + (c && n.contains(d.ownerDocument, d) && aa(_(d, "script")), + d.parentNode.removeChild(d)); + return a; + } + n.extend({ + htmlPrefilter: function (a) { + return a.replace(ka, "<$1>"); + }, + clone: function (a, b, c) { + var d, + e, + f, + g, + h = a.cloneNode(!0), + i = n.contains(a.ownerDocument, a); + if ( + !( + l.noCloneChecked || + (1 !== a.nodeType && 11 !== a.nodeType) || + n.isXMLDoc(a) + ) + ) + for (g = _(h), f = _(a), d = 0, e = f.length; e > d; d++) + ta(f[d], g[d]); + if (b) + if (c) + for ( + f = f || _(a), g = g || _(h), d = 0, e = f.length; + e > d; + d++ + ) + sa(f[d], g[d]); + else sa(a, h); + return ( + (g = _(h, "script")), + g.length > 0 && aa(g, !i && _(a, "script")), + h + ); + }, + cleanData: function (a) { + for ( + var b, c, d, e = n.event.special, f = 0; + void 0 !== (c = a[f]); + f++ + ) + if (L(c)) { + if ((b = c[N.expando])) { + if (b.events) + for (d in b.events) + e[d] + ? n.event.remove(c, d) + : n.removeEvent(c, d, b.handle); + c[N.expando] = void 0; + } + c[O.expando] && (c[O.expando] = void 0); + } + }, + }), + n.fn.extend({ + domManip: ua, + detach: function (a) { + return va(this, a, !0); + }, + remove: function (a) { + return va(this, a); + }, + text: function (a) { + return K( + this, + function (a) { + return void 0 === a + ? n.text(this) + : this.empty().each(function () { + (1 !== this.nodeType && + 11 !== this.nodeType && + 9 !== this.nodeType) || + (this.textContent = a); + }); + }, + null, + a, + arguments.length + ); + }, + append: function () { + return ua(this, arguments, function (a) { + if ( + 1 === this.nodeType || + 11 === this.nodeType || + 9 === this.nodeType + ) { + var b = pa(this, a); + b.appendChild(a); + } + }); + }, + prepend: function () { + return ua(this, arguments, function (a) { + if ( + 1 === this.nodeType || + 11 === this.nodeType || + 9 === this.nodeType + ) { + var b = pa(this, a); + b.insertBefore(a, b.firstChild); + } + }); + }, + before: function () { + return ua(this, arguments, function (a) { + this.parentNode && this.parentNode.insertBefore(a, this); + }); + }, + after: function () { + return ua(this, arguments, function (a) { + this.parentNode && + this.parentNode.insertBefore(a, this.nextSibling); + }); + }, + empty: function () { + for (var a, b = 0; null != (a = this[b]); b++) + 1 === a.nodeType && + (n.cleanData(_(a, !1)), (a.textContent = "")); + return this; + }, + clone: function (a, b) { + return ( + (a = null == a ? !1 : a), + (b = null == b ? a : b), + this.map(function () { + return n.clone(this, a, b); + }) + ); + }, + html: function (a) { + return K( + this, + function (a) { + var b = this[0] || {}, + c = 0, + d = this.length; + if (void 0 === a && 1 === b.nodeType) + return b.innerHTML; + if ( + "string" == typeof a && + !la.test(a) && + !$[(Y.exec(a) || ["", ""])[1].toLowerCase()] + ) { + a = n.htmlPrefilter(a); + try { + for (; d > c; c++) + (b = this[c] || {}), + 1 === b.nodeType && + (n.cleanData(_(b, !1)), + (b.innerHTML = a)); + b = 0; + } catch (e) {} + } + b && this.empty().append(a); + }, + null, + a, + arguments.length + ); + }, + replaceWith: function () { + var a = []; + return ua( + this, + arguments, + function (b) { + var c = this.parentNode; + n.inArray(this, a) < 0 && + (n.cleanData(_(this)), + c && c.replaceChild(b, this)); + }, + a + ); + }, + }), + n.each( + { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith", + }, + function (a, b) { + n.fn[a] = function (a) { + for ( + var c, d = [], e = n(a), f = e.length - 1, h = 0; + f >= h; + h++ + ) + (c = h === f ? this : this.clone(!0)), + n(e[h])[b](c), + g.apply(d, c.get()); + return this.pushStack(d); + }; + } + ); + var wa, + xa = { HTML: "block", BODY: "block" }; + function ya(a, b) { + var c = n(b.createElement(a)).appendTo(b.body), + d = n.css(c[0], "display"); + return c.detach(), d; + } + function za(a) { + var b = d, + c = xa[a]; + return ( + c || + ((c = ya(a, b)), + ("none" !== c && c) || + ((wa = ( + wa || + n("