diff --git a/app/Http/Controllers/AbsensiController.php b/app/Http/Controllers/AbsensiController.php
new file mode 100644
index 00000000..1a6a83cd
--- /dev/null
+++ b/app/Http/Controllers/AbsensiController.php
@@ -0,0 +1,117 @@
+input('search');
+
+ // Query dasar
+ $query = Absensi::query();
+
+ // Jika ada pencarian, filter hanya berdasarkan id_absensi
+ if (!empty($search)) {
+ $query->where('id_absensi', 'like', "%{$search}%");
+ }
+
+ // Urutkan berdasarkan tanggal terbaru dan paginasi
+ // Tambahkan withQueryString() agar pagination tetap membawa parameter pencarian
+ $absensis = $query->orderBy('tanggal', 'desc')
+ ->paginate(10)
+ ->withQueryString();
+
+ // Kirim data ke view
+ return view('absensi.index', compact('absensis', 'search'));
+ }
+
+ /**
+ * Form tambah data absensi
+ */
+ public function create()
+ {
+ return view('absensi.create');
+ }
+
+ /**
+ * Simpan data absensi baru
+ */
+ public function store(Request $request)
+ {
+ // Validasi input
+ $validated = $request->validate([
+ 'id_absensi' => 'required|string|unique:absensis,id_absensi',
+ 'pegawai_id' => 'required|integer',
+ 'tanggal' => 'required|date',
+ 'jam_masuk' => 'nullable|date_format:H:i',
+ 'jam_keluar' => 'nullable|date_format:H:i',
+ 'shift' => 'nullable|string',
+ 'status' => 'required|string',
+ ]);
+
+ // Simpan data yang tervalidasi
+ Absensi::create($validated);
+
+ return redirect()->route('absensi.index')
+ ->with('success', 'Data absensi berhasil ditambahkan.');
+ }
+
+ /**
+ * Tampilkan detail data absensi
+ */
+ public function show($id)
+ {
+ $absensi = Absensi::findOrFail($id);
+ return view('absensi.show', compact('absensi'));
+ }
+
+ /**
+ * Form ubah data absensi
+ */
+ public function edit($id)
+ {
+ $absensi = Absensi::findOrFail($id);
+ return view('absensi.edit', compact('absensi'));
+ }
+
+ /**
+ * Update data absensi
+ */
+ public function update(Request $request, $id)
+ {
+ $validated = $request->validate([
+ 'id_absensi' => "required|string|unique:absensis,id_absensi,{$id}",
+ 'pegawai_id' => 'required|integer',
+ 'tanggal' => 'required|date',
+ 'jam_masuk' => 'nullable|date_format:H:i',
+ 'jam_keluar' => 'nullable|date_format:H:i',
+ 'shift' => 'nullable|string',
+ 'status' => 'required|string',
+ ]);
+
+ $absensi = Absensi::findOrFail($id);
+ $absensi->update($validated);
+
+ return redirect()->route('absensi.index')
+ ->with('success', 'Data absensi berhasil diperbarui.');
+ }
+
+ /**
+ * Hapus data absensi
+ */
+ public function destroy($id)
+ {
+ Absensi::destroy($id);
+
+ return redirect()->route('absensi.index')
+ ->with('success', 'Data absensi berhasil dihapus.');
+ }
+}
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index 32a88f7c..116bbd89 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -4,6 +4,8 @@
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
@@ -12,23 +14,22 @@ class LoginController extends Controller
| Login Controller
|--------------------------------------------------------------------------
|
- | This controller handles authenticating users for the application and
- | redirecting them to your home screen. The controller uses a trait
- | to conveniently provide its functionality to your applications.
+ | Controller ini menangani proses autentikasi pengguna dan mengarahkan
+ | mereka ke halaman admin setelah berhasil login.
|
*/
use AuthenticatesUsers;
/**
- * Where to redirect users after login.
+ * Ke mana pengguna diarahkan setelah login.
*
* @var string
*/
protected $redirectTo = '/admin';
/**
- * Create a new controller instance.
+ * Membuat instance controller baru.
*
* @return void
*/
@@ -38,15 +39,58 @@ public function __construct()
$this->middleware('auth')->only('logout');
}
+ /**
+ * Menampilkan form login kustom.
+ *
+ * @return \Illuminate\View\View
+ */
+ public function showLoginForm()
+ {
+ return view('auth.login');
+ }
/**
- * Get the post-login redirect path.
+ * Menangani proses login.
+ * Jika gagal, kirim pesan error kustom ke halaman login.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Http\JsonResponse
+ */
+ public function login(Request $request)
+ {
+ // Validasi sederhana (jangan ubah logika utamanya)
+ $request->validate([
+ 'email' => 'required|string',
+ 'password' => 'required|string',
+ ]);
+
+ $credentials = $request->only('email', 'password');
+
+ // Coba login
+ if (Auth::attempt($credentials, $request->filled('remember'))) {
+ $request->session()->regenerate();
+ return redirect()->intended($this->redirectPath());
+ }
+
+ // Jika gagal, kembalikan ke login dengan error seperti di desain
+ return back()
+ ->withInput($request->only('email'))
+ ->with('error', 'Username & Password are incorrect');
+ }
+
+ /**
+ * Mengembalikan path redirect setelah login berhasil.
+ *
+ * @return string
*/
public function redirectPath(): string
{
if (method_exists($this, 'redirectTo')) {
return $this->redirectTo();
}
- return property_exists($this, 'redirectTo') ? $this->redirectTo : '/admin';
+
+ return property_exists($this, 'redirectTo')
+ ? $this->redirectTo
+ : '/admin';
}
}
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 975ac017..f46c7d96 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -3,73 +3,43 @@
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
-use App\Providers\RouteServiceProvider;
use App\Models\User;
-use Illuminate\Foundation\Auth\RegistersUsers;
+use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
{
- /*
- |--------------------------------------------------------------------------
- | Register Controller
- |--------------------------------------------------------------------------
- |
- | This controller handles the registration of new users as well as their
- | validation and creation. By default this controller uses a trait to
- | provide this functionality without requiring any additional code.
- |
- */
-
- use RegistersUsers;
-
- /**
- * Where to redirect users after registration.
- *
- * @var string
- */
- protected $redirectTo = RouteServiceProvider::HOME;
-
/**
- * Create a new controller instance.
- *
- * @return void
+ * Menampilkan form registrasi.
*/
- public function __construct()
+ public function showRegistrationForm()
{
- $this->middleware('guest');
+ return view('auth.register');
}
/**
- * Get a validator for an incoming registration request.
- *
- * @param array $data
- * @return \Illuminate\Contracts\Validation\Validator
+ * Menangani pendaftaran pengguna baru.
*/
- protected function validator(array $data)
+ public function register(Request $request)
{
- return Validator::make($data, [
- 'first_name' => ['required', 'string', 'max:255'],
- 'last_name' => ['required', 'string', 'max:255'],
- 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
- 'password' => ['required', 'string', 'min:8', 'confirmed'],
+ // Validasi input
+ $request->validate([
+ 'first_name' => 'required|string|max:255',
+ 'last_name' => 'required|string|max:255',
+ 'email' => 'required|string|email|max:255|unique:users',
+ 'password' => 'required|string|min:8|confirmed',
]);
- }
- /**
- * Create a new user instance after a valid registration.
- *
- * @param array $data
- * @return \App\User
- */
- protected function create(array $data)
- {
- return User::create([
- 'first_name' => $data['first_name'],
- 'last_name' => $data['last_name'],
- 'email' => $data['email'],
- 'password' => Hash::make($data['password']),
+ // Buat user baru
+ User::create([
+ 'first_name' => $request->first_name,
+ 'last_name' => $request->last_name,
+ 'email' => $request->email,
+ 'password' => Hash::make($request->password),
]);
+
+ // Redirect ke halaman login dengan pesan sukses
+ return redirect()->route('login')->with('success', 'Registrasi berhasil! Silakan login.');
}
-}
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php
index c648a487..4400d295 100644
--- a/app/Http/Controllers/HomeController.php
+++ b/app/Http/Controllers/HomeController.php
@@ -2,79 +2,76 @@
namespace App\Http\Controllers;
-use App\Models\Order;
-use App\Models\Customer;
-use App\Models\Product;
use Illuminate\Support\Facades\DB;
class HomeController extends Controller
{
- /**
- * Create a new controller instance.
- *
- * @return void
- */
public function __construct()
{
$this->middleware('auth');
}
- /**
- * Show the application dashboard.
- *
- * @return \Illuminate\Contracts\Support\Renderable
- */
public function index()
{
- $orders = Order::with(['items', 'payments'])->get();
- $customers_count = Customer::count();
+ // Total pendapatan
+ $income = DB::table('transaksis')->sum('Total_Harga');
- $low_stock_products = Product::where('quantity', '<', 10)->get();
+ // Pengeluaran (manual)
+ $outcome = 0;
- $bestSellingProducts = DB::table('products')
- ->select('products.*', DB::raw('SUM(order_items.quantity) AS total_sold'))
- ->join('order_items', 'order_items.product_id', '=', 'products.id')
- ->join('orders', 'orders.id', '=', 'order_items.order_id')
- ->groupBy('products.id')
- ->havingRaw('SUM(order_items.quantity) > 10')
- ->get();
+ // Jumlah transaksi
+ $transactions = DB::table('transaksis')->count();
- $currentMonthBestSelling = DB::table('products')
- ->select('products.*', DB::raw('SUM(order_items.quantity) AS total_sold'))
- ->join('order_items', 'order_items.product_id', '=', 'products.id')
- ->join('orders', 'orders.id', '=', 'order_items.order_id')
- ->whereYear('orders.created_at', date('Y'))
- ->whereMonth('orders.created_at', date('m'))
- ->groupBy('products.id')
- ->havingRaw('SUM(order_items.quantity) > 500') // Best-selling threshold for the current month
- ->get();
+ // Grafik pendapatan per tanggal
+ $chartData = DB::table('transaksis')
+ ->select(
+ DB::raw("DATE_FORMAT(Tanggal_Transaksi, '%d-%m-%Y') as tanggal"),
+ DB::raw('SUM(Total_Harga) as total')
+ )
+ ->whereNotNull('Tanggal_Transaksi')
+ ->groupBy('tanggal')
+ ->orderBy('tanggal', 'asc')
+ ->pluck('total', 'tanggal')
+ ->toArray();
+
+ unset($chartData[""]); // buang key kosong
- $pastSixMonthsHotProducts = DB::table('products')
- ->select('products.*', DB::raw('SUM(order_items.quantity) AS total_sold'))
- ->join('order_items', 'order_items.product_id', '=', 'products.id')
- ->join('orders', 'orders.id', '=', 'order_items.order_id')
- ->where('orders.created_at', '>=', now()->subMonths(6)) // Filter for the past 6 months
- ->groupBy('products.id')
- ->havingRaw('SUM(order_items.quantity) > 1000') // Hot product threshold for past 6 months
- ->get();
+ // Grafik transaksi per pegawai
+ $pegawaiTransaksi = DB::table('transaksis')
+ ->select('Nama_Pegawai', DB::raw('COUNT(*) as total_transaksi'))
+ ->groupBy('Nama_Pegawai')
+ ->orderBy('total_transaksi', 'desc')
+ ->pluck('total_transaksi', 'Nama_Pegawai')
+ ->toArray();
+ // 🔹 PRODUK TERAKHIR TERJUAL
+ // Cari berdasarkan Tanggal_Transaksi terbaru
+ $lastProduct = DB::table('transaksis')
+ ->whereNotNull('Nama_Produk')
+ ->orderBy('Tanggal_Transaksi', 'desc')
+ ->value('Nama_Produk');
+
+
+ // 🔹 TOP PRODUK PALING LARIS
+ $topProducts = DB::table('transaksis')
+ ->select('Nama_Produk', DB::raw('COUNT(*) as total'))
+ ->whereNotNull('Nama_Produk')
+ ->groupBy('Nama_Produk')
+ ->orderByDesc('total')
+ ->limit(5)
+ ->get();
return view('home', [
- 'orders_count' => $orders->count(),
- 'income' => $orders->map(function ($i) {
- return $i->receivedAmount() > $i->total() ? $i->total() : $i->receivedAmount();
- })->sum(),
- 'income_today' => $orders->where('created_at', '>=', date('Y-m-d') . ' 00:00:00')->map(function ($i) {
- return $i->receivedAmount() > $i->total() ? $i->total() : $i->receivedAmount();
- })->sum(),
- 'customers_count' => $customers_count,
- 'low_stock_products' => $low_stock_products,
- 'best_selling_products' => $bestSellingProducts,
- 'current_month_products' => $currentMonthBestSelling,
- 'past_months_products' => $pastSixMonthsHotProducts,
+ 'income' => $income,
+ 'outcome' => $outcome,
+ 'transactions' => $transactions,
+ 'chartData' => $chartData,
+ 'pegawaiTransaksi' => $pegawaiTransaksi,
+ 'lastProduct' => $lastProduct ?? '-',
+ 'topProducts' => $topProducts,
]);
}
}
diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php
new file mode 100644
index 00000000..ef7fe4cd
--- /dev/null
+++ b/app/Http/Controllers/LaporanController.php
@@ -0,0 +1,243 @@
+has('search') && $request->search !== '') {
+ $query->where(function ($q) use ($request) {
+ $q->where('nama_pegawai', 'like', '%' . $request->search . '%')
+ ->orWhere('id_laporan', 'like', '%' . $request->search . '%');
+ });
+ }
+
+ if ($request->filled('month')) {
+ $query->whereMonth('tanggal_cetak', $request->month);
+ }
+
+ if ($request->filled('year')) {
+ $query->whereYear('tanggal_cetak', $request->year);
+ }
+
+ $laporans = $query->orderBy('tanggal_cetak', 'desc')->paginate(10);
+ $histories = ImportCSVHistory::orderBy('imported_at', 'desc')->limit(20)->get();
+
+ return view('laporan.index', compact('laporans', 'histories'));
+ }
+
+
+
+ // =============================================================
+ // GENERATE LAPORAN BULANAN DARI TABEL TRANSAKSI
+ // =============================================================
+ public function generateFromTransaksi()
+ {
+ $periodes = Transaksi::selectRaw('YEAR(Tanggal_Transaksi) as tahun, MONTH(Tanggal_Transaksi) as bulan')
+ ->groupBy('tahun', 'bulan')
+ ->orderBy('tahun')
+ ->orderBy('bulan')
+ ->get();
+
+ foreach ($periodes as $periode) {
+ $bulan = $periode->bulan;
+ $tahun = $periode->tahun;
+
+ // Hapus laporan duplikat untuk periode ini
+ Laporan::whereMonth('tanggal_cetak', $bulan)
+ ->whereYear('tanggal_cetak', $tahun)
+ ->delete();
+
+ // Ambil transaksi bulan tersebut
+ $transaksis = Transaksi::whereMonth('Tanggal_Transaksi', $bulan)
+ ->whereYear('Tanggal_Transaksi', $tahun)
+ ->get();
+
+ $grouped = $transaksis->groupBy('Nama_Pegawai');
+
+ foreach ($grouped as $namaPegawai => $items) {
+
+ // Hitung total bonus 10%
+ $totalBonus = $items->sum(fn($t) => $t->Total_Harga * 0.10);
+
+ // Ambil tanggal transaksi terakhir
+ $tanggalTerakhir = $items->sortByDesc('Tanggal_Transaksi')->first()->Tanggal_Transaksi;
+
+ Laporan::create([
+ 'nama_pegawai' => $namaPegawai,
+ 'tanggal_cetak' => $tanggalTerakhir,
+ 'total_gaji' => $totalBonus,
+ ]);
+ }
+ }
+
+ return back()->with('success', 'Laporan berhasil digenerate dari data transaksi!');
+ }
+
+
+
+ // =============================================================
+ // IMPORT CSV (FORMAT KHUSUS SESUAI DATA KAMU)
+ // =============================================================
+ public function importCSV(Request $request)
+ {
+ $request->validate([
+ 'file' => 'required|mimes:csv,txt|max:4096',
+ ]);
+
+ $file = $request->file('file');
+ $path = $file->getRealPath();
+ $count = 0;
+
+ if (($handle = fopen($path, 'r')) !== false) {
+
+ // Baca header CSV
+ $header = fgets($handle);
+
+ while (($line = fgets($handle)) !== false) {
+
+ $line = trim($line);
+ $line = trim($line, "\"");
+
+ $data = explode(',', $line);
+
+ // Skip jika data tidak lengkap
+ if (count($data) < 7) continue;
+
+ // Konversi tanggal
+ try {
+ $tanggal = Carbon::createFromFormat('d/m/Y', trim($data[6]))->format('Y-m-d');
+ } catch (\Exception $e) {
+ $tanggal = null;
+ }
+
+ // Simpan transaksi
+ Transaksi::create([
+ 'Nama_Pegawai' => $data[2] ?? null,
+ 'Nama_Produk' => $data[3] ?? null,
+ 'Total_Pesanan' => (int)($data[4] ?? 0),
+ 'Harga_Satuan' => (int)($data[5] ?? 0),
+ 'Tanggal_Transaksi' => $tanggal,
+ 'Total_Harga' => ((int)($data[4] ?? 0)) * ((int)($data[5] ?? 0)),
+ ]);
+
+ $count++;
+ }
+
+ fclose($handle);
+ }
+
+ ImportCSVHistory::create([
+ 'file_name' => $file->getClientOriginalName(),
+ 'row_count' => $count,
+ 'imported_at' => now(),
+ ]);
+
+ return back()->with('success', "Import berhasil! Total $count data tersimpan.");
+ }
+
+
+
+ // =============================================================
+ // EXPORT EXCEL MANUAL
+ // =============================================================
+ public function exportExcelManual()
+ {
+ $laporans = Laporan::all();
+
+ header("Content-Type: application/vnd.ms-excel");
+ header("Content-Disposition: attachment; filename=laporan.xls");
+ header("Pragma: no-cache");
+ header("Expires: 0");
+
+ echo "
+
+ | No |
+ Nama Pegawai |
+ Tanggal Cetak |
+ Total Gaji (Bonus 10%) |
+
";
+
+ $no = 1;
+ foreach ($laporans as $laporan) {
+ echo "
+
+ | " . $no++ . " |
+ " . ($laporan->nama_pegawai ?? '-') . " |
+ " . ($laporan->tanggal_cetak ?? '-') . " |
+ Rp" . number_format($laporan->total_gaji ?? 0, 0, ',', '.') . " |
+
";
+ }
+
+ echo "
";
+ exit;
+ }
+
+
+
+ // =============================================================
+ // DELETE LAPORAN
+ // =============================================================
+ public function destroy($id)
+ {
+ $laporan = Laporan::findOrFail($id);
+ $laporan->delete();
+
+ return redirect()->route('laporan.index')->with('success', 'Laporan berhasil dihapus.');
+ }
+
+
+
+ // =============================================================
+ // SHOW DETAIL LAPORAN
+ // =============================================================
+ public function show($id)
+ {
+ $laporan = Laporan::findOrFail($id);
+ return view('laporan.show', compact('laporan'));
+ }
+
+
+
+ // =============================================================
+ // EDIT LAPORAN
+ // =============================================================
+ public function edit($id)
+ {
+ $laporan = Laporan::findOrFail($id);
+ return view('laporan.edit', compact('laporan'));
+ }
+
+
+
+ // =============================================================
+ // UPDATE LAPORAN
+ // =============================================================
+ public function update(Request $request, $id)
+ {
+ $request->validate([
+ 'nama_pegawai' => 'nullable|string|max:255',
+ 'tanggal_cetak' => 'nullable|date',
+ 'total_gaji' => 'nullable|numeric',
+ ]);
+
+ $laporan = Laporan::findOrFail($id);
+
+ $laporan->update([
+ 'nama_pegawai' => $request->nama_pegawai,
+ 'tanggal_cetak' => $request->tanggal_cetak,
+ 'total_gaji' => $request->total_gaji,
+ ]);
+
+ return redirect()->route('laporan.index')->with('success', 'Laporan berhasil diperbarui!');
+ }
+}
diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php
index 377c8f51..e972bbbd 100644
--- a/app/Http/Controllers/ProductController.php
+++ b/app/Http/Controllers/ProductController.php
@@ -6,16 +6,12 @@
use App\Http\Requests\ProductUpdateRequest;
use App\Http\Resources\ProductResource;
use App\Models\Product;
+use App\Models\ImportCSVHistory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class ProductController extends Controller
{
- /**
- * Display a listing of the resource.
- *
- * @return \Illuminate\Http\Response
- */
public function index(Request $request)
{
$products = new Product();
@@ -26,25 +22,18 @@ public function index(Request $request)
if (request()->wantsJson()) {
return ProductResource::collection($products);
}
- return view('products.index')->with('products', $products);
+
+ // ✅ kirim history ke view jika halaman laporan memakai index
+ $importHistory = ImportCSVHistory::orderBy('imported_at', 'desc')->get();
+
+ return view('products.index', compact('products', 'importHistory'));
}
- /**
- * Show the form for creating a new resource.
- *
- * @return \Illuminate\Http\Response
- */
public function create()
{
return view('products.create');
}
- /**
- * Store a newly created resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\Response
- */
public function store(ProductStoreRequest $request)
{
$image_path = '';
@@ -69,35 +58,16 @@ public function store(ProductStoreRequest $request)
return redirect()->route('products.index')->with('success', __('product.success_creating'));
}
- /**
- * Display the specified resource.
- *
- * @param \App\Models\Product $product
- * @return \Illuminate\Http\Response
- */
public function show(Product $product)
{
//
}
- /**
- * Show the form for editing the specified resource.
- *
- * @param \App\Models\Product $product
- * @return \Illuminate\Http\Response
- */
public function edit(Product $product)
{
return view('products.edit')->with('product', $product);
}
- /**
- * Update the specified resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @param \App\Models\Product $product
- * @return \Illuminate\Http\Response
- */
public function update(ProductUpdateRequest $request, Product $product)
{
$product->name = $request->name;
@@ -108,13 +78,11 @@ public function update(ProductUpdateRequest $request, Product $product)
$product->status = $request->status;
if ($request->hasFile('image')) {
- // Delete old image
if ($product->image) {
Storage::delete($product->image);
}
- // Store image
+
$image_path = $request->file('image')->store('products', 'public');
- // Save to Database
$product->image = $image_path;
}
@@ -124,12 +92,6 @@ public function update(ProductUpdateRequest $request, Product $product)
return redirect()->route('products.index')->with('success', __('product.success_updating'));
}
- /**
- * Remove the specified resource from storage.
- *
- * @param \App\Models\Product $product
- * @return \Illuminate\Http\Response
- */
public function destroy(Product $product)
{
if ($product->image) {
@@ -141,4 +103,41 @@ public function destroy(Product $product)
'success' => true
]);
}
+
+ /**
+ * ✅ IMPORT CSV + SAVE HISTORY
+ */
+ public function importCSV(Request $request)
+ {
+ $request->validate([
+ 'file' => 'required|mimes:csv,txt'
+ ]);
+
+ $file = $request->file('file');
+ $fileName = $file->getClientOriginalName();
+
+ $data = array_map('str_getcsv', file($file->getPathname()));
+ $header = array_shift($data);
+
+ foreach ($data as $row) {
+ Product::updateOrCreate(
+ ['barcode' => $row[0]],
+ [
+ 'name' => $row[1],
+ 'price' => $row[2],
+ 'quantity' => $row[3],
+ 'status' => 'active',
+ ]
+ );
+ }
+
+ // ✅ Simpan history import
+ ImportCSVHistory::create([
+ 'file_name' => $fileName,
+ 'row_count' => count($data),
+ 'imported_at' => now(),
+ ]);
+
+ return back()->with('success', 'Import CSV berhasil!');
+ }
}
diff --git a/app/Imports/TransaksiImport.php b/app/Imports/TransaksiImport.php
new file mode 100644
index 00000000..b5054b29
--- /dev/null
+++ b/app/Imports/TransaksiImport.php
@@ -0,0 +1,32 @@
+toArray();
+
+ // Pastikan nama kolom dari CSV sesuai:
+ // tanggal_transaksi | nama_pegawai | nama_produk | jumlah | harga_satuan
+
+ $total_harga = isset($data['jumlah'], $data['harga_satuan'])
+ ? $data['jumlah'] * $data['harga_satuan']
+ : 0;
+
+ Transaksi::create([
+ 'Tanggal_Transaksi' => $data['tanggal_transaksi'] ?? null,
+ 'Nama_Pegawai' => $data['nama_pegawai'] ?? null, // ⬅️ PENTING (harus sama dgn database)
+ 'Nama_Produk' => $data['nama_produk'] ?? null,
+ 'Total_Pesanan' => $data['jumlah'] ?? 0,
+ 'Harga_Satuan' => $data['harga_satuan'] ?? 0,
+ 'Total_Harga' => $total_harga,
+ ]);
+ }
+}
diff --git a/app/Models/Absensi.php b/app/Models/Absensi.php
new file mode 100644
index 00000000..9f352637
--- /dev/null
+++ b/app/Models/Absensi.php
@@ -0,0 +1,46 @@
+ 'date',
+ 'jam_masuk' => 'datetime:H:i',
+ 'jam_keluar' => 'datetime:H:i',
+ ];
+
+ /**
+ * Relasi ke pegawai (opsional, jika ada tabel pegawai)
+ */
+ // public function pegawai()
+ // {
+ // return $this->belongsTo(User::class, 'pegawai_id');
+ // }
+}
diff --git a/app/Models/Gaji.php b/app/Models/Gaji.php
new file mode 100644
index 00000000..747ea512
--- /dev/null
+++ b/app/Models/Gaji.php
@@ -0,0 +1,14 @@
+app->runningInConsole()) {
- // 'key' => 'value'
- $settings = Setting::all('key', 'value')
- ->keyBy('key')
- ->transform(function ($setting) {
- return $setting->value;
- })
- ->toArray();
- config([
- 'settings' => $settings
- ]);
-
- config(['app.name' => config('settings.app_name')]);
- }
+ // Semua kode yang memanggil tabel settings sudah dihapus
Paginator::useBootstrap();
}
diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php
new file mode 100644
index 00000000..f4607bee
--- /dev/null
+++ b/app/Providers/AuthServiceProvider.php
@@ -0,0 +1,25 @@
+
+ */
+ protected $policies = [
+ // 'App\Models\Model' => 'App\Policies\ModelPolicy',
+ ];
+
+ /**
+ * Register any authentication / authorization services.
+ */
+ public function boot(): void
+ {
+ //
+ }
+}
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
new file mode 100644
index 00000000..eb9dec25
--- /dev/null
+++ b/app/Providers/EventServiceProvider.php
@@ -0,0 +1,25 @@
+>
+ */
+ protected $listen = [
+ //
+ ];
+
+ /**
+ * Register any events for your application.
+ */
+ public function boot(): void
+ {
+ //
+ }
+}
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
new file mode 100644
index 00000000..62e013b3
--- /dev/null
+++ b/app/Providers/RouteServiceProvider.php
@@ -0,0 +1,31 @@
+routes(function () {
+ Route::middleware('web')
+ ->group(base_path('routes/web.php'));
+
+ Route::prefix('api')
+ ->middleware('api')
+ ->group(base_path('routes/api.php'));
+ });
+ }
+}
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 2c39f2bb..d0790e9b 100644
--- a/composer.json
+++ b/composer.json
@@ -11,7 +11,8 @@
"php": "^8.2",
"laravel/framework": "^12.0",
"laravel/tinker": "^2.10.1",
- "laravel/ui": "^4.0"
+ "laravel/ui": "^4.0",
+ "maatwebsite/excel": "^3.1"
},
"require-dev": {
"barryvdh/laravel-debugbar": "^3.6.7",
diff --git a/composer.lock b/composer.lock
index e0db05ad..dcad4003 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": "42f808342f4ded3cc57642f401289e6a",
+ "content-hash": "68ecf90f37f8a272bda74d3688af6160",
"packages": [
{
"name": "brick/math",
@@ -135,6 +135,162 @@
],
"time": "2024-02-09T16:56:22+00:00"
},
+ {
+ "name": "composer/pcre",
+ "version": "3.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
+ "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<1.11.10"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.12 || ^2",
+ "phpstan/phpstan-strict-rules": "^1 || ^2",
+ "phpunit/phpunit": "^8 || ^9"
+ },
+ "type": "library",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ },
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/pcre/issues",
+ "source": "https://github.com/composer/pcre/tree/3.3.2"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-11-12T16:29:46+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "3.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95",
+ "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.11",
+ "symfony/phpunit-bridge": "^3 || ^7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "ircs://irc.libera.chat:6697/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/3.4.4"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ }
+ ],
+ "time": "2025-08-20T19:15:30+00:00"
+ },
{
"name": "dflydev/dot-access-data",
"version": "v3.0.3",
@@ -510,6 +666,67 @@
],
"time": "2025-03-06T22:45:56+00:00"
},
+ {
+ "name": "ezyang/htmlpurifier",
+ "version": "v4.19.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ezyang/htmlpurifier.git",
+ "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/b287d2a16aceffbf6e0295559b39662612b77fcf",
+ "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf",
+ "shasum": ""
+ },
+ "require": {
+ "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
+ },
+ "require-dev": {
+ "cerdic/css-tidy": "^1.7 || ^2.0",
+ "simpletest/simpletest": "dev-master"
+ },
+ "suggest": {
+ "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.",
+ "ext-bcmath": "Used for unit conversion and imagecrash protection",
+ "ext-iconv": "Converts text to and from non-UTF-8 encodings",
+ "ext-tidy": "Used for pretty-printing HTML"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "library/HTMLPurifier.composer.php"
+ ],
+ "psr-0": {
+ "HTMLPurifier": "library/"
+ },
+ "exclude-from-classmap": [
+ "/library/HTMLPurifier/Language/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-2.1-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Edward Z. Yang",
+ "email": "admin@htmlpurifier.org",
+ "homepage": "http://ezyang.com"
+ }
+ ],
+ "description": "Standards compliant HTML filter written in PHP",
+ "homepage": "http://htmlpurifier.org/",
+ "keywords": [
+ "html"
+ ],
+ "support": {
+ "issues": "https://github.com/ezyang/htmlpurifier/issues",
+ "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.0"
+ },
+ "time": "2025-10-17T16:34:55+00:00"
+ },
{
"name": "fruitcake/php-cors",
"version": "v1.3.0",
@@ -2069,6 +2286,272 @@
],
"time": "2024-12-08T08:18:47+00:00"
},
+ {
+ "name": "maatwebsite/excel",
+ "version": "3.1.67",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/SpartnerNL/Laravel-Excel.git",
+ "reference": "e508e34a502a3acc3329b464dad257378a7edb4d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/e508e34a502a3acc3329b464dad257378a7edb4d",
+ "reference": "e508e34a502a3acc3329b464dad257378a7edb4d",
+ "shasum": ""
+ },
+ "require": {
+ "composer/semver": "^3.3",
+ "ext-json": "*",
+ "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0||^12.0",
+ "php": "^7.0||^8.0",
+ "phpoffice/phpspreadsheet": "^1.30.0",
+ "psr/simple-cache": "^1.0||^2.0||^3.0"
+ },
+ "require-dev": {
+ "laravel/scout": "^7.0||^8.0||^9.0||^10.0",
+ "orchestra/testbench": "^6.0||^7.0||^8.0||^9.0||^10.0",
+ "predis/predis": "^1.1"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "aliases": {
+ "Excel": "Maatwebsite\\Excel\\Facades\\Excel"
+ },
+ "providers": [
+ "Maatwebsite\\Excel\\ExcelServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Maatwebsite\\Excel\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Patrick Brouwers",
+ "email": "patrick@spartner.nl"
+ }
+ ],
+ "description": "Supercharged Excel exports and imports in Laravel",
+ "keywords": [
+ "PHPExcel",
+ "batch",
+ "csv",
+ "excel",
+ "export",
+ "import",
+ "laravel",
+ "php",
+ "phpspreadsheet"
+ ],
+ "support": {
+ "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues",
+ "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.67"
+ },
+ "funding": [
+ {
+ "url": "https://laravel-excel.com/commercial-support",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/patrickbrouwers",
+ "type": "github"
+ }
+ ],
+ "time": "2025-08-26T09:13:16+00:00"
+ },
+ {
+ "name": "maennchen/zipstream-php",
+ "version": "3.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maennchen/ZipStream-PHP.git",
+ "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f",
+ "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "ext-zlib": "*",
+ "php-64bit": "^8.2"
+ },
+ "require-dev": {
+ "brianium/paratest": "^7.7",
+ "ext-zip": "*",
+ "friendsofphp/php-cs-fixer": "^3.16",
+ "guzzlehttp/guzzle": "^7.5",
+ "mikey179/vfsstream": "^1.6",
+ "php-coveralls/php-coveralls": "^2.5",
+ "phpunit/phpunit": "^11.0",
+ "vimeo/psalm": "^6.0"
+ },
+ "suggest": {
+ "guzzlehttp/psr7": "^2.4",
+ "psr/http-message": "^2.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "ZipStream\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paul Duncan",
+ "email": "pabs@pablotron.org"
+ },
+ {
+ "name": "Jonatan Männchen",
+ "email": "jonatan@maennchen.ch"
+ },
+ {
+ "name": "Jesse Donat",
+ "email": "donatj@gmail.com"
+ },
+ {
+ "name": "András Kolesár",
+ "email": "kolesar@kolesar.hu"
+ }
+ ],
+ "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
+ "keywords": [
+ "stream",
+ "zip"
+ ],
+ "support": {
+ "issues": "https://github.com/maennchen/ZipStream-PHP/issues",
+ "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/maennchen",
+ "type": "github"
+ }
+ ],
+ "time": "2025-01-27T12:07:53+00:00"
+ },
+ {
+ "name": "markbaker/complex",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/MarkBaker/PHPComplex.git",
+ "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
+ "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
+ "phpcompatibility/php-compatibility": "^9.3",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Complex\\": "classes/src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mark Baker",
+ "email": "mark@lange.demon.co.uk"
+ }
+ ],
+ "description": "PHP Class for working with complex numbers",
+ "homepage": "https://github.com/MarkBaker/PHPComplex",
+ "keywords": [
+ "complex",
+ "mathematics"
+ ],
+ "support": {
+ "issues": "https://github.com/MarkBaker/PHPComplex/issues",
+ "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2"
+ },
+ "time": "2022-12-06T16:21:08+00:00"
+ },
+ {
+ "name": "markbaker/matrix",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/MarkBaker/PHPMatrix.git",
+ "reference": "728434227fe21be27ff6d86621a1b13107a2562c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c",
+ "reference": "728434227fe21be27ff6d86621a1b13107a2562c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
+ "phpcompatibility/php-compatibility": "^9.3",
+ "phpdocumentor/phpdocumentor": "2.*",
+ "phploc/phploc": "^4.0",
+ "phpmd/phpmd": "2.*",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "sebastian/phpcpd": "^4.0",
+ "squizlabs/php_codesniffer": "^3.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Matrix\\": "classes/src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mark Baker",
+ "email": "mark@demon-angel.eu"
+ }
+ ],
+ "description": "PHP Class for working with matrices",
+ "homepage": "https://github.com/MarkBaker/PHPMatrix",
+ "keywords": [
+ "mathematics",
+ "matrix",
+ "vector"
+ ],
+ "support": {
+ "issues": "https://github.com/MarkBaker/PHPMatrix/issues",
+ "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1"
+ },
+ "time": "2022-12-02T22:17:43+00:00"
+ },
{
"name": "monolog/monolog",
"version": "3.9.0",
@@ -2570,6 +3053,112 @@
],
"time": "2025-05-08T08:14:37+00:00"
},
+ {
+ "name": "phpoffice/phpspreadsheet",
+ "version": "1.30.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
+ "reference": "fa8257a579ec623473eabfe49731de5967306c4c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fa8257a579ec623473eabfe49731de5967306c4c",
+ "reference": "fa8257a579ec623473eabfe49731de5967306c4c",
+ "shasum": ""
+ },
+ "require": {
+ "composer/pcre": "^1||^2||^3",
+ "ext-ctype": "*",
+ "ext-dom": "*",
+ "ext-fileinfo": "*",
+ "ext-gd": "*",
+ "ext-iconv": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-simplexml": "*",
+ "ext-xml": "*",
+ "ext-xmlreader": "*",
+ "ext-xmlwriter": "*",
+ "ext-zip": "*",
+ "ext-zlib": "*",
+ "ezyang/htmlpurifier": "^4.15",
+ "maennchen/zipstream-php": "^2.1 || ^3.0",
+ "markbaker/complex": "^3.0",
+ "markbaker/matrix": "^3.0",
+ "php": ">=7.4.0 <8.5.0",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0",
+ "psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "dev-main",
+ "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0",
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "mitoteam/jpgraph": "^10.3",
+ "mpdf/mpdf": "^8.1.1",
+ "phpcompatibility/php-compatibility": "^9.3",
+ "phpstan/phpstan": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^8.5 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.7",
+ "tecnickcom/tcpdf": "^6.5"
+ },
+ "suggest": {
+ "dompdf/dompdf": "Option for rendering PDF with PDF Writer",
+ "ext-intl": "PHP Internationalization Functions",
+ "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
+ "mpdf/mpdf": "Option for rendering PDF with PDF Writer",
+ "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Maarten Balliauw",
+ "homepage": "https://blog.maartenballiauw.be"
+ },
+ {
+ "name": "Mark Baker",
+ "homepage": "https://markbakeruk.net"
+ },
+ {
+ "name": "Franck Lefevre",
+ "homepage": "https://rootslabs.net"
+ },
+ {
+ "name": "Erik Tilt"
+ },
+ {
+ "name": "Adrien Crivelli"
+ }
+ ],
+ "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
+ "homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
+ "keywords": [
+ "OpenXML",
+ "excel",
+ "gnumeric",
+ "ods",
+ "php",
+ "spreadsheet",
+ "xls",
+ "xlsx"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
+ "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.1"
+ },
+ "time": "2025-10-26T16:01:04+00:00"
+ },
{
"name": "phpoption/phpoption",
"version": "1.9.3",
@@ -8375,12 +8964,12 @@
],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": {},
+ "stability-flags": [],
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": "^8.2"
},
- "platform-dev": {},
- "plugin-api-version": "2.6.0"
+ "platform-dev": [],
+ "plugin-api-version": "2.3.0"
}
diff --git a/config/app.php b/config/app.php
index 324b513a..b53c46f6 100644
--- a/config/app.php
+++ b/config/app.php
@@ -2,99 +2,22 @@
return [
- /*
- |--------------------------------------------------------------------------
- | Application Name
- |--------------------------------------------------------------------------
- |
- | This value is the name of your application, which will be used when the
- | framework needs to place the application's name in a notification or
- | other UI elements where an application name needs to be displayed.
- |
- */
-
'name' => env('APP_NAME', 'Laravel'),
- /*
- |--------------------------------------------------------------------------
- | Application Environment
- |--------------------------------------------------------------------------
- |
- | This value determines the "environment" your application is currently
- | running in. This may determine how you prefer to configure various
- | services the application utilizes. Set this in your ".env" file.
- |
- */
-
'env' => env('APP_ENV', 'production'),
- /*
- |--------------------------------------------------------------------------
- | Application Debug Mode
- |--------------------------------------------------------------------------
- |
- | When your application is in debug mode, detailed error messages with
- | stack traces will be shown on every error that occurs within your
- | application. If disabled, a simple generic error page is shown.
- |
- */
-
'debug' => (bool) env('APP_DEBUG', false),
- /*
- |--------------------------------------------------------------------------
- | Application URL
- |--------------------------------------------------------------------------
- |
- | This URL is used by the console to properly generate URLs when using
- | the Artisan command line tool. You should set this to the root of
- | the application so that it's available within Artisan commands.
- |
- */
-
'url' => env('APP_URL', 'http://localhost'),
- /*
- |--------------------------------------------------------------------------
- | Application Timezone
- |--------------------------------------------------------------------------
- |
- | Here you may specify the default timezone for your application, which
- | will be used by the PHP date and date-time functions. The timezone
- | is set to "UTC" by default as it is suitable for most use cases.
- |
- */
-
'timezone' => 'UTC',
- /*
- |--------------------------------------------------------------------------
- | Application Locale Configuration
- |--------------------------------------------------------------------------
- |
- | The application locale determines the default locale that will be used
- | by Laravel's translation / localization methods. This option can be
- | set to any locale for which you plan to have translation strings.
- |
- */
-
'locale' => env('APP_LOCALE', 'en'),
'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),
'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),
- /*
- |--------------------------------------------------------------------------
- | Encryption Key
- |--------------------------------------------------------------------------
- |
- | This key is utilized by Laravel's encryption services and should be set
- | to a random, 32 character string to ensure that all encrypted values
- | are secure. You should do this prior to deploying the application.
- |
- */
-
'cipher' => 'AES-256-CBC',
'key' => env('APP_KEY'),
@@ -105,22 +28,108 @@
),
],
+ 'maintenance' => [
+ 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'),
+ 'store' => env('APP_MAINTENANCE_STORE', 'database'),
+ ],
+
/*
|--------------------------------------------------------------------------
- | Maintenance Mode Driver
+ | Autoloaded Service Providers
|--------------------------------------------------------------------------
- |
- | These configuration options determine the driver used to determine and
- | manage Laravel's "maintenance mode" status. The "cache" driver will
- | allow maintenance mode to be controlled across multiple machines.
- |
- | Supported drivers: "file", "cache"
- |
*/
- 'maintenance' => [
- 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'),
- 'store' => env('APP_MAINTENANCE_STORE', 'database'),
+ 'providers' => [
+
+ /*
+ * Laravel Framework Service Providers...
+ */
+ Illuminate\Auth\AuthServiceProvider::class,
+ Illuminate\Broadcasting\BroadcastServiceProvider::class,
+ Illuminate\Bus\BusServiceProvider::class,
+ Illuminate\Cache\CacheServiceProvider::class,
+ Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
+ Illuminate\Cookie\CookieServiceProvider::class,
+ Illuminate\Database\DatabaseServiceProvider::class,
+ Illuminate\Encryption\EncryptionServiceProvider::class,
+ Illuminate\Filesystem\FilesystemServiceProvider::class,
+ Illuminate\Foundation\Providers\FoundationServiceProvider::class,
+ Illuminate\Hashing\HashServiceProvider::class,
+ Illuminate\Mail\MailServiceProvider::class,
+ Illuminate\Notifications\NotificationServiceProvider::class,
+ Illuminate\Pagination\PaginationServiceProvider::class,
+ Illuminate\Pipeline\PipelineServiceProvider::class,
+ Illuminate\Queue\QueueServiceProvider::class,
+ Illuminate\Redis\RedisServiceProvider::class,
+ Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
+ Illuminate\Session\SessionServiceProvider::class,
+ Illuminate\Translation\TranslationServiceProvider::class,
+ Illuminate\Validation\ValidationServiceProvider::class,
+ Illuminate\View\ViewServiceProvider::class,
+
+ /*
+ * Package Service Providers...
+ */
+ Maatwebsite\Excel\ExcelServiceProvider::class, // ← Ditambahkan
+
+ /*
+ * Application Service Providers...
+ */
+ App\Providers\AppServiceProvider::class,
+ App\Providers\AuthServiceProvider::class,
+ // App\Providers\BroadcastServiceProvider::class,
+ App\Providers\EventServiceProvider::class,
+ App\Providers\RouteServiceProvider::class,
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Class Aliases
+ |--------------------------------------------------------------------------
+ */
+
+ 'aliases' => [
+
+ 'App' => Illuminate\Support\Facades\App::class,
+ 'Arr' => Illuminate\Support\Arr::class,
+ 'Artisan' => Illuminate\Support\Facades\Artisan::class,
+ 'Auth' => Illuminate\Support\Facades\Auth::class,
+ 'Blade' => Illuminate\Support\Facades\Blade::class,
+ 'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
+ 'Bus' => Illuminate\Support\Facades\Bus::class,
+ 'Cache' => Illuminate\Support\Facades\Cache::class,
+ 'Config' => Illuminate\Support\Facades\Config::class,
+ 'Cookie' => Illuminate\Support\Facades\Cookie::class,
+ 'Crypt' => Illuminate\Support\Facades\Crypt::class,
+ 'DB' => Illuminate\Support\Facades\DB::class,
+ 'Eloquent' => Illuminate\Database\Eloquent\Model::class,
+ 'Event' => Illuminate\Support\Facades\Event::class,
+ 'File' => Illuminate\Support\Facades\File::class,
+ 'Gate' => Illuminate\Support\Facades\Gate::class,
+ 'Hash' => Illuminate\Support\Facades\Hash::class,
+ 'Http' => Illuminate\Support\Facades\Http::class,
+ 'Lang' => Illuminate\Support\Facades\Lang::class,
+ 'Log' => Illuminate\Support\Facades\Log::class,
+ 'Mail' => Illuminate\Support\Facades\Mail::class,
+ 'Notification' => Illuminate\Support\Facades\Notification::class,
+ 'Password' => Illuminate\Support\Facades\Password::class,
+ 'Queue' => Illuminate\Support\Facades\Queue::class,
+ 'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class,
+ 'Redirect' => Illuminate\Support\Facades\Redirect::class,
+ 'Request' => Illuminate\Support\Facades\Request::class,
+ 'Response' => Illuminate\Support\Facades\Response::class,
+ 'Route' => Illuminate\Support\Facades\Route::class,
+ 'Schema' => Illuminate\Support\Facades\Schema::class,
+ 'Session' => Illuminate\Support\Facades\Session::class,
+ 'Storage' => Illuminate\Support\Facades\Storage::class,
+ 'Str' => Illuminate\Support\Str::class,
+ 'URL' => Illuminate\Support\Facades\URL::class,
+ 'Validator' => Illuminate\Support\Facades\Validator::class,
+ 'View' => Illuminate\Support\Facades\View::class,
+
+ // ← Tambahkan di sini
+ 'Excel' => Maatwebsite\Excel\Facades\Excel::class,
+
],
];
diff --git a/database/migrations/2025_11_02_213840_create_absensis_table.php b/database/migrations/2025_11_02_213840_create_absensis_table.php
new file mode 100644
index 00000000..48fee458
--- /dev/null
+++ b/database/migrations/2025_11_02_213840_create_absensis_table.php
@@ -0,0 +1,32 @@
+id();
+ $table->unsignedBigInteger('pegawai_id'); // jika ada relasi ke tabel pegawai
+ $table->date('tanggal');
+ $table->time('jam_masuk')->nullable();
+ $table->time('jam_keluar')->nullable();
+ $table->string('status'); // hadir, izin, sakit, alpha
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Hapus tabel absensis jika rollback dilakukan.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('absensis');
+ }
+}
diff --git a/database/migrations/2025_11_02_230527_add_id_absensi_and_shift_to_absensis_table.php b/database/migrations/2025_11_02_230527_add_id_absensi_and_shift_to_absensis_table.php
new file mode 100644
index 00000000..ad2071df
--- /dev/null
+++ b/database/migrations/2025_11_02_230527_add_id_absensi_and_shift_to_absensis_table.php
@@ -0,0 +1,23 @@
+string('id_absensi')->unique()->after('id'); // ID Absensi unik
+ $table->string('shift')->nullable()->after('jam_keluar'); // Shift bisa null
+ });
+ }
+
+ public function down(): void
+ {
+ Schema::table('absensis', function (Blueprint $table) {
+ $table->dropColumn(['id_absensi', 'shift']);
+ });
+ }
+}
diff --git a/database/migrations/2025_11_03_080413_create_laporans_table.php b/database/migrations/2025_11_03_080413_create_laporans_table.php
new file mode 100644
index 00000000..f7f7694d
--- /dev/null
+++ b/database/migrations/2025_11_03_080413_create_laporans_table.php
@@ -0,0 +1,25 @@
+id('id_laporan'); // primary key
+ $table->string('id_gaji')->unique(); // ganti dari kode_laporan menjadi id_gaji
+ $table->string('periode')->nullable()->change();
+ $table->date('tanggal_cetak')->nullable();
+ $table->decimal('total_gaji', 15, 2)->default(0);
+ $table->timestamps();
+ });
+ }
+
+ public function down(): void
+ {
+ Schema::dropIfExists('laporans');
+ }
+};
diff --git a/database/migrations/2025_11_03_080725_create_gajis_table.php b/database/migrations/2025_11_03_080725_create_gajis_table.php
new file mode 100644
index 00000000..fa175579
--- /dev/null
+++ b/database/migrations/2025_11_03_080725_create_gajis_table.php
@@ -0,0 +1,29 @@
+id('id_gaji'); // Primary key unik untuk tabel gajis
+ $table->string('nama_karyawan'); // Nama karyawan
+ $table->decimal('jumlah_gaji', 10, 2); // Jumlah gaji (format desimal)
+ $table->timestamps(); // created_at dan updated_at
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('gajis');
+ }
+};
diff --git a/database/migrations/2025_11_03_171450_add_tanggal_to_laporans_table.php b/database/migrations/2025_11_03_171450_add_tanggal_to_laporans_table.php
new file mode 100644
index 00000000..bb4fa8e5
--- /dev/null
+++ b/database/migrations/2025_11_03_171450_add_tanggal_to_laporans_table.php
@@ -0,0 +1,28 @@
+id();
+ $table->string('periode');
+ $table->decimal('nominal', 15, 2)->nullable();
+ $table->text('keterangan')->nullable();
+ $table->timestamps();
+ });
+}
+
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('gaji');
+ }
+};
diff --git a/database/migrations/2025_11_22_174234_remove_wrong_pegawai_id_from_laporans_table.php b/database/migrations/2025_11_22_174234_remove_wrong_pegawai_id_from_laporans_table.php
new file mode 100644
index 00000000..55833736
--- /dev/null
+++ b/database/migrations/2025_11_22_174234_remove_wrong_pegawai_id_from_laporans_table.php
@@ -0,0 +1,30 @@
+dropColumn('pegawai_id');
+ }
+ });
+}
+
+public function down(): void
+{
+ Schema::table('laporans', function (Blueprint $table) {
+ if (!Schema::hasColumn('laporans', 'pegawai_id')) {
+ $table->foreignId('pegawai_id')->nullable()->constrained('pegawais')->nullOnDelete();
+ }
+ });
+}
+
+};
diff --git a/database/migrations/2025_11_22_174352_cleanup_pegawai_id_in_laporans_table.php b/database/migrations/2025_11_22_174352_cleanup_pegawai_id_in_laporans_table.php
new file mode 100644
index 00000000..18e27f18
--- /dev/null
+++ b/database/migrations/2025_11_22_174352_cleanup_pegawai_id_in_laporans_table.php
@@ -0,0 +1,32 @@
+dropForeign(['pegawai_id']);
+ } catch (\Exception $e) {
+ // Abaikan error jika foreign key sudah tidak ada
+ }
+ $table->dropColumn('pegawai_id');
+ }
+ });
+ }
+
+ public function down(): void
+ {
+ Schema::table('laporans', function (Blueprint $table) {
+ if (!Schema::hasColumn('laporans', 'pegawai_id')) {
+ $table->foreignId('pegawai_id')->nullable()->constrained('pegawais')->nullOnDelete();
+ }
+ });
+ }
+};
diff --git a/database/migrations/2025_11_22_182901_fix_transaksis_table.php b/database/migrations/2025_11_22_182901_fix_transaksis_table.php
new file mode 100644
index 00000000..fa79cf2b
--- /dev/null
+++ b/database/migrations/2025_11_22_182901_fix_transaksis_table.php
@@ -0,0 +1,62 @@
+string('id_transaksi')->nullable()->after('id');
+ }
+
+ if (!Schema::hasColumn('transaksis', 'id_menu')) {
+ $table->string('id_menu')->nullable()->after('id_transaksi');
+ }
+
+ if (!Schema::hasColumn('transaksis', 'Nama_Pegawai')) {
+ $table->string('Nama_Pegawai')->nullable()->after('id_menu');
+ }
+
+ if (!Schema::hasColumn('transaksis', 'Nama_Produk')) {
+ $table->string('Nama_Produk')->nullable()->after('Nama_Pegawai');
+ }
+
+ if (!Schema::hasColumn('transaksis', 'Total_Pesanan')) {
+ $table->integer('Total_Pesanan')->nullable()->after('Nama_Produk');
+ }
+
+ if (!Schema::hasColumn('transaksis', 'Harga_Satuan')) {
+ $table->decimal('Harga_Satuan', 12, 2)->nullable()->after('Total_Pesanan');
+ }
+
+ if (!Schema::hasColumn('transaksis', 'Tanggal_Transaksi')) {
+ $table->date('Tanggal_Transaksi')->nullable()->after('Harga_Satuan');
+ }
+
+ if (!Schema::hasColumn('transaksis', 'Total_Harga')) {
+ $table->decimal('Total_Harga', 12, 2)->nullable()->after('Tanggal_Transaksi');
+ }
+ });
+ }
+
+ public function down(): void
+ {
+ Schema::table('transaksis', function (Blueprint $table) {
+ $table->dropColumn([
+ 'id_transaksi',
+ 'id_menu',
+ 'Nama_Pegawai',
+ 'Nama_Produk',
+ 'Total_Pesanan',
+ 'Harga_Satuan',
+ 'Tanggal_Transaksi',
+ 'Total_Harga',
+ ]);
+ });
+ }
+};
diff --git a/database/migrations/2025_11_22_200317_add_harga_satuan_to_transaksis_table.php b/database/migrations/2025_11_22_200317_add_harga_satuan_to_transaksis_table.php
new file mode 100644
index 00000000..dda27ee9
--- /dev/null
+++ b/database/migrations/2025_11_22_200317_add_harga_satuan_to_transaksis_table.php
@@ -0,0 +1,28 @@
+decimal('harga_satuan', 12, 2)->nullable()->after('Total_Pesanan');
+ }
+ });
+}
+
+public function down(): void
+{
+ Schema::table('transaksis', function (Blueprint $table) {
+ $table->dropColumn('harga_satuan');
+ });
+}
+
+};
diff --git a/database/migrations/2025_11_24_162331_create_import_csv_histories_table.php b/database/migrations/2025_11_24_162331_create_import_csv_histories_table.php
new file mode 100644
index 00000000..7f57d1f7
--- /dev/null
+++ b/database/migrations/2025_11_24_162331_create_import_csv_histories_table.php
@@ -0,0 +1,23 @@
+id();
+ $table->string('file_name');
+ $table->integer('row_count');
+ $table->timestamp('imported_at')->nullable();
+ });
+ }
+
+ public function down(): void
+ {
+ Schema::dropIfExists('import_csv_histories');
+ }
+};
diff --git a/database/migrations/DISABLED_2025_11_22_180654_create_transaksis_table.php b/database/migrations/DISABLED_2025_11_22_180654_create_transaksis_table.php
new file mode 100644
index 00000000..e31b8b3d
--- /dev/null
+++ b/database/migrations/DISABLED_2025_11_22_180654_create_transaksis_table.php
@@ -0,0 +1,18 @@
+=0.10.0"
}
@@ -765,7 +757,6 @@
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
"dev": true,
- "peer": true,
"dependencies": {
"@vue/compiler-core": "3.2.45",
"@vue/shared": "3.2.45"
@@ -776,7 +767,6 @@
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
"dev": true,
- "peer": true,
"dependencies": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.45",
@@ -795,7 +785,6 @@
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"dev": true,
- "peer": true,
"dependencies": {
"sourcemap-codec": "^1.4.8"
}
@@ -805,7 +794,6 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -815,7 +803,6 @@
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
"dev": true,
- "peer": true,
"dependencies": {
"@vue/compiler-dom": "3.2.45",
"@vue/shared": "3.2.45"
@@ -826,7 +813,6 @@
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz",
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
"dev": true,
- "peer": true,
"dependencies": {
"@vue/shared": "3.2.45"
}
@@ -836,7 +822,6 @@
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
"dev": true,
- "peer": true,
"dependencies": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.45",
@@ -850,7 +835,6 @@
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"dev": true,
- "peer": true,
"dependencies": {
"sourcemap-codec": "^1.4.8"
}
@@ -860,7 +844,6 @@
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
"dev": true,
- "peer": true,
"dependencies": {
"@vue/reactivity": "3.2.45",
"@vue/shared": "3.2.45"
@@ -871,7 +854,6 @@
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
"dev": true,
- "peer": true,
"dependencies": {
"@vue/runtime-core": "3.2.45",
"@vue/shared": "3.2.45",
@@ -883,7 +865,6 @@
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
"dev": true,
- "peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.2.45",
"@vue/shared": "3.2.45"
@@ -896,15 +877,13 @@
"version": "3.2.45",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@webassemblyjs/ast": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
"integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
"dev": true,
- "peer": true,
"dependencies": {
"@webassemblyjs/helper-numbers": "1.11.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.1"
@@ -914,29 +893,25 @@
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
"integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
"integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@webassemblyjs/helper-buffer": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
"integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
"integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
"dev": true,
- "peer": true,
"dependencies": {
"@webassemblyjs/floating-point-hex-parser": "1.11.1",
"@webassemblyjs/helper-api-error": "1.11.1",
@@ -947,15 +922,13 @@
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
"integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
"integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
"dev": true,
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-buffer": "1.11.1",
@@ -968,7 +941,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
"integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
"dev": true,
- "peer": true,
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
@@ -978,7 +950,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
"integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
"dev": true,
- "peer": true,
"dependencies": {
"@xtuc/long": "4.2.2"
}
@@ -987,15 +958,13 @@
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
"integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@webassemblyjs/wasm-edit": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
"integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
"dev": true,
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-buffer": "1.11.1",
@@ -1012,7 +981,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
"integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
"dev": true,
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.1",
@@ -1026,7 +994,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
"integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
"dev": true,
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-buffer": "1.11.1",
@@ -1039,7 +1006,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
"integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
"dev": true,
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-api-error": "1.11.1",
@@ -1054,7 +1020,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
"integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
"dev": true,
- "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.11.1",
"@xtuc/long": "4.2.2"
@@ -1064,15 +1029,13 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/acorn": {
"version": "7.4.1",
@@ -1216,7 +1179,6 @@
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
- "peer": true,
"peerDependencies": {
"ajv": "^6.9.1"
}
@@ -1331,6 +1293,7 @@
"url": "https://opencollective.com/bootstrap"
}
],
+ "peer": true,
"peerDependencies": {
"jquery": "1.9.1 - 3",
"popper.js": "^1.16.1"
@@ -1437,6 +1400,7 @@
"url": "https://tidelift.com/funding/github/npm/browserslist"
}
],
+ "peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001400",
"electron-to-chromium": "^1.4.251",
@@ -1573,7 +1537,6 @@
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=6.0"
}
@@ -1625,8 +1588,7 @@
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/concat-stream": {
"version": "1.6.2",
@@ -1696,8 +1658,7 @@
"version": "2.6.21",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/d": {
"version": "1.0.1",
@@ -2095,7 +2056,6 @@
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
"integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
"dev": true,
- "peer": true,
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -2108,8 +2068,7 @@
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
"integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/es5-ext": {
"version": "0.10.53",
@@ -2574,7 +2533,6 @@
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
- "peer": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -2588,7 +2546,6 @@
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=4.0"
}
@@ -2610,7 +2567,6 @@
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
- "peer": true,
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -2623,7 +2579,6 @@
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=4.0"
}
@@ -2645,8 +2600,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/esutils": {
"version": "1.0.0",
@@ -2680,7 +2634,6 @@
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=0.8.x"
}
@@ -2702,15 +2655,13 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
@@ -2873,8 +2824,7 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/globals": {
"version": "11.12.0",
@@ -3083,7 +3033,6 @@
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
"integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
- "peer": true,
"dependencies": {
"@types/node": "*",
"merge-stream": "^2.0.0",
@@ -3098,7 +3047,6 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=8"
}
@@ -3108,7 +3056,6 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
- "peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -3122,7 +3069,8 @@
"node_modules/jquery": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
- "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+ "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==",
+ "peer": true
},
"node_modules/jquery-knob-chif": {
"version": "1.2.13",
@@ -3200,15 +3148,13 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/json5": {
"version": "2.2.1",
@@ -3293,7 +3239,6 @@
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=6.11.5"
}
@@ -3371,8 +3316,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/mime-db": {
"version": "1.52.0",
@@ -3623,7 +3567,6 @@
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=6"
}
@@ -3646,7 +3589,6 @@
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
- "peer": true,
"dependencies": {
"safe-buffer": "^5.1.0"
}
@@ -3664,6 +3606,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
"integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
"dev": true,
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -3811,6 +3754,7 @@
"resolved": "https://registry.npmjs.org/sass/-/sass-1.55.0.tgz",
"integrity": "sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==",
"dev": true,
+ "peer": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -3880,7 +3824,6 @@
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
- "peer": true,
"dependencies": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
@@ -3927,7 +3870,6 @@
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
"dev": true,
- "peer": true,
"dependencies": {
"randombytes": "^2.1.0"
}
@@ -3989,7 +3931,6 @@
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
- "peer": true,
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -4000,7 +3941,6 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -4220,7 +4160,6 @@
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=6"
}
@@ -4249,7 +4188,6 @@
"version": "5.19.0",
"resolved": "https://registry.npmjs.org/tempusdominus-core/-/tempusdominus-core-5.19.0.tgz",
"integrity": "sha512-7a4oBQw4cjz6C87BLRg3KHVvzpnPlnRTkuDZ7SwcJayQQ4QgOryX5u6wj0q07TXhgtMQLCntZO6nVhHIKPaeUw==",
- "peer": true,
"dependencies": {
"jquery": "^3.5.0",
"moment": "~2.24.0",
@@ -4265,7 +4203,6 @@
"version": "2.24.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==",
- "peer": true,
"engines": {
"node": "*"
}
@@ -4275,7 +4212,6 @@
"resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz",
"integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==",
"dev": true,
- "peer": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
@@ -4294,7 +4230,6 @@
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz",
"integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==",
"dev": true,
- "peer": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.14",
"jest-worker": "^27.4.5",
@@ -4329,7 +4264,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
"integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
"dev": true,
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -4473,7 +4407,6 @@
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
- "peer": true,
"dependencies": {
"punycode": "^2.1.0"
}
@@ -4488,6 +4421,7 @@
"resolved": "https://registry.npmjs.org/vite/-/vite-3.1.7.tgz",
"integrity": "sha512-5vCAmU4S8lyVdFCInu9M54f/g8qbOMakVw5xJ4pjoaDy5wgy9sLLZkGdSLN52dlsBqh0tBqxjaqqa8LgPqwRAA==",
"dev": true,
+ "peer": true,
"dependencies": {
"esbuild": "^0.15.9",
"postcss": "^8.4.16",
@@ -4556,7 +4490,6 @@
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
"integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
"dev": true,
- "peer": true,
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -4570,7 +4503,6 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz",
"integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==",
"dev": true,
- "peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^0.0.51",
@@ -4618,7 +4550,6 @@
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=10.13.0"
}
@@ -4641,7 +4572,6 @@
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
"dev": true,
- "peer": true,
"peerDependencies": {
"acorn": "^8"
}
@@ -4723,6 +4653,7 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz",
"integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==",
"dev": true,
+ "peer": true,
"requires": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
@@ -5118,7 +5049,6 @@
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
"dev": true,
- "peer": true,
"requires": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -5129,7 +5059,6 @@
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
"dev": true,
- "peer": true,
"requires": {
"@jridgewell/set-array": "^1.0.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -5174,7 +5103,6 @@
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz",
"integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==",
"dev": true,
- "peer": true,
"requires": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -5185,7 +5113,6 @@
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
"integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
"dev": true,
- "peer": true,
"requires": {
"@types/eslint": "*",
"@types/estree": "*"
@@ -5195,22 +5122,19 @@
"version": "0.0.51",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
"integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@types/json-schema": {
"version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@types/node": {
"version": "18.11.18",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
"integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@vitejs/plugin-react": {
"version": "2.1.0",
@@ -5239,7 +5163,6 @@
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
"dev": true,
- "peer": true,
"requires": {
"@babel/parser": "^7.16.4",
"@vue/shared": "3.2.45",
@@ -5251,8 +5174,7 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "peer": true
+ "dev": true
}
}
},
@@ -5261,7 +5183,6 @@
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
"dev": true,
- "peer": true,
"requires": {
"@vue/compiler-core": "3.2.45",
"@vue/shared": "3.2.45"
@@ -5272,7 +5193,6 @@
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
"dev": true,
- "peer": true,
"requires": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.45",
@@ -5291,7 +5211,6 @@
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"dev": true,
- "peer": true,
"requires": {
"sourcemap-codec": "^1.4.8"
}
@@ -5300,8 +5219,7 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "peer": true
+ "dev": true
}
}
},
@@ -5310,7 +5228,6 @@
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
"dev": true,
- "peer": true,
"requires": {
"@vue/compiler-dom": "3.2.45",
"@vue/shared": "3.2.45"
@@ -5321,7 +5238,6 @@
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz",
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
"dev": true,
- "peer": true,
"requires": {
"@vue/shared": "3.2.45"
}
@@ -5331,7 +5247,6 @@
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
"dev": true,
- "peer": true,
"requires": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.45",
@@ -5345,7 +5260,6 @@
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"dev": true,
- "peer": true,
"requires": {
"sourcemap-codec": "^1.4.8"
}
@@ -5357,7 +5271,6 @@
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
"dev": true,
- "peer": true,
"requires": {
"@vue/reactivity": "3.2.45",
"@vue/shared": "3.2.45"
@@ -5368,7 +5281,6 @@
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
"dev": true,
- "peer": true,
"requires": {
"@vue/runtime-core": "3.2.45",
"@vue/shared": "3.2.45",
@@ -5380,7 +5292,6 @@
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
"dev": true,
- "peer": true,
"requires": {
"@vue/compiler-ssr": "3.2.45",
"@vue/shared": "3.2.45"
@@ -5390,15 +5301,13 @@
"version": "3.2.45",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@webassemblyjs/ast": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
"integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
"dev": true,
- "peer": true,
"requires": {
"@webassemblyjs/helper-numbers": "1.11.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.1"
@@ -5408,29 +5317,25 @@
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
"integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@webassemblyjs/helper-api-error": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
"integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@webassemblyjs/helper-buffer": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
"integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@webassemblyjs/helper-numbers": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
"integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
"dev": true,
- "peer": true,
"requires": {
"@webassemblyjs/floating-point-hex-parser": "1.11.1",
"@webassemblyjs/helper-api-error": "1.11.1",
@@ -5441,15 +5346,13 @@
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
"integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@webassemblyjs/helper-wasm-section": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
"integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
"dev": true,
- "peer": true,
"requires": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-buffer": "1.11.1",
@@ -5462,7 +5365,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
"integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
"dev": true,
- "peer": true,
"requires": {
"@xtuc/ieee754": "^1.2.0"
}
@@ -5472,7 +5374,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
"integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
"dev": true,
- "peer": true,
"requires": {
"@xtuc/long": "4.2.2"
}
@@ -5481,15 +5382,13 @@
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
"integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@webassemblyjs/wasm-edit": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
"integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
"dev": true,
- "peer": true,
"requires": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-buffer": "1.11.1",
@@ -5506,7 +5405,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
"integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
"dev": true,
- "peer": true,
"requires": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.1",
@@ -5520,7 +5418,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
"integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
"dev": true,
- "peer": true,
"requires": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-buffer": "1.11.1",
@@ -5533,7 +5430,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
"integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
"dev": true,
- "peer": true,
"requires": {
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/helper-api-error": "1.11.1",
@@ -5548,7 +5444,6 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
"integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
"dev": true,
- "peer": true,
"requires": {
"@webassemblyjs/ast": "1.11.1",
"@xtuc/long": "4.2.2"
@@ -5558,15 +5453,13 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true,
- "peer": true
+ "dev": true
},
"@xtuc/long": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"acorn": {
"version": "7.4.1",
@@ -5691,7 +5584,6 @@
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
- "peer": true,
"requires": {}
},
"amdefine": {
@@ -5776,6 +5668,7 @@
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
"integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==",
+ "peer": true,
"requires": {}
},
"bootstrap-colorpicker": {
@@ -5862,6 +5755,7 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
"integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
"dev": true,
+ "peer": true,
"requires": {
"caniuse-lite": "^1.0.30001400",
"electron-to-chromium": "^1.4.251",
@@ -5961,8 +5855,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"clone": {
"version": "1.0.4",
@@ -6007,8 +5900,7 @@
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"concat-stream": {
"version": "1.6.2",
@@ -6063,8 +5955,7 @@
"version": "2.6.21",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"d": {
"version": "1.0.1",
@@ -6439,7 +6330,6 @@
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
"integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
"dev": true,
- "peer": true,
"requires": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -6449,8 +6339,7 @@
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
"integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"es5-ext": {
"version": "0.10.53",
@@ -6715,7 +6604,6 @@
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
- "peer": true,
"requires": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -6725,8 +6613,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "peer": true
+ "dev": true
}
}
},
@@ -6740,7 +6627,6 @@
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
- "peer": true,
"requires": {
"estraverse": "^5.2.0"
},
@@ -6749,8 +6635,7 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "peer": true
+ "dev": true
}
}
},
@@ -6768,8 +6653,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"esutils": {
"version": "1.0.0",
@@ -6799,8 +6683,7 @@
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true,
- "peer": true
+ "dev": true
},
"ext": {
"version": "1.4.0",
@@ -6821,15 +6704,13 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true,
- "peer": true
+ "dev": true
},
"fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true,
- "peer": true
+ "dev": true
},
"fast-levenshtein": {
"version": "2.0.6",
@@ -6952,8 +6833,7 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true,
- "peer": true
+ "dev": true
},
"globals": {
"version": "11.12.0",
@@ -7109,7 +6989,6 @@
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
"integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
- "peer": true,
"requires": {
"@types/node": "*",
"merge-stream": "^2.0.0",
@@ -7120,15 +6999,13 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
- "peer": true,
"requires": {
"has-flag": "^4.0.0"
}
@@ -7138,7 +7015,8 @@
"jquery": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
- "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+ "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==",
+ "peer": true
},
"jquery-knob-chif": {
"version": "1.2.13",
@@ -7203,15 +7081,13 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"json5": {
"version": "2.2.1",
@@ -7275,8 +7151,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"loader-utils": {
"version": "2.0.0",
@@ -7341,8 +7216,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"mime-db": {
"version": "1.52.0",
@@ -7523,8 +7397,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true,
- "peer": true
+ "dev": true
},
"quote-stream": {
"version": "1.0.2",
@@ -7541,7 +7414,6 @@
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
- "peer": true,
"requires": {
"safe-buffer": "^5.1.0"
}
@@ -7559,6 +7431,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
"integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
"dev": true,
+ "peer": true,
"requires": {
"loose-envify": "^1.1.0"
}
@@ -7672,6 +7545,7 @@
"resolved": "https://registry.npmjs.org/sass/-/sass-1.55.0.tgz",
"integrity": "sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==",
"dev": true,
+ "peer": true,
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -7707,7 +7581,6 @@
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
- "peer": true,
"requires": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
@@ -7744,7 +7617,6 @@
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
"dev": true,
- "peer": true,
"requires": {
"randombytes": "^2.1.0"
}
@@ -7794,7 +7666,6 @@
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
- "peer": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -7804,8 +7675,7 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "peer": true
+ "dev": true
}
}
},
@@ -7962,8 +7832,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"tempusdominus-bootstrap-4": {
"version": "5.39.0",
@@ -7981,7 +7850,6 @@
"version": "5.19.0",
"resolved": "https://registry.npmjs.org/tempusdominus-core/-/tempusdominus-core-5.19.0.tgz",
"integrity": "sha512-7a4oBQw4cjz6C87BLRg3KHVvzpnPlnRTkuDZ7SwcJayQQ4QgOryX5u6wj0q07TXhgtMQLCntZO6nVhHIKPaeUw==",
- "peer": true,
"requires": {
"jquery": "^3.5.0",
"moment": "~2.24.0",
@@ -7991,8 +7859,7 @@
"moment": {
"version": "2.24.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
- "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==",
- "peer": true
+ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
}
}
},
@@ -8001,7 +7868,6 @@
"resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz",
"integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==",
"dev": true,
- "peer": true,
"requires": {
"@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
@@ -8013,8 +7879,7 @@
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
"integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
- "dev": true,
- "peer": true
+ "dev": true
}
}
},
@@ -8023,7 +7888,6 @@
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz",
"integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==",
"dev": true,
- "peer": true,
"requires": {
"@jridgewell/trace-mapping": "^0.3.14",
"jest-worker": "^27.4.5",
@@ -8142,7 +8006,6 @@
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
- "peer": true,
"requires": {
"punycode": "^2.1.0"
}
@@ -8157,6 +8020,7 @@
"resolved": "https://registry.npmjs.org/vite/-/vite-3.1.7.tgz",
"integrity": "sha512-5vCAmU4S8lyVdFCInu9M54f/g8qbOMakVw5xJ4pjoaDy5wgy9sLLZkGdSLN52dlsBqh0tBqxjaqqa8LgPqwRAA==",
"dev": true,
+ "peer": true,
"requires": {
"esbuild": "^0.15.9",
"fsevents": "~2.3.2",
@@ -8194,7 +8058,6 @@
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
"integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
"dev": true,
- "peer": true,
"requires": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -8205,7 +8068,6 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz",
"integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==",
"dev": true,
- "peer": true,
"requires": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^0.0.51",
@@ -8245,7 +8107,6 @@
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
"dev": true,
- "peer": true,
"requires": {}
}
}
@@ -8254,8 +8115,7 @@
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"which": {
"version": "2.0.2",
diff --git a/public/images/background.jpg b/public/images/background.jpg
new file mode 100644
index 00000000..087feac4
Binary files /dev/null and b/public/images/background.jpg differ
diff --git a/resources/views/absensi/create.blade.php b/resources/views/absensi/create.blade.php
new file mode 100644
index 00000000..8f550381
--- /dev/null
+++ b/resources/views/absensi/create.blade.php
@@ -0,0 +1,58 @@
+@extends('layouts.admin')
+
+@section('content')
+
+
Tambah Data Absensi
+
+
+@endsection
diff --git a/resources/views/absensi/edit.blade.php b/resources/views/absensi/edit.blade.php
new file mode 100644
index 00000000..0bf1831d
--- /dev/null
+++ b/resources/views/absensi/edit.blade.php
@@ -0,0 +1,113 @@
+@extends('layouts.admin')
+
+@section('content')
+
+
+
+
+
Edit Data Absensi
+
+
+
+
+@endsection
diff --git a/resources/views/absensi/index.blade.php b/resources/views/absensi/index.blade.php
new file mode 100644
index 00000000..557a9953
--- /dev/null
+++ b/resources/views/absensi/index.blade.php
@@ -0,0 +1,257 @@
+@extends('layouts.admin')
+
+@section('title', 'Absensi Pegawai - Deeen Coffee')
+
+@section('css')
+
+@endsection
+
+@section('content')
+
+
+ {{-- Title --}}
+
+
+ {{-- Filter Periode --}}
+
+
+
+
+
+
+
+
+ {{-- Headbar --}}
+
+
+ {{-- Action --}}
+
+
+ {{-- Table --}}
+
+
+
+
+ | NO |
+ ID ABSENSI |
+ STATUS |
+ SHIFT |
+ AKSI |
+
+
+
+
+ @forelse ($absensis as $absensi)
+
+ | {{ $loop->iteration + ($absensis->currentPage() - 1) * $absensis->perPage() }} |
+ {{ $absensi->id_absensi }} |
+
+ {{-- STATUS --}}
+
+ @if(Str::lower($absensi->status) === 'hadir')
+ Hadir
+ @else
+ {{ ucfirst($absensi->status) }}
+ @endif
+ |
+
+ {{-- SHIFT --}}
+
+ @php
+ $shift = strtolower($absensi->shift);
+ @endphp
+
+ @if($shift === 'pagi')
+ Pagi
+ @elseif($shift === 'siang')
+ Siang
+ @elseif($shift === 'malam')
+ Malam
+ @else
+ -
+ @endif
+ |
+
+ {{-- Aksi --}}
+
+ Ubah
+
+
+
+
+ Detail
+
+ |
+
+
+ @empty
+
+ | Data tidak ditemukan. |
+
+ @endforelse
+
+
+
+
+
+@endsection
+
+@section('js')
+
+@endsection
diff --git a/resources/views/absensi/show.blade.php b/resources/views/absensi/show.blade.php
new file mode 100644
index 00000000..4b4e159f
--- /dev/null
+++ b/resources/views/absensi/show.blade.php
@@ -0,0 +1,48 @@
+@extends('layouts.admin')
+
+@section('title', 'Detail Absensi - Deeen Coffee')
+
+@section('css')
+
+@endsection
+
+@section('content')
+
+
+
+ @php
+ $tgl = \Carbon\Carbon::parse($absensi->tanggal)->format('Y-m-d');
+ $jm = \Carbon\Carbon::parse($absensi->jam_masuk)->format('H:i');
+ $jk = \Carbon\Carbon::parse($absensi->jam_keluar)->format('H:i');
+ @endphp
+
+
ID Absensi{{ $absensi->id_absensi }}
+
Pegawai ID{{ $absensi->pegawai_id }}
+
Tanggal{{ $tgl }}
+
Jam Masuk{{ $jm }}
+
Jam Keluar{{ $jk }}
+
Shift{{ $absensi->shift }}
+
Status{{ ucfirst($absensi->status) }}
+
+
+
+@endsection
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
index a40cf63b..2fc82793 100644
--- a/resources/views/auth/login.blade.php
+++ b/resources/views/auth/login.blade.php
@@ -1,74 +1,162 @@
@extends('layouts.auth')
-@section('css')
+@section('title', 'Login - Deeen Coffee')
+@section('css')
@endsection
@section('content')
-
Sign in to start your session
-
-