commit 24b67f78101ca44af9275ed2c17b4fcf4c49a8a9 Author: vchandra22 Date: Sun Apr 27 17:11:42 2025 +0700 feat: init laravel hospital app diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..35db1dd --- /dev/null +++ b/.env.example @@ -0,0 +1,65 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +APP_LOCALE=en +APP_FALLBACK_LOCALE=en +APP_FAKER_LOCALE=en_US + +APP_MAINTENANCE_DRIVER=file +# APP_MAINTENANCE_STORE=database + +PHP_CLI_SERVER_WORKERS=4 + +BCRYPT_ROUNDS=12 + +LOG_CHANNEL=stack +LOG_STACK=single +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=sqlite +# DB_HOST=127.0.0.1 +# DB_PORT=3306 +# DB_DATABASE=laravel +# DB_USERNAME=root +# DB_PASSWORD= + +SESSION_DRIVER=database +SESSION_LIFETIME=120 +SESSION_ENCRYPT=false +SESSION_PATH=/ +SESSION_DOMAIN=null + +BROADCAST_CONNECTION=log +FILESYSTEM_DISK=local +QUEUE_CONNECTION=database + +CACHE_STORE=database +# CACHE_PREFIX= + +MEMCACHED_HOST=127.0.0.1 + +REDIS_CLIENT=phpredis +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_SCHEME=null +MAIL_HOST=127.0.0.1 +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +VITE_APP_NAME="${APP_NAME}" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..f50f803 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +CHANGELOG.md export-ignore +README.md export-ignore diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..9f2ccc0 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,45 @@ +name: linter + +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main + +permissions: + contents: write + +jobs: + quality: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.4' + + - name: Install Dependencies + run: | + composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + npm install + + - name: Run Pint + run: vendor/bin/pint + + - name: Format Frontend + run: npm run format + + - name: Lint Frontend + run: npm run lint + + # - name: Commit Changes + # uses: stefanzweifel/git-auto-commit-action@v5 + # with: + # commit_message: fix code style + # commit_options: '--no-verify' diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..485e083 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,50 @@ +name: tests + +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main + +jobs: + ci: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 8.4 + tools: composer:v2 + coverage: xdebug + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '22' + cache: 'npm' + + - name: Install Node Dependencies + run: npm ci + + - name: Build Assets + run: npm run build + + - name: Install Dependencies + run: composer install --no-interaction --prefer-dist --optimize-autoloader + + - name: Copy Environment File + run: cp .env.example .env + + - name: Generate Application Key + run: php artisan key:generate + + - name: Tests + run: ./vendor/bin/phpunit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3847c0d --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +/.phpunit.cache +/bootstrap/ssr +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/storage/pail +/vendor +.env +.env.backup +.env.production +.phpactor.json +.phpunit.result.cache +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +/auth.json +/.fleet +/.idea +/.nova +/.vscode +/.zed diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..df954ec --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +resources/js/components/ui/* +resources/js/ziggy.js +resources/views/mail/* diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..f2264ac --- /dev/null +++ b/.prettierrc @@ -0,0 +1,18 @@ +{ + "semi": true, + "singleQuote": true, + "singleAttributePerLine": false, + "htmlWhitespaceSensitivity": "css", + "printWidth": 150, + "plugins": ["prettier-plugin-organize-imports", "prettier-plugin-tailwindcss"], + "tailwindFunctions": ["clsx", "cn"], + "tabWidth": 4, + "overrides": [ + { + "files": "**/*.yml", + "options": { + "tabWidth": 2 + } + } + ] +} diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php new file mode 100644 index 0000000..b4a48d9 --- /dev/null +++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php @@ -0,0 +1,51 @@ + Route::has('password.request'), + 'status' => $request->session()->get('status'), + ]); + } + + /** + * Handle an incoming authentication request. + */ + public function store(LoginRequest $request): RedirectResponse + { + $request->authenticate(); + + $request->session()->regenerate(); + + return redirect()->intended(route('dashboard', absolute: false)); + } + + /** + * Destroy an authenticated session. + */ + public function destroy(Request $request): RedirectResponse + { + Auth::guard('web')->logout(); + + $request->session()->invalidate(); + $request->session()->regenerateToken(); + + return redirect('/'); + } +} diff --git a/app/Http/Controllers/Auth/ConfirmablePasswordController.php b/app/Http/Controllers/Auth/ConfirmablePasswordController.php new file mode 100644 index 0000000..c729706 --- /dev/null +++ b/app/Http/Controllers/Auth/ConfirmablePasswordController.php @@ -0,0 +1,41 @@ +validate([ + 'email' => $request->user()->email, + 'password' => $request->password, + ])) { + throw ValidationException::withMessages([ + 'password' => __('auth.password'), + ]); + } + + $request->session()->put('auth.password_confirmed_at', time()); + + return redirect()->intended(route('dashboard', absolute: false)); + } +} diff --git a/app/Http/Controllers/Auth/EmailVerificationNotificationController.php b/app/Http/Controllers/Auth/EmailVerificationNotificationController.php new file mode 100644 index 0000000..f64fa9b --- /dev/null +++ b/app/Http/Controllers/Auth/EmailVerificationNotificationController.php @@ -0,0 +1,24 @@ +user()->hasVerifiedEmail()) { + return redirect()->intended(route('dashboard', absolute: false)); + } + + $request->user()->sendEmailVerificationNotification(); + + return back()->with('status', 'verification-link-sent'); + } +} diff --git a/app/Http/Controllers/Auth/EmailVerificationPromptController.php b/app/Http/Controllers/Auth/EmailVerificationPromptController.php new file mode 100644 index 0000000..672f7cf --- /dev/null +++ b/app/Http/Controllers/Auth/EmailVerificationPromptController.php @@ -0,0 +1,22 @@ +user()->hasVerifiedEmail() + ? redirect()->intended(route('dashboard', absolute: false)) + : Inertia::render('auth/verify-email', ['status' => $request->session()->get('status')]); + } +} diff --git a/app/Http/Controllers/Auth/NewPasswordController.php b/app/Http/Controllers/Auth/NewPasswordController.php new file mode 100644 index 0000000..0b4c6cb --- /dev/null +++ b/app/Http/Controllers/Auth/NewPasswordController.php @@ -0,0 +1,69 @@ + $request->email, + 'token' => $request->route('token'), + ]); + } + + /** + * Handle an incoming new password request. + * + * @throws \Illuminate\Validation\ValidationException + */ + public function store(Request $request): RedirectResponse + { + $request->validate([ + 'token' => 'required', + 'email' => 'required|email', + 'password' => ['required', 'confirmed', Rules\Password::defaults()], + ]); + + // Here we will attempt to reset the user's password. If it is successful we + // will update the password on an actual user model and persist it to the + // database. Otherwise we will parse the error and return the response. + $status = Password::reset( + $request->only('email', 'password', 'password_confirmation', 'token'), + function ($user) use ($request) { + $user->forceFill([ + 'password' => Hash::make($request->password), + 'remember_token' => Str::random(60), + ])->save(); + + event(new PasswordReset($user)); + } + ); + + // If the password was successfully reset, we will redirect the user back to + // the application's home authenticated view. If there is an error we can + // redirect them back to where they came from with their error message. + if ($status == Password::PasswordReset) { + return to_route('login')->with('status', __($status)); + } + + throw ValidationException::withMessages([ + 'email' => [__($status)], + ]); + } +} diff --git a/app/Http/Controllers/Auth/PasswordResetLinkController.php b/app/Http/Controllers/Auth/PasswordResetLinkController.php new file mode 100644 index 0000000..9fcfe49 --- /dev/null +++ b/app/Http/Controllers/Auth/PasswordResetLinkController.php @@ -0,0 +1,41 @@ + $request->session()->get('status'), + ]); + } + + /** + * Handle an incoming password reset link request. + * + * @throws \Illuminate\Validation\ValidationException + */ + public function store(Request $request): RedirectResponse + { + $request->validate([ + 'email' => 'required|email', + ]); + + Password::sendResetLink( + $request->only('email') + ); + + return back()->with('status', __('A reset link will be sent if the account exists.')); + } +} diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php new file mode 100644 index 0000000..db903e8 --- /dev/null +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -0,0 +1,51 @@ +validate([ + 'name' => 'required|string|max:255', + 'email' => 'required|string|lowercase|email|max:255|unique:'.User::class, + 'password' => ['required', 'confirmed', Rules\Password::defaults()], + ]); + + $user = User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password' => Hash::make($request->password), + ]); + + event(new Registered($user)); + + Auth::login($user); + + return to_route('dashboard'); + } +} diff --git a/app/Http/Controllers/Auth/VerifyEmailController.php b/app/Http/Controllers/Auth/VerifyEmailController.php new file mode 100644 index 0000000..a300bfa --- /dev/null +++ b/app/Http/Controllers/Auth/VerifyEmailController.php @@ -0,0 +1,30 @@ +user()->hasVerifiedEmail()) { + return redirect()->intended(route('dashboard', absolute: false).'?verified=1'); + } + + if ($request->user()->markEmailAsVerified()) { + /** @var \Illuminate\Contracts\Auth\MustVerifyEmail $user */ + $user = $request->user(); + + event(new Verified($user)); + } + + return redirect()->intended(route('dashboard', absolute: false).'?verified=1'); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..8677cd5 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,8 @@ + function($query) { + $query->select('id', 'name', 'email'); + }]) + ->orderBy('created_at', 'desc') + ->select([ + 'id', + 'user_id', + 'employee_id', + 'gender', + 'nik', + 'birth_date', + 'birth_place', + 'address', + 'phone_number', + 'join_date', + 'is_active', + 'created_at', + ]) + ->paginate(10) + ->through(function ($employee) { + return [ + 'id' => $employee->id, + 'employee_id' => $employee->employee_id, + 'name' => $employee->user->name, + 'email' => $employee->user->email, + 'nik' => $employee->nik, + 'birth_date' => $employee->birth_date, + 'birth_place' => $employee->birth_place, + 'address' => $employee->address, + 'gender' => $employee->gender, + 'phone_number' => $employee->phone_number, + 'join_date' => $employee->join_date->format('Y-m-d'), + 'is_active' => (bool) $employee->is_active, + 'created_at' => $employee->created_at->format('Y-m-d H:i:s'), + ]; + }); + + return Inertia::render('employees/index', [ + 'employees' => $employees, + 'status' => session('status'), + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return Inertia::render('employees/form', [ + 'mode' => 'create', + ]); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $validated = $request->validate([ + // Validasi untuk User + 'name' => 'required|string|max:255', + 'email' => 'required|email|unique:users', + 'password' => 'required|string|min:8', + + // Validasi untuk Employee + 'gender' => 'required|in:laki-laki,perempuan', + 'nik' => 'nullable|string|max:16', + 'birth_date' => 'required|date', + 'birth_place' => 'nullable|string|max:100', + 'address' => 'nullable|string|max:255', + 'phone_number' => 'nullable|string|max:15', + 'specialization' => 'nullable|string|max:100', + 'license_number' => 'nullable|string|max:50', + 'join_date' => 'required|date', + ]); + + DB::transaction(function () use ($validated) { + // Create User + $user = User::create([ + 'id' => Str::uuid(), + 'name' => $validated['name'], + 'email' => $validated['email'], + 'password' => Hash::make($validated['password']), + ]); + + // Create Employee + Employee::create([ + 'id' => Str::uuid(), + 'user_id' => $user->id, + 'gender' => $validated['gender'], + 'nik' => $validated['nik'] ?? null, + 'birth_date' => $validated['birth_date'], + 'birth_place' => $validated['birth_place'] ?? null, + 'address' => $validated['address'] ?? null, + 'phone_number' => $validated['phone_number'] ?? null, + 'specialization' => $validated['specialization'] ?? null, + 'license_number' => $validated['license_number'] ?? null, + 'join_date' => $validated['join_date'], + 'resign_date' => $validated['resign_date'] ?? null, + 'is_active' => true, + ]); + }); + + return redirect()->route('employees.index') + ->with('status', 'Berhasil membuat data pegawai'); + } + + /** + * Display the specified resource. + */ + public function show(Employee $employee) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Employee $employee) + { + return Inertia::render('employees/form', [ + 'mode' => 'edit', + 'employee' => [ + 'id' => $employee->id, + 'employee_id' => $employee->employee_id, + 'name' => $employee->user->name, + 'email' => $employee->user->email, + 'gender' => $employee->gender, + 'nik' => $employee->nik, + 'birth_date' => $employee->birth_date, + 'birth_place' => $employee->birth_place, + 'specialization' => $employee->specialization, + 'license_number' => $employee->license_number, + 'address' => $employee->address, + 'resign_date' => $employee->resign_date, + 'phone_number' => $employee->phone_number, + 'join_date' => $employee->join_date->format('Y-m-d'), + 'is_active' => $employee->is_active, + ], + ]); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Employee $employee) + { + $validated = $request->validate([ + // Validasi untuk User + 'name' => 'required|string|max:255', + 'email' => [ + 'required', + 'email', + Rule::unique('users')->ignore($employee->user_id) + ], + 'password' => 'nullable|string|min:8', // Diubah menjadi nullable untuk update + + // Validasi untuk Employee + 'employee_id' => 'required|string|max:50', + 'gender' => 'required|in:laki-laki,perempuan', + 'nik' => 'nullable|string|max:16', + 'birth_date' => 'required|date', + 'birth_place' => 'nullable|string|max:100', + 'address' => 'nullable|string|max:255', + 'phone_number' => 'nullable|string|max:15', + 'specialization' => 'nullable|string|max:100', + 'license_number' => 'nullable|string|max:50', + 'join_date' => 'required|date', + 'resign_date' => 'nullable|date', + 'is_active' => 'required|boolean', + ]); + + DB::transaction(function () use ($validated, $employee) { + // Update data user + $userData = [ + 'name' => $validated['name'], + 'email' => $validated['email'], + ]; + + // Hanya update password jika diisi + if (!empty($validated['password'])) { + $userData['password'] = Hash::make($validated['password']); + } + + $employee->user->update($userData); + + // Update data employee + $employee->update([ + 'employee_id' => $validated['employee_id'], + 'gender' => $validated['gender'], + 'nik' => $validated['nik'], + 'birth_date' => $validated['birth_date'], + 'birth_place' => $validated['birth_place'], + 'address' => $validated['address'], + 'phone_number' => $validated['phone_number'], + 'specialization' => $validated['specialization'], + 'license_number' => $validated['license_number'], + 'join_date' => $validated['join_date'], + 'resign_date' => $validated['resign_date'], + 'is_active' => $validated['is_active'], + ]); + }); + + return redirect()->route('employees.index') + ->with('success', 'Data pegawai telah diperbaharui'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Employee $employee) + { + DB::transaction(function () use ($employee) { + $employee->user()->delete(); + $employee->delete(); + }); + + return redirect()->route('employees.index') + ->with('status', 'Data pegawai berhasil dihapus'); + } +} diff --git a/app/Http/Controllers/InsuranceController.php b/app/Http/Controllers/InsuranceController.php new file mode 100644 index 0000000..e5ad1cf --- /dev/null +++ b/app/Http/Controllers/InsuranceController.php @@ -0,0 +1,211 @@ +select([ + 'id', + 'code', + 'name', + 'phone_number', + 'contact_person', + 'coverage_percentage', + 'agreement_start_date', + 'agreement_end_date', + 'is_active', + 'created_at', + ]) + ->paginate(10) + ->through(function ($insurance) { + return [ + 'id' => $insurance->id, + 'code' => $insurance->code, + 'name' => $insurance->name, + 'phone_number' => $insurance->phone_number, + 'contact_person' => $insurance->contact_person, + 'coverage_percentage' => (float) $insurance->coverage_percentage, + 'agreement_period' => $insurance->agreement_start_date + ? $insurance->agreement_start_date->format('d/m/Y') . ' - ' + . ($insurance->agreement_end_date ? $insurance->agreement_end_date->format('d/m/Y') : 'Sekarang') + : '-', + 'is_active' => (bool) $insurance->is_active, + 'created_at' => $insurance->created_at->format('d/m/Y H:i'), + ]; + }); + + return Inertia::render('insurances/index', [ + 'insurances' => $insurances, + 'status' => session('status'), + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return Inertia::render('insurances/form', [ + 'mode' => 'create', + 'defaults' => [ + 'coverage_percentage' => 100.00, + 'is_active' => true + ] + ]); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $validated = $request->validate([ + 'code' => 'required|string|max:20|unique:m_insurance,code', + 'name' => 'required|string|max:100', + 'address' => 'nullable|string|max:255', + 'phone_number' => 'nullable|string|max:15', + 'email' => 'nullable|email|max:100', + 'contact_person' => 'nullable|string|max:100', + 'contact_person_phone' => 'nullable|string|max:15', + 'coverage_percentage' => 'required|numeric|between:0,100', + 'coverage_description' => 'nullable|string', + 'agreement_details' => 'nullable|string', + 'agreement_start_date' => 'nullable|date', + 'agreement_end_date' => 'nullable|date|after_or_equal:agreement_start_date', + 'agreement_file_path' => 'nullable|file|mimes:pdf,doc,docx|max:2048', + 'is_active' => 'required|boolean' + ]); + + DB::transaction(function () use ($validated, $request) { + $insuranceData = $validated; + + // Handle file upload + if ($request->hasFile('agreement_file')) { + $file = $request->file('agreement_file'); + $fileName = 'agreement_' . time() . '_' . $validated['code'] . '.' . $file->getClientOriginalExtension(); + + // Simpan file ke folder public/insurance_agreements + $path = $file->storeAs('insurance_agreements', $fileName, 'public'); + + $insuranceData['agreement_file_path'] = $path; + } + + Insurance::create($insuranceData); + }); + + return redirect()->route('insurances.index') + ->with('status', 'Asuransi berhasil ditambahkan'); + } + + /** + * Display the specified resource. + */ + public function show(Insurance $insurance) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Insurance $insurance) + { + return Inertia::render('insurances/form', [ + 'mode' => 'edit', + 'insurance' => [ + 'id' => $insurance->id, + 'code' => $insurance->code, + 'name' => $insurance->name, + 'address' => $insurance->address, + 'phone_number' => $insurance->phone_number, + 'email' => $insurance->email, + 'contact_person' => $insurance->contact_person, + 'contact_person_phone' => $insurance->contact_person_phone, + 'coverage_percentage' => (float) $insurance->coverage_percentage, + 'coverage_description' => $insurance->coverage_description, + 'agreement_details' => $insurance->agreement_details, + 'agreement_start_date' => $insurance->agreement_start_date?->format('Y-m-d'), + 'agreement_end_date' => $insurance->agreement_end_date?->format('Y-m-d'), + 'agreement_file_path' => $insurance->agreement_file_path, + 'is_active' => $insurance->is_active + ] + ]); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Insurance $insurance) + { + $validated = $request->validate([ + 'code' => [ + 'required', + 'string', + 'max:20', + Rule::unique('m_insurance', 'code')->ignore($insurance->id) + ], + 'name' => 'required|string|max:100', + 'address' => 'nullable|string|max:255', + 'phone_number' => 'nullable|string|max:15', + 'email' => 'nullable|email|max:100', + 'contact_person' => 'nullable|string|max:100', + 'contact_person_phone' => 'nullable|string|max:15', + 'coverage_percentage' => 'required|numeric|between:0,100', + 'coverage_description' => 'nullable|string', + 'agreement_details' => 'nullable|string', + 'agreement_start_date' => 'nullable|date', + 'agreement_end_date' => 'nullable|date|after_or_equal:agreement_start_date', + 'agreement_file_path' => 'nullable|file|mimes:pdf,doc,docx|max:2048', + 'is_active' => 'required|boolean' + ]); + + DB::transaction(function () use ($validated, $request, $insurance) { + $updateData = $validated; + + // Handle file upload jika ada file baru + if ($request->hasFile('agreement_file')) { + // Hapus file lama jika ada + if ($insurance->agreement_file_path) { + Storage::disk('public')->delete($insurance->agreement_file_path); + } + + $file = $request->file('agreement_file'); + $fileName = 'agreement_' . time() . '_' . $validated['code'] . '.' . $file->getClientOriginalExtension(); + $path = $file->storeAs('insurance_agreements', $fileName, 'public'); + + $updateData['agreement_file_path'] = $path; + } + + $insurance->update($updateData); + }); + + return redirect()->route('insurances.index') + ->with('status', 'Data asuransi berhasil diperbarui'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Insurance $insurance) + { + DB::transaction(function () use ($insurance) { + $insurance->delete(); + }); + + return redirect()->route('insurances.index') + ->with('status', 'Asuransi berhasil dihapus'); + } +} diff --git a/app/Http/Controllers/PatientController.php b/app/Http/Controllers/PatientController.php new file mode 100644 index 0000000..51d5078 --- /dev/null +++ b/app/Http/Controllers/PatientController.php @@ -0,0 +1,178 @@ +select([ + 'id', + 'medical_record_number', + 'name', + 'gender', + 'nik', + 'birth_date', + 'birth_place', + 'phone_number', + 'blood_type', + 'religion', + 'is_active', + 'created_at', + ]) + ->paginate(10) + ->through(function ($patient) { + return [ + 'id' => $patient->id, + 'medical_record_number' => $patient->medical_record_number, + 'name' => $patient->name, + 'gender' => $patient->gender, + 'nik' => $patient->nik, + 'birth_date' => $patient->birth_date->format('Y-m-d'), + 'birth_place' => $patient->birth_place, + 'phone_number' => $patient->phone_number, + 'blood_type' => $patient->blood_type, + 'religion' => $patient->religion, + 'is_active' => (bool) $patient->is_active, + 'created_at' => $patient->created_at->format('Y-m-d H:i:s'), + ]; + }); + + return Inertia::render('patients/index', [ + 'patients' => $patients, + 'status' => session('status'), + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create(): Response + { + return Inertia::render('patients/form', [ + 'mode' => 'create', + ]); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $validated = $request->validate([ + 'name' => 'required|string|max:100', + 'gender' => 'required|in:laki-laki,perempuan', + 'nik' => 'nullable|string|size:16|unique:m_patient,nik', + 'birth_date' => 'required|date', + 'birth_place' => 'nullable|string|max:100', + 'address' => 'nullable|string|max:255', + 'phone_number' => 'nullable|string|max:15', + 'email' => 'nullable|email|max:100|unique:m_patient,email', + 'blood_type' => 'nullable|in:A,B,AB,O,unknown', + 'religion' => 'nullable|in:islam,kristen,katolik,hindu,budha,konghucu,other', + 'marital_status' => 'nullable|in:lajang,menikah,cerai,duda/janda', + 'emergency_contact_name' => 'nullable|string|max:100', + 'emergency_contact_phone' => 'nullable|string|max:15', + 'emergency_contact_relation' => 'nullable|string|max:100', + ]); + + DB::transaction(function () use ($validated) { + Patient::create($validated); + }); + + return redirect()->route('patients.index') + ->with('status', 'Pasien berhasil ditambahkan'); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Patient $patient): Response + { + return Inertia::render('patients/form', [ + 'mode' => 'edit', + 'patient' => [ + 'id' => $patient->id, + 'medical_record_number' => $patient->medical_record_number, + 'name' => $patient->name, + 'gender' => $patient->gender, + 'nik' => $patient->nik, + 'birth_date' => $patient->birth_date->format('Y-m-d'), + 'birth_place' => $patient->birth_place, + 'address' => $patient->address, + 'phone_number' => $patient->phone_number, + 'email' => $patient->email, + 'blood_type' => $patient->blood_type, + 'religion' => $patient->religion, + 'marital_status' => $patient->marital_status, + 'emergency_contact_name' => $patient->emergency_contact_name, + 'emergency_contact_phone' => $patient->emergency_contact_phone, + 'emergency_contact_relation' => $patient->emergency_contact_relation, + 'is_active' => $patient->is_active, + ], + ]); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Patient $patient) + { + $validated = $request->validate([ + 'name' => 'required|string|max:100', + 'gender' => 'required|in:laki-laki,perempuan', + 'nik' => [ + 'nullable', + 'string', + 'size:16', + Rule::unique('m_patient', 'nik')->ignore($patient->id) + ], + 'birth_date' => 'required|date', + 'birth_place' => 'nullable|string|max:100', + 'address' => 'nullable|string|max:255', + 'phone_number' => 'nullable|string|max:15', + 'email' => [ + 'nullable', + 'email', + 'max:100', + Rule::unique('m_patient', 'email')->ignore($patient->id) + ], + 'blood_type' => 'nullable|in:A,B,AB,O,unknown', + 'religion' => 'nullable|in:islam,kristen,katolik,hindu,budha,konghucu,other', + 'marital_status' => 'nullable|in:lajang,menikah,cerai,duda/janda', + 'emergency_contact_name' => 'nullable|string|max:100', + 'emergency_contact_phone' => 'nullable|string|max:15', + 'emergency_contact_relation' => 'nullable|string|max:100', + 'is_active' => 'required|boolean', + ]); + + DB::transaction(function () use ($validated, $patient) { + $patient->update($validated); + }); + + return redirect()->route('patients.index') + ->with('status', 'Data pasien berhasil diperbarui'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Patient $patient) + { + $patient->delete(); + + return redirect()->route('patients.index') + ->with('status', 'Pasien berhasil dihapus'); + } +} diff --git a/app/Http/Controllers/ProcedureController.php b/app/Http/Controllers/ProcedureController.php new file mode 100644 index 0000000..bdc6c09 --- /dev/null +++ b/app/Http/Controllers/ProcedureController.php @@ -0,0 +1,186 @@ +select([ + 'id', + 'code', + 'name', + 'category', + 'base_price', + 'is_taxable', + 'tax_percentage', + 'requires_approval', + 'is_active', + 'created_at' + ]) + ->paginate(10) + ->through(function ($procedure) { + return [ + 'id' => $procedure->id, + 'code' => $procedure->code, + 'name' => $procedure->name, + 'category' => $procedure->category, + 'price' => 'Rp ' . number_format($procedure->base_price, 2), + 'tax' => $procedure->is_taxable ? $procedure->tax_percentage . '%' : 'Non-Pajak', + 'approval' => $procedure->requires_approval ? 'Perlu' : 'Tidak', + 'status' => $procedure->is_active ? 'Aktif' : 'Non-Aktif', + 'created_at' => $procedure->created_at->format('d/m/Y H:i') + ]; + }); + + return Inertia::render('procedures/index', [ + 'procedures' => $procedures, + 'status' => session('status') + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return Inertia::render('procedures/form', [ + 'mode' => 'create', + 'categories' => [ + 'Konsultasi', + 'Pemeriksaan', + 'Tindakan', + 'Operasi', + 'Laboratorium', + 'Radiologi', + 'Obat', + 'Lainnya' + ], + 'defaults' => [ + 'is_taxable' => true, + 'tax_percentage' => 10.00, + 'is_discountable' => true, + 'requires_approval' => false, + 'is_active' => true + ] + ]); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $validated = $request->validate([ + 'code' => 'required|string|max:20|unique:m_procedure,code', + 'name' => 'required|string|max:100', + 'category' => [ + 'required', + Rule::in(Procedure::getCategories()) + ], + 'description' => 'nullable|string', + 'base_price' => 'required|numeric|min:0', + 'is_taxable' => 'required|boolean', + 'tax_percentage' => 'required_if:is_taxable,true|numeric|between:0,100', + 'is_discountable' => 'required|boolean', + 'requires_approval' => 'required|boolean', + 'is_active' => 'required|boolean' + ]); + + DB::transaction(function () use ($validated) { + Procedure::create($validated); + }); + + return redirect()->route('procedures.index') + ->with('status', 'Prosedur berhasil ditambahkan'); + } + + /** + * Display the specified resource. + */ + public function show(Procedure $procedure) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Procedure $procedure) + { + return Inertia::render('procedures/form', [ + 'mode' => 'edit', + 'procedure' => [ + 'id' => $procedure->id, + 'code' => $procedure->code, + 'name' => $procedure->name, + 'category' => $procedure->category, + 'description' => $procedure->description, + 'base_price' => $procedure->base_price, + 'is_taxable' => $procedure->is_taxable, + 'tax_percentage' => $procedure->tax_percentage, + 'is_discountable' => $procedure->is_discountable, + 'requires_approval' => $procedure->requires_approval, + 'is_active' => $procedure->is_active + ], + 'categories' => Procedure::getCategories() + ]); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Procedure $procedure) + { + $validated = $request->validate([ + 'code' => [ + 'required', + 'string', + 'max:20', + Rule::unique('m_procedure', 'code')->ignore($procedure->id) + ], + 'name' => 'required|string|max:100', + 'category' => [ + 'required', + Rule::in(Procedure::getCategories()) + ], + 'description' => 'nullable|string', + 'base_price' => 'required|numeric|min:0', + 'is_taxable' => 'required|boolean', + 'tax_percentage' => 'required_if:is_taxable,true|numeric|between:0,100', + 'is_discountable' => 'required|boolean', + 'requires_approval' => 'required|boolean', + 'is_active' => 'required|boolean' + ]); + + DB::transaction(function () use ($validated, $procedure) { + $procedure->update($validated); + }); + + return redirect()->route('procedures.index') + ->with('status', 'Data prosedur berhasil diperbarui'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Procedure $procedure) + { + DB::transaction(function () use ($procedure) { + $procedure->delete(); + }); + + return redirect()->route('procedures.index') + ->with('status', 'Prosedur berhasil dihapus'); + } +} diff --git a/app/Http/Controllers/RegistrationController.php b/app/Http/Controllers/RegistrationController.php new file mode 100644 index 0000000..f681b57 --- /dev/null +++ b/app/Http/Controllers/RegistrationController.php @@ -0,0 +1,263 @@ +orderBy('registration_datetime', 'desc') + ->select([ + 'id', + 'registration_number', + 'patient_id', + 'employee_id', + 'service_room_id', + 'insurance_id', + 'created_by', + 'registration_type', + 'patient_type', + 'registration_datetime', + 'discharge_datetime', + 'status', + 'payment_status', + 'is_active', + 'created_at' + ]) + ->paginate(10) + ->through(function ($registration) { + return [ + 'id' => $registration->id, + 'registration_number' => $registration->registration_number, + 'patient_name' => $registration->patient->name, + 'employee_name' => $registration->employee->user->name, + 'service_room_name' => $registration->serviceRoom->name, + 'insurance_name' => $registration->insurance?->name, + 'registration_type' => $registration->registration_type, + 'patient_type' => $registration->patient_type, + 'registration_datetime' => $registration->registration_datetime->format('Y-m-d H:i'), + 'discharge_datetime' => $registration->discharge_datetime?->format('Y-m-d H:i'), + 'status' => $registration->status, + 'payment_status' => $registration->payment_status, + 'is_active' => (bool) $registration->is_active, + 'created_at' => $registration->created_at->format('Y-m-d H:i:s'), + ]; + }); + + return Inertia::render('registrations/index', [ + 'registrations' => $registrations, + 'status' => session('status'), + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + $patients = Patient::select(['id', 'name'])->get(); + $employees = Employee::with('user:id,name')->get()->map(function ($employee) { + return [ + 'id' => $employee->id, + 'name' => $employee->user->name + ]; + }); + $serviceRooms = ServiceRoom::select(['id', 'name'])->get(); + $insurances = Insurance::select(['id', 'name'])->get(); + + return Inertia::render('registrations/form', [ + 'mode' => 'create', + 'patients' => $patients, + 'employees' => $employees, + 'serviceRooms' => $serviceRooms, + 'insurances' => $insurances, + 'registrationTypes' => ['Rawat Jalan', 'Rawat Inap', 'UGD'], + 'patientTypes' => ['Umum', 'BPJS', 'Asuransi', 'Perusahaan', 'Gratis'], + ]); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $validated = $request->validate([ + 'patient_id' => 'required|exists:m_patient,id', + 'employee_id' => 'required|exists:m_employee,id', + 'service_room_id' => 'required|exists:m_service_room,id', + 'insurance_id' => 'nullable|exists:m_insurance,id', + 'registration_type' => 'required|in:Rawat Jalan,Rawat Inap,UGD', + 'patient_type' => 'required|in:Umum,BPJS,Asuransi,Perusahaan,Gratis', + 'registration_datetime' => 'required|date', + 'estimated_discharge' => 'nullable|date|after:registration_datetime', + 'complaint' => 'required|string|max:500', + 'is_referral' => 'boolean', + 'referral_from' => 'nullable|required_if:is_referral,true|string|max:100', + 'need_icu' => 'boolean', + ]); + + DB::transaction(function () use ($validated) { + $registrationNumber = $this->generateRegistrationNumber($validated['registration_type']); + + Registration::create([ + 'registration_number' => $registrationNumber, + 'patient_id' => $validated['patient_id'], + 'employee_id' => $validated['employee_id'], + 'service_room_id' => $validated['service_room_id'], + 'insurance_id' => $validated['insurance_id'] ?? null, + 'created_by' => auth()->id(), + 'registration_type' => $validated['registration_type'], + 'patient_type' => $validated['patient_type'], + 'registration_datetime' => $validated['registration_datetime'], + 'estimated_discharge' => $validated['estimated_discharge'] ?? null, + 'complaint' => $validated['complaint'], + 'is_referral' => $validated['is_referral'] ?? false, + 'referral_from' => $validated['referral_from'] ?? null, + 'need_icu' => $validated['need_icu'] ?? false, + ]); + }); + + return redirect()->route('registrations.index') + ->with('status', 'Pendaftaran berhasil dibuat'); + } + + /** + * Display the specified resource. + */ + public function show(Registration $registration) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Registration $registration) + { + $patients = Patient::select(['id', 'name'])->get(); + $employees = Employee::with('user:id,name')->get()->map(function ($employee) { + return [ + 'id' => $employee->id, + 'name' => $employee->user->name + ]; + }); + $serviceRooms = ServiceRoom::select(['id', 'name'])->get(); + $insurances = Insurance::select(['id', 'name'])->get(); + + return Inertia::render('registrations/form', [ + 'mode' => 'edit', + 'registration' => [ + 'id' => $registration->id, + 'patient_id' => $registration->patient_id, + 'employee_id' => $registration->employee_id, + 'service_room_id' => $registration->service_room_id, + 'insurance_id' => $registration->insurance_id, + 'registration_type' => $registration->registration_type, + 'patient_type' => $registration->patient_type, + 'registration_datetime' => $registration->registration_datetime->format('Y-m-d\TH:i'), + 'estimated_discharge' => $registration->estimated_discharge?->format('Y-m-d\TH:i'), + 'complaint' => $registration->complaint, + 'medical_notes' => $registration->medical_notes, + 'diagnoses' => $registration->diagnoses, + 'prescriptions' => $registration->prescriptions, + 'status' => $registration->status, + 'payment_status' => $registration->payment_status, + 'is_referral' => (bool) $registration->is_referral, + 'referral_from' => $registration->referral_from, + 'need_icu' => (bool) $registration->need_icu, + 'is_active' => (bool) $registration->is_active, + ], + 'patients' => $patients, + 'employees' => $employees, + 'serviceRooms' => $serviceRooms, + 'insurances' => $insurances, + 'registrationTypes' => ['Rawat Jalan', 'Rawat Inap', 'UGD'], + 'patientTypes' => ['Umum', 'BPJS', 'Asuransi', 'Perusahaan', 'Gratis'], + 'statusOptions' => ['registered', 'in_progress', 'completed', 'cancelled'], + 'paymentStatusOptions' => ['unpaid', 'partial', 'paid', 'insurance_cover'], + ]); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Registration $registration) + { + $validated = $request->validate([ + 'patient_id' => 'required|exists:m_patient,id', + 'employee_id' => 'required|exists:m_employee,id', + 'service_room_id' => 'required|exists:m_service_room,id', + 'insurance_id' => 'nullable|exists:m_insurance,id', + 'registration_type' => 'required|in:Rawat Jalan,Rawat Inap,UGD', + 'patient_type' => 'required|in:Umum,BPJS,Asuransi,Perusahaan,Gratis', + 'registration_datetime' => 'required|date', + 'estimated_discharge' => 'nullable|date|after:registration_datetime', + 'complaint' => 'required|string|max:500', + 'medical_notes' => 'nullable|string', + 'diagnoses' => 'nullable|array', + 'prescriptions' => 'nullable|array', + 'status' => 'required|in:registered,in_progress,completed,cancelled', + 'payment_status' => 'required|in:unpaid,partial,paid,insurance_cover', + 'is_referral' => 'boolean', + 'referral_from' => 'nullable|required_if:is_referral,true|string|max:100', + 'need_icu' => 'boolean', + 'is_active' => 'boolean', + ]); + + $registration->update($validated); + + return redirect()->route('registrations.index') + ->with('status', 'Data pendaftaran berhasil diperbarui'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Registration $registration) + { + $registration->delete(); + + return redirect()->route('registrations.index') + ->with('status', 'Data pendaftaran berhasil dihapus'); + } + + private function generateRegistrationNumber(string $type): string + { + $prefix = match($type) { + 'Rawat Inap' => 'RI', + 'UGD' => 'UGD', + default => 'RJ' + }; + + $datePart = now()->format('Ymd'); + $lastNumber = Registration::where('registration_number', 'like', "{$prefix}-{$datePart}-%") + ->orderBy('registration_number', 'desc') + ->first(); + + $sequence = $lastNumber + ? (int) substr($lastNumber->registration_number, -3) + 1 + : 1; + + return sprintf('%s-%s-%03d', $prefix, $datePart, $sequence); + } +} diff --git a/app/Http/Controllers/ServiceRoomController.php b/app/Http/Controllers/ServiceRoomController.php new file mode 100644 index 0000000..07e31f2 --- /dev/null +++ b/app/Http/Controllers/ServiceRoomController.php @@ -0,0 +1,214 @@ +select([ + 'id', + 'code', + 'name', + 'type', + 'class', + 'floor', + 'building', + 'capacity', + 'price_per_day', + 'is_available', + 'is_active', + 'created_at' + ]) + ->paginate(10) + ->through(function ($room) { + return [ + 'id' => $room->id, + 'code' => $room->code, + 'name' => $room->name, + 'type' => $room->type_name, + 'class' => $room->class_name, + 'location' => implode(', ', array_filter([ + $room->floor ? 'Lt. '.$room->floor : null, + $room->building, + $room->wing + ])), + 'capacity' => $room->capacity, + 'price' => $room->price_per_day ? 'Rp. '.number_format($room->price_per_day, 2) : '-', + 'status' => $room->is_available ? 'Tersedia' : 'Terpakai', + 'is_active' => $room->is_active, + 'created_at' => $room->created_at->format('d/m/Y H:i') + ]; + }); + + return Inertia::render('servicerooms/index', [ + 'rooms' => $rooms, + 'status' => session('status') + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return Inertia::render('servicerooms/form', [ + 'mode' => 'create', + 'roomTypes' => ServiceRoom::getRoomTypes(), + 'roomClasses' => ServiceRoom::getRoomClasses() + ]); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $validated = $request->validate([ + 'code' => 'required|string|max:20|unique:m_service_room,code', + 'name' => 'required|string|max:100', + 'type' => [ + 'required', + Rule::in([ + 'Rawat Jalan', + 'Rawat Inap', + 'UGD', + 'ICU', + 'Bedah', + 'Persalinan', + 'Radiologi', + 'Laboratorium', + 'Farmasi', + 'Lainnya' + ]) + ], + 'class' => [ + 'required', + Rule::in(['vip', 'class_1', 'class_2', 'class_3', 'standard', 'non_class']) + ], + 'floor' => 'nullable|string|max:10', + 'building' => 'nullable|string|max:50', + 'wing' => 'nullable|string|max:50', + 'capacity' => 'required|integer|min:1', + 'price_per_day' => 'nullable|numeric|min:0', + 'facilities' => 'nullable|string', + 'is_available' => 'required|boolean', + 'is_active' => 'required|boolean' + ]); + + DB::transaction(function () use ($validated) { + ServiceRoom::create($validated); + }); + + return redirect()->route('room-services.index') + ->with('status', 'Ruangan berhasil ditambahkan'); + } + + /** + * Display the specified resource. + */ + public function show(ServiceRoom $serviceRoom) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(ServiceRoom $serviceRoom) + { + return Inertia::render('servicerooms/form', [ + 'mode' => 'edit', + 'room' => [ + 'id' => $serviceRoom->id, + 'code' => $serviceRoom->code, + 'name' => $serviceRoom->name, + 'type' => $serviceRoom->type, + 'class' => $serviceRoom->class, + 'floor' => $serviceRoom->floor, + 'building' => $serviceRoom->building, + 'wing' => $serviceRoom->wing, + 'capacity' => $serviceRoom->capacity, + 'price_per_day' => $serviceRoom->price_per_day, + 'facilities' => $serviceRoom->facilities, + 'is_available' => $serviceRoom->is_available, + 'is_active' => $serviceRoom->is_active + ], + 'roomTypes' => ServiceRoom::getRoomTypes(), + 'roomClasses' => ServiceRoom::getRoomClasses() + ]); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, ServiceRoom $serviceRoom) + { + $validated = $request->validate([ + 'code' => [ + 'required', + 'string', + 'max:20', + Rule::unique('m_service_room', 'code')->ignore($serviceRoom->id) + ], + 'name' => 'required|string|max:100', + 'type' => [ + 'required', + Rule::in([ + 'Rawat Jalan', + 'Rawat Inap', + 'UGD', + 'ICU', + 'Bedah', + 'Persalinan', + 'Radiologi', + 'Laboratorium', + 'Farmasi', + 'Lainnya' + ]) + ], + 'class' => [ + 'required', + Rule::in(['vip', 'class_1', 'class_2', 'class_3', 'standard', 'non_class']) + ], + 'floor' => 'nullable|string|max:10', + 'building' => 'nullable|string|max:50', + 'wing' => 'nullable|string|max:50', + 'capacity' => 'required|integer|min:1', + 'price_per_day' => 'nullable|numeric|min:0', + 'facilities' => 'nullable|string', + 'is_available' => 'required|boolean', + 'is_active' => 'required|boolean' + ]); + + DB::transaction(function () use ($validated, $serviceRoom) { + $serviceRoom->update($validated); + }); + + return redirect()->route('room-services.index') + ->with('status', 'Data ruangan berhasil diperbarui'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(ServiceRoom $serviceRoom) + { + DB::transaction(function () use ($serviceRoom) { + $serviceRoom->delete(); + }); + + return redirect()->route('room-services.index') + ->with('status', 'Ruangan berhasil dihapus'); + } +} diff --git a/app/Http/Controllers/Settings/PasswordController.php b/app/Http/Controllers/Settings/PasswordController.php new file mode 100644 index 0000000..f8d19b9 --- /dev/null +++ b/app/Http/Controllers/Settings/PasswordController.php @@ -0,0 +1,39 @@ +validate([ + 'current_password' => ['required', 'current_password'], + 'password' => ['required', Password::defaults(), 'confirmed'], + ]); + + $request->user()->update([ + 'password' => Hash::make($validated['password']), + ]); + + return back(); + } +} diff --git a/app/Http/Controllers/Settings/ProfileController.php b/app/Http/Controllers/Settings/ProfileController.php new file mode 100644 index 0000000..a6cb7e1 --- /dev/null +++ b/app/Http/Controllers/Settings/ProfileController.php @@ -0,0 +1,63 @@ + $request->user() instanceof MustVerifyEmail, + 'status' => $request->session()->get('status'), + ]); + } + + /** + * Update the user's profile settings. + */ + public function update(ProfileUpdateRequest $request): RedirectResponse + { + $request->user()->fill($request->validated()); + + if ($request->user()->isDirty('email')) { + $request->user()->email_verified_at = null; + } + + $request->user()->save(); + + return to_route('profile.edit'); + } + + /** + * Delete the user's account. + */ + public function destroy(Request $request): RedirectResponse + { + $request->validate([ + 'password' => ['required', 'current_password'], + ]); + + $user = $request->user(); + + Auth::logout(); + + $user->delete(); + + $request->session()->invalidate(); + $request->session()->regenerateToken(); + + return redirect('/'); + } +} diff --git a/app/Http/Controllers/TransactionController.php b/app/Http/Controllers/TransactionController.php new file mode 100644 index 0000000..e3f19eb --- /dev/null +++ b/app/Http/Controllers/TransactionController.php @@ -0,0 +1,439 @@ +orderBy('transaction_datetime', 'desc') + ->select([ + 'id', + 'invoice_number', + 'registration_id', + 'patient_id', + 'insurance_id', + 'cashier_id', + 'transaction_datetime', + 'payment_datetime', + 'grand_total', + 'paid_amount', + 'insurance_covered_amount', + 'patient_responsibility', + 'payment_method', + 'status', + 'created_at' + ]) + ->paginate(10) + ->through(function ($transaction) { + return [ + 'id' => $transaction->id, + 'invoice_number' => $transaction->invoice_number, + 'registration_number' => $transaction->registration->registration_number, + 'patient_name' => $transaction->patient->name, + 'insurance_name' => $transaction->insurance?->name, + 'cashier_name' => $transaction->cashier?->name, + 'transaction_datetime' => $transaction->transaction_datetime->format('Y-m-d H:i'), + 'payment_datetime' => $transaction->payment_datetime?->format('Y-m-d H:i'), + 'grand_total' => number_format($transaction->grand_total, 2), + 'paid_amount' => number_format($transaction->paid_amount, 2), + 'insurance_covered_amount' => number_format($transaction->insurance_covered_amount, 2), + 'patient_responsibility' => number_format($transaction->patient_responsibility, 2), + 'payment_method' => $transaction->payment_method, + 'status' => $transaction->status, + 'created_at' => $transaction->created_at->format('Y-m-d H:i:s'), + ]; + }); + + return Inertia::render('transactions/index', [ + 'transactions' => $transactions, + 'status' => session('status'), + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + $patients = Patient::select(['id', 'name'])->get(); + $registrations = Registration::with(['patient:id,name']) + ->where('status', '!=', 'cancelled') + ->where('payment_status', '!=', 'paid') + ->select(['id', 'registration_number', 'patient_id']) + ->get() + ->map(function ($registration) { + return [ + 'id' => $registration->id, + 'registration_number' => $registration->registration_number, + 'patient_name' => $registration->patient->name, + ]; + }); + $insurances = Insurance::select(['id', 'name'])->get(); + $procedures = Procedure::select(['id', 'code', 'name'])->get(); + $employees = Employee::with('user:id,name') + ->whereHas('user') + ->get() + ->map(function ($employee) { + return [ + 'id' => $employee->id, + 'name' => $employee->user->name, + ]; + }); + + return Inertia::render('transactions/form', [ + 'mode' => 'create', + 'patients' => $patients, + 'registrations' => $registrations, + 'insurances' => $insurances, + 'procedures' => $procedures, + 'employees' => $employees, + 'paymentMethods' => [ + 'cash' => 'Tunai', + 'debit_card' => 'Kartu Debit', + 'credit_card' => 'Kartu Kredit', + 'transfer' => 'Transfer Bank', + 'insurance' => 'Asuransi', + 'other' => 'Lainnya', + ], + 'statusOptions' => [ + 'pending' => 'Menunggu Pembayaran', + 'paid' => 'Lunas', + 'partially_paid' => 'Bayar Sebagian', + 'cancelled' => 'Dibatalkan', + 'refunded' => 'Dikembalikan', + ], + ]); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + + // Validasi input dari request + $validated = $request->validate([ + 'registration_id' => 'required|exists:t_registration,id', + 'patient_id' => 'required|exists:m_patient,id', + 'insurance_id' => 'nullable|exists:m_insurance,id', + 'transaction_datetime' => 'required|date', + 'payment_datetime' => 'nullable|date', + 'due_date' => 'nullable|date', + 'procedure_id' => 'required|exists:m_procedure,id', // ID prosedur harus ada dan valid + 'quantity' => 'required|integer|min:1', // Jumlah harus ada, berupa integer dan minimal 1 + 'payment_method' => 'required|in:cash,debit_card,credit_card,transfer,insurance,other', + 'payment_reference' => 'nullable|string|max:100', + 'status' => 'required|in:pending,paid,partially_paid,cancelled,refunded', + 'notes' => 'nullable|string', + ]); + + // Mulai transaksi database + return DB::transaction(function () use ($validated) { + // Generate nomor invoice + $invoiceNumber = Transaction::generateInvoiceNumber(); + + // Ambil harga prosedur + $procedure = Procedure::findOrFail($validated['procedure_id']); + $unitPrice = $procedure->base_price; + + // Hitung subtotal + $subtotal = $unitPrice * $validated['quantity']; + + // Hitung pajak dan diskon jika ada + $taxAmount = $subtotal * ($procedure->tax_percentage / 100); + $discountAmount = 0; // Anda bisa menambahkan logika diskon jika diperlukan + + // Hitung grand total + $grandTotal = $subtotal + $taxAmount - $discountAmount; + + // Hitung tanggung jawab pasien + $patientResponsibility = $grandTotal - ($validated['insurance_id'] ? $validated['insurance_covered_amount'] : 0); + + // Hitung jumlah kembalian jika pembayaran dilakukan + $changeAmount = 0; + if ($validated['paid_amount'] > $patientResponsibility) { + $changeAmount = $validated['paid_amount'] - $patientResponsibility; + } + + // Buat transaksi + $transaction = Transaction::create([ + 'invoice_number' => $invoiceNumber, + 'registration_id' => $validated['registration_id'], + 'patient_id' => $validated['patient_id'], + 'insurance_id' => $validated['insurance_id'], + 'cashier_id' => auth()->id(), + 'transaction_datetime' => $validated['transaction_datetime'], + 'payment_datetime' => $validated['payment_datetime'], + 'due_date' => $validated['due_date'], + 'subtotal' => $subtotal, + 'tax_amount' => $taxAmount, + 'discount_amount' => $discountAmount, + 'grand_total' => $grandTotal, + 'paid_amount' => $validated['paid_amount'], + 'change_amount' => $changeAmount, + 'insurance_covered_amount' => $validated['insurance_covered_amount'] ?? 0, + 'patient_responsibility' => $patientResponsibility, + 'payment_method' => $validated['payment_method'], + 'payment_reference' => $validated['payment_reference'], + 'status' => $validated['status'], + 'notes' => $validated['notes'], + ]); + + // Buat detail transaksi + TransactionDetail::create([ + 'transaction_id' => $transaction->id, + 'procedure_id' => $validated['procedure_id'], + 'quantity' => $validated['quantity'], + 'unit_price' => $unitPrice, + 'discount_amount' => $discountAmount, + 'tax_amount' => $taxAmount, + 'subtotal' => $subtotal, + ]); + + // Update status pembayaran registrasi jika diperlukan + if ($validated['status'] === 'paid') { + $registration = Registration::findOrFail($validated['registration_id']); + $registration->update(['payment_status' => 'paid']); + } elseif ($validated['status'] === 'partially_paid') { + $registration = Registration::findOrFail($validated['registration_id']); + $registration->update(['payment_status' => 'partial']); + } + + // Redirect ke halaman transaksi dengan pesan sukses + return redirect()->route('transactions.index') + ->with('status', 'Transaksi berhasil dibuat'); + }); + } + + /** + * Display the specified resource. + */ + public function show(Transaction $transaction) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Transaction $transaction) + { + $transaction->load([ + 'details', + 'registration', + 'patient', + 'insurance', + ]); + + $patients = Patient::select(['id', 'name'])->get(); + $registrations = Registration::with(['patient:id,name']) + ->where(function ($query) use ($transaction) { + $query->where('status', '!=', 'cancelled') + ->where('payment_status', '!=', 'paid') + ->orWhere('id', $transaction->registration_id); + }) + ->select(['id', 'registration_number', 'patient_id']) + ->get() + ->map(function ($registration) { + return [ + 'id' => $registration->id, + 'registration_number' => $registration->registration_number, + 'patient_name' => $registration->patient->name, + ]; + }); + $insurances = Insurance::select(['id', 'name'])->get(); + $procedures = Procedure::select(['id', 'code', 'name'])->get(); + $employees = Employee::with('user:id,name') + ->whereHas('user') + ->get() + ->map(function ($employee) { + return [ + 'id' => $employee->id, + 'name' => $employee->user->name, + ]; + }); + + return Inertia::render('transactions/form', [ + 'mode' => 'edit', + 'transaction' => [ + 'id' => $transaction->id, + 'invoice_number' => $transaction->invoice_number, + 'registration_id' => $transaction->registration_id, + 'patient_id' => $transaction->patient_id, + 'insurance_id' => $transaction->insurance_id, + 'cashier_id' => $transaction->cashier_id, + 'transaction_datetime' => $transaction->transaction_datetime->format('Y-m-d\TH:i'), + 'payment_datetime' => $transaction->payment_datetime?->format('Y-m-d\TH:i'), + 'due_date' => $transaction->due_date?->format('Y-m-d'), + 'subtotal' => $transaction->subtotal, + 'tax_amount' => $transaction->tax_amount, + 'discount_amount' => $transaction->discount_amount, + 'discount_reason' => $transaction->discount_reason, + 'grand_total' => $transaction->grand_total, + 'paid_amount' => $transaction->paid_amount, + 'change_amount' => $transaction->change_amount, + 'insurance_covered_amount' => $transaction->insurance_covered_amount, + 'patient_responsibility' => $transaction->patient_responsibility, + 'payment_method' => $transaction->payment_method, + 'payment_reference' => $transaction->payment_reference, + 'status' => $transaction->status, + 'notes' => $transaction->notes, + 'details' => $transaction->details->map(function($detail) { + return [ + 'id' => $detail->id, + 'procedure_id' => $detail->procedure_id, + 'performed_by' => $detail->performed_by, + 'code' => $detail->code, + 'procedure_name' => $detail->procedure_name, + 'quantity' => $detail->quantity, + 'unit_price' => $detail->unit_price, + 'discount_amount' => $detail->discount_amount, + 'tax_amount' => $detail->tax_amount, + 'subtotal' => $detail->subtotal, + 'performed_datetime' => $detail->performed_datetime?->format('Y-m-d\TH:i'), + 'notes' => $detail->notes, + ]; + }), + ], + 'patients' => $patients, + 'registrations' => $registrations, + 'insurances' => $insurances, + 'procedures' => $procedures, + 'employees' => $employees, + 'paymentMethods' => [ + 'cash' => 'Tunai', + 'debit_card' => 'Kartu Debit', + 'credit_card' => 'Kartu Kredit', + 'transfer' => 'Transfer Bank', + 'insurance' => 'Asuransi', + 'other' => 'Lainnya', + ], + 'statusOptions' => [ + 'pending' => 'Menunggu Pembayaran', + 'paid' => 'Lunas', + 'partially_paid' => 'Bayar Sebagian', + 'cancelled' => 'Dibatalkan', + 'refunded' => 'Dikembalikan', + ], + ]); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Transaction $transaction) + { + $validated = $request->validate([ + 'registration_id' => 'required|exists:t_registration,id', + 'patient_id' => 'required|exists:m_patient,id', + 'insurance_id' => 'nullable|exists:m_insurance,id', + 'transaction_datetime' => 'required|date', + 'payment_datetime' => 'nullable|date', + 'due_date' => 'nullable|date', + 'details' => 'required|array|min:1', + 'details.*.procedure_id' => 'required|exists:m_procedure,id', + 'details.*.quantity' => 'required|integer|min:1', + 'details.*.performed_by' => 'nullable|exists:m_employee,id', + 'details.*.notes' => 'nullable|string', + ]); + + return DB::transaction(function () use ($validated, $transaction) { + // Hitung total baru + $subtotal = 0; + $taxAmount = 0; + $discountAmount = 0; + + foreach ($validated['details'] as $detail) { + $procedure = Procedure::findOrFail($detail['procedure_id']); + $unitPrice = $procedure->base_price; + $detailSubtotal = $unitPrice * $detail['quantity']; + $detailTax = $detailSubtotal * ($procedure->tax_percentage / 100); + + $subtotal += $detailSubtotal; + $taxAmount += $detailTax; + } + + // Hitung grand total + $grandTotal = $subtotal + $taxAmount - $discountAmount; + + // Hitung tanggung jawab pasien + $patientResponsibility = $grandTotal - ($validated['insurance_id'] ? $validated['insurance_covered_amount'] : 0); + + // Update transaksi + $transaction->update([ + 'registration_id' => $validated['registration_id'], + 'patient_id' => $validated['patient_id'], + 'insurance_id' => $validated['insurance_id'], + 'transaction_datetime' => $validated['transaction_datetime'], + 'payment_datetime' => $validated['payment_datetime'], + 'due_date' => $validated['due_date'], + 'subtotal' => $subtotal, + 'tax_amount' => $taxAmount, + 'discount_amount' => $discountAmount, + 'grand_total' => $grandTotal, + 'patient_responsibility' => $patientResponsibility, + 'status' => $validated['status'], + 'notes' => $validated['notes'], + ]); + + // Update detail transaksi + foreach ($validated['details'] as $detail) { + $detailData = [ + 'transaction_id' => $transaction->id, + 'procedure_id' => $detail['procedure_id'], + 'performed_by' => $detail['performed_by'], + 'quantity' => $detail['quantity'], + 'unit_price' => Procedure::findOrFail($detail['procedure_id'])->base_price, + 'subtotal' => Procedure::findOrFail($detail['procedure_id'])->base_price * $detail['quantity'], + 'notes' => $detail['notes'] ?? null, + ]; + + if (isset($detail['id']) && $detail['id']) { + TransactionDetail::where('id', $detail['id'])->update($detailData); + } else { + TransactionDetail::create($detailData); + } + } + + // Redirect ke halaman transaksi dengan pesan sukses + return redirect()->route('transactions.index') + ->with('status', 'Data transaksi berhasil diperbarui'); + }); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Transaction $transaction) + { + return DB::transaction(function () use ($transaction) { + TransactionDetail::where('transaction_id', $transaction->id)->delete(); + + $transaction->delete(); + + return redirect()->route('transactions.index') + ->with('status', 'Data transaksi berhasil dihapus'); + }); + } +} diff --git a/app/Http/Controllers/TransactionDetailController.php b/app/Http/Controllers/TransactionDetailController.php new file mode 100644 index 0000000..82d1057 --- /dev/null +++ b/app/Http/Controllers/TransactionDetailController.php @@ -0,0 +1,65 @@ +cookie('appearance') ?? 'system'); + + return $next($request); + } +} diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php new file mode 100644 index 0000000..3af9fd4 --- /dev/null +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -0,0 +1,56 @@ + + */ + public function share(Request $request): array + { + [$message, $author] = str(Inspiring::quotes()->random())->explode('-'); + + return [ + ...parent::share($request), + 'name' => config('app.name'), + 'quote' => ['message' => trim($message), 'author' => trim($author)], + 'auth' => [ + 'user' => $request->user(), + ], + 'ziggy' => fn (): array => [ + ...(new Ziggy)->toArray(), + 'location' => $request->url(), + ], + 'sidebarOpen' => ! $request->hasCookie('sidebar_state') || $request->cookie('sidebar_state') === 'true', + ]; + } +} diff --git a/app/Http/Requests/Auth/LoginRequest.php b/app/Http/Requests/Auth/LoginRequest.php new file mode 100644 index 0000000..d236bf9 --- /dev/null +++ b/app/Http/Requests/Auth/LoginRequest.php @@ -0,0 +1,85 @@ +|string> + */ + public function rules(): array + { + return [ + 'email' => ['required', 'string', 'email'], + 'password' => ['required', 'string'], + ]; + } + + /** + * Attempt to authenticate the request's credentials. + * + * @throws \Illuminate\Validation\ValidationException + */ + public function authenticate(): void + { + $this->ensureIsNotRateLimited(); + + if (! Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) { + RateLimiter::hit($this->throttleKey()); + + throw ValidationException::withMessages([ + 'email' => __('auth.failed'), + ]); + } + + RateLimiter::clear($this->throttleKey()); + } + + /** + * Ensure the login request is not rate limited. + * + * @throws \Illuminate\Validation\ValidationException + */ + public function ensureIsNotRateLimited(): void + { + if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) { + return; + } + + event(new Lockout($this)); + + $seconds = RateLimiter::availableIn($this->throttleKey()); + + throw ValidationException::withMessages([ + 'email' => __('auth.throttle', [ + 'seconds' => $seconds, + 'minutes' => ceil($seconds / 60), + ]), + ]); + } + + /** + * Get the rate limiting throttle key for the request. + */ + public function throttleKey(): string + { + return Str::transliterate(Str::lower($this->string('email')).'|'.$this->ip()); + } +} diff --git a/app/Http/Requests/Settings/ProfileUpdateRequest.php b/app/Http/Requests/Settings/ProfileUpdateRequest.php new file mode 100644 index 0000000..64cf26b --- /dev/null +++ b/app/Http/Requests/Settings/ProfileUpdateRequest.php @@ -0,0 +1,32 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => ['required', 'string', 'max:255'], + + 'email' => [ + 'required', + 'string', + 'lowercase', + 'email', + 'max:255', + Rule::unique(User::class)->ignore($this->user()->id), + ], + ]; + } +} diff --git a/app/Models/Employee.php b/app/Models/Employee.php new file mode 100644 index 0000000..6cfd967 --- /dev/null +++ b/app/Models/Employee.php @@ -0,0 +1,71 @@ + 'date', + 'join_date' => 'date', + 'resign_date' => 'date', + 'is_active' => 'boolean', + ]; + + public function user() + { + return $this->belongsTo(User::class); + } + + protected static function boot() + { + parent::boot(); + + static::creating(function ($model) { + if (empty($model->employee_id)) { + $model->employee_id = $model->generateEmployeeId(); + } + }); + } + + public function generateEmployeeId() + { + $prefix = 'HK-'; + $lastEmployee = static::orderBy('created_at', 'desc')->first(); + + if ($lastEmployee) { + $lastNumber = (int) substr($lastEmployee->employee_id, 3); + $nextNumber = str_pad($lastNumber + 1, 4, '0', STR_PAD_LEFT); + } else { + $nextNumber = '0001'; + } + + return $prefix . $nextNumber; + } +} diff --git a/app/Models/Insurance.php b/app/Models/Insurance.php new file mode 100644 index 0000000..1d53fc5 --- /dev/null +++ b/app/Models/Insurance.php @@ -0,0 +1,47 @@ + 'decimal:2', + 'agreement_start_date' => 'date', + 'agreement_end_date' => 'date', + 'is_active' => 'boolean', + ]; + + protected $attributes = [ + 'coverage_percentage' => 100.00, + 'is_active' => true, + ]; +} diff --git a/app/Models/Patient.php b/app/Models/Patient.php new file mode 100644 index 0000000..a8b174c --- /dev/null +++ b/app/Models/Patient.php @@ -0,0 +1,70 @@ + 'date', + 'created_at' => 'datetime', + 'updated_at' => 'datetime', + ]; + + protected $attributes = [ + 'blood_type' => 'unknown', + ]; + + protected static function boot() + { + parent::boot(); + + static::creating(function ($model) { + if (empty($model->medical_record_number)) { + $model->medical_record_number = self::generateMedicalRecordNumber(); + } + }); + } + + public static function generateMedicalRecordNumber() + { + $prefix = 'MRN'; + $year = Carbon::now()->format('Y'); + $month = Carbon::now()->format('m'); + $sequence = self::whereYear('created_at', $year) + ->whereMonth('created_at', $month) + ->count() + 1; + + return sprintf('%s-%s%s-%04d', $prefix, $year, $month, $sequence); + } +} diff --git a/app/Models/Procedure.php b/app/Models/Procedure.php new file mode 100644 index 0000000..3011f81 --- /dev/null +++ b/app/Models/Procedure.php @@ -0,0 +1,62 @@ +is_taxable + ? $this->base_price * (1 + $this->tax_percentage / 100) + : $this->base_price; + } + + public function scopeActive($query) + { + return $query->where('is_active', true); + } + + public function scopeWithoutApproval($query) + { + return $query->where('requires_approval', false); + } + + public static function getCategories(): array + { + return [ + 'Konsultasi', + 'Pemeriksaan', + 'Tindakan', + 'Operasi', + 'Laboratorium', + 'Radiologi', + 'Obat', + 'Lainnya' + ]; + } +} diff --git a/app/Models/Registration.php b/app/Models/Registration.php new file mode 100644 index 0000000..226efb2 --- /dev/null +++ b/app/Models/Registration.php @@ -0,0 +1,123 @@ + 'datetime', + 'discharge_datetime' => 'datetime', + 'estimated_discharge' => 'datetime', + 'diagnoses' => 'array', + 'prescriptions' => 'array', + 'need_icu' => 'boolean', + 'is_referral' => 'boolean', + 'is_active' => 'boolean', + ]; + + protected $attributes = [ + 'registration_type' => 'Rawat Jalan', + 'patient_type' => 'Umum', + 'status' => 'registered', + 'payment_status' => 'unpaid', + 'need_icu' => false, + 'is_referral' => false, + 'is_active' => true, + ]; + + public function patient() + { + return $this->belongsTo(Patient::class, 'patient_id'); + } + + public function employee() + { + return $this->belongsTo(Employee::class, 'employee_id'); + } + + public function serviceRoom() + { + return $this->belongsTo(ServiceRoom::class, 'service_room_id'); + } + + public function insurance() + { + return $this->belongsTo(Insurance::class, 'insurance_id'); + } + + public function creator() + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function scopeActive($query) + { + return $query->where('is_active', true); + } + + public function scopeInpatient($query) + { + return $query->where('registration_type', 'Rawat Inap'); + } + + public function scopeOutpatient($query) + { + return $query->where('registration_type', 'Rawat Jalan'); + } + + public function scopeEmergency($query) + { + return $query->where('registration_type', 'UGD'); + } + + // Helpers + public function isCompleted(): bool + { + return $this->status === 'completed'; + } + + public function isPaid(): bool + { + return $this->payment_status === 'paid' || $this->payment_status === 'insurance_cover'; + } + + public function getFormattedRegistrationNumber(): string + { + return $this->registration_number; + } +} diff --git a/app/Models/ServiceRoom.php b/app/Models/ServiceRoom.php new file mode 100644 index 0000000..f605055 --- /dev/null +++ b/app/Models/ServiceRoom.php @@ -0,0 +1,104 @@ + 'integer', + 'price_per_day' => 'decimal:2', + 'is_available' => 'boolean', + 'is_active' => 'boolean', + ]; + + protected $attributes = [ + 'type' => 'Rawat Inap', + 'class' => 'standard', + 'capacity' => 1, + 'is_available' => true, + 'is_active' => true, + ]; + + public function getTypeNameAttribute(): string + { + return match($this->type) { + 'Rawat Jalan' => 'Rawat Jalan', + 'Rawat Inap' => 'Rawat Inap', + 'UGD' => 'UGD', + 'ICU' => 'ICU', + 'Bedah' => 'Bedah', + 'Persalinan' => 'Persalinan', + 'Radiologi' => 'Radiologi', + 'Laboratorium' => 'Laboratorium', + 'Farmasi' => 'Farmasi', + default => 'Lainnya', + }; + } + + public function getClassNameAttribute(): string + { + return match($this->class) { + 'vip' => 'VIP', + 'class_1' => 'Kelas 1', + 'class_2' => 'Kelas 2', + 'class_3' => 'Kelas 3', + 'standard' => 'Standard', + default => 'Non Kelas', + }; + } + + public static function getRoomTypes(): array + { + return [ + 'Rawat Jalan', + 'Rawat Inap', + 'UGD', + 'ICU', + 'Bedah', + 'Persalinan', + 'Radiologi', + 'Laboratorium', + 'Farmasi', + 'Lainnya' + ]; + } + + public static function getRoomClasses(): array + { + return [ + 'vip' => 'VIP', + 'class_1' => 'Kelas 1', + 'class_2' => 'Kelas 2', + 'class_3' => 'Kelas 3', + 'standard' => 'Standard', + 'non_class' => 'Non Kelas' + ]; + } +} diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php new file mode 100644 index 0000000..d52cb22 --- /dev/null +++ b/app/Models/Transaction.php @@ -0,0 +1,98 @@ + 'datetime', + 'payment_datetime' => 'datetime', + 'due_date' => 'date', + 'subtotal' => 'decimal:2', + 'tax_amount' => 'decimal:2', + 'discount_amount' => 'decimal:2', + 'grand_total' => 'decimal:2', + 'paid_amount' => 'decimal:2', + 'change_amount' => 'decimal:2', + 'insurance_covered_amount' => 'decimal:2', + 'patient_responsibility' => 'decimal:2', + ]; + + // Relationships + public function registration(): BelongsTo + { + return $this->belongsTo(Registration::class, 'registration_id'); + } + + public function patient(): BelongsTo + { + return $this->belongsTo(Patient::class, 'patient_id'); + } + + public function insurance(): BelongsTo + { + return $this->belongsTo(Insurance::class, 'insurance_id'); + } + + public function cashier(): BelongsTo + { + return $this->belongsTo(User::class, 'cashier_id'); + } + + public function details(): HasMany + { + return $this->hasMany(TransactionDetail::class, 'transaction_id'); + } + + // helper untuk generate invoice number + public static function generateInvoiceNumber(): string + { + $datePart = now()->format('Ymd'); + $lastInvoice = self::where('invoice_number', 'like', "INV-{$datePart}-%") + ->orderBy('invoice_number', 'desc') + ->first(); + + $sequence = $lastInvoice + ? (int) substr($lastInvoice->invoice_number, -3) + 1 + : 1; + + return sprintf('INV-%s-%03d', $datePart, $sequence); + } +} diff --git a/app/Models/TransactionDetail.php b/app/Models/TransactionDetail.php new file mode 100644 index 0000000..02dba0a --- /dev/null +++ b/app/Models/TransactionDetail.php @@ -0,0 +1,58 @@ + 'integer', + 'unit_price' => 'decimal:2', + 'discount_amount' => 'decimal:2', + 'tax_amount' => 'decimal:2', + 'subtotal' => 'decimal:2', + 'performed_datetime' => 'datetime', + ]; + + // Relationships + public function transaction(): BelongsTo + { + return $this->belongsTo(Transaction::class, 'transaction_id'); + } + + public function procedure(): BelongsTo + { + return $this->belongsTo(Procedure::class, 'procedure_id'); + } + + public function performer(): BelongsTo + { + return $this->belongsTo(Employee::class, 'performed_by'); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..ecc5c82 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,59 @@ + */ + use HasFactory, Notifiable, InteractsWithUuid; + + protected $primaryKey = 'id'; + public $incrementing = false; + protected $keyType = 'string'; + + /** + * The attributes that are mass assignable. + * + * @var list + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var list + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * Get the attributes that should be cast. + * + * @return array + */ + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + } + + public function employee() + { + return $this->hasOne(Employee::class); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ +{$model->getKeyName()})) { + $model->{$model->getKeyName()} = Str::orderedUuid()->toString(); + } + }); + } + + public function getIncrementing() + { + return false; + } + + public function getKeyType() + { + return 'string'; + } +} diff --git a/artisan b/artisan new file mode 100755 index 0000000..c35e31d --- /dev/null +++ b/artisan @@ -0,0 +1,18 @@ +#!/usr/bin/env php +handleCommand(new ArgvInput); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..134581a --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,27 @@ +withRouting( + web: __DIR__.'/../routes/web.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware) { + $middleware->encryptCookies(except: ['appearance', 'sidebar_state']); + + $middleware->web(append: [ + HandleAppearance::class, + HandleInertiaRequests::class, + AddLinkHeadersForPreloadedAssets::class, + ]); + }) + ->withExceptions(function (Exceptions $exceptions) { + // + })->create(); diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/bootstrap/providers.php b/bootstrap/providers.php new file mode 100644 index 0000000..38b258d --- /dev/null +++ b/bootstrap/providers.php @@ -0,0 +1,5 @@ +=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "8c784d071debd117328803d86b2097615b457500" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2024-10-09T13:47:03+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:45:45+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.9.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.9.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2025-03-27T13:37:11+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.2.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2025-03-27T13:27:01+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.7.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-03-27T12:30:47+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/30e286560c137526eccd4ce21b2de477ab0676d2", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2025-02-03T10:55:03+00:00" + }, + { + "name": "inertiajs/inertia-laravel", + "version": "v2.0.2", + "source": { + "type": "git", + "url": "https://github.com/inertiajs/inertia-laravel.git", + "reference": "248e815cf8d41307cbfb735efaa514c118e2f3b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/248e815cf8d41307cbfb735efaa514c118e2f3b4", + "reference": "248e815cf8d41307cbfb735efaa514c118e2f3b4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel/framework": "^10.0|^11.0|^12.0", + "php": "^8.1.0", + "symfony/console": "^6.2|^7.0" + }, + "require-dev": { + "laravel/pint": "^1.16", + "mockery/mockery": "^1.3.3", + "orchestra/testbench": "^8.0|^9.2|^10.0", + "phpunit/phpunit": "^10.4|^11.5", + "roave/security-advisories": "dev-master" + }, + "suggest": { + "ext-pcntl": "Recommended when running the Inertia SSR server via the `inertia:start-ssr` artisan command." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Inertia\\ServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./helpers.php" + ], + "psr-4": { + "Inertia\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Reinink", + "email": "jonathan@reinink.ca", + "homepage": "https://reinink.ca" + } + ], + "description": "The Laravel adapter for Inertia.js.", + "keywords": [ + "inertia", + "laravel" + ], + "support": { + "issues": "https://github.com/inertiajs/inertia-laravel/issues", + "source": "https://github.com/inertiajs/inertia-laravel/tree/v2.0.2" + }, + "time": "2025-04-10T15:08:36+00:00" + }, + { + "name": "laravel/framework", + "version": "v12.10.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "0f123cc857bc177abe4d417448d4f7164f71802a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/0f123cc857bc177abe4d417448d4f7164f71802a", + "reference": "0f123cc857bc177abe4d417448d4f7164f71802a", + "shasum": "" + }, + "require": { + "brick/math": "^0.11|^0.12", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.4", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.3.0", + "laravel/serializable-closure": "^1.3|^2.0", + "league/commonmark": "^2.6", + "league/flysystem": "^3.25.1", + "league/flysystem-local": "^3.25.1", + "league/uri": "^7.5.1", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^3.8.4", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^7.2.0", + "symfony/error-handler": "^7.2.0", + "symfony/finder": "^7.2.0", + "symfony/http-foundation": "^7.2.0", + "symfony/http-kernel": "^7.2.0", + "symfony/mailer": "^7.2.0", + "symfony/mime": "^7.2.0", + "symfony/polyfill-php83": "^1.31", + "symfony/process": "^7.2.0", + "symfony/routing": "^7.2.0", + "symfony/uid": "^7.2.0", + "symfony/var-dumper": "^7.2.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.6.1", + "voku/portable-ascii": "^2.0.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/log-implementation": "1.0|2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.322.9", + "ext-gmp": "*", + "fakerphp/faker": "^1.24", + "guzzlehttp/promises": "^2.0.3", + "guzzlehttp/psr7": "^2.4", + "laravel/pint": "^1.18", + "league/flysystem-aws-s3-v3": "^3.25.1", + "league/flysystem-ftp": "^3.25.1", + "league/flysystem-path-prefixing": "^3.25.1", + "league/flysystem-read-only": "^3.25.1", + "league/flysystem-sftp-v3": "^3.25.1", + "mockery/mockery": "^1.6.10", + "orchestra/testbench-core": "^10.0.0", + "pda/pheanstalk": "^5.0.6|^7.0.0", + "php-http/discovery": "^1.15", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", + "predis/predis": "^2.3", + "resend/resend-php": "^0.10.0", + "symfony/cache": "^7.2.0", + "symfony/http-client": "^7.2.0", + "symfony/psr-http-message-bridge": "^7.2.0", + "symfony/translation": "^7.2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.322.9).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", + "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", + "mockery/mockery": "Required to use mocking (^1.6).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.5.3|^12.0.1).", + "predis/predis": "Required to use the predis connector (^2.3).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "12.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/functions.php", + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Support/functions.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2025-04-24T14:11:20+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.3.5", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/57b8f7efe40333cdb925700891c7d7465325d3b1", + "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "illuminate/collections": "^10.0|^11.0|^12.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.3.5" + }, + "time": "2025-02-11T13:34:40+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2025-03-19T13:51:03+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.10.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.10.1" + }, + "time": "2025-01-27T14:24:01+00:00" + }, + { + "name": "league/commonmark", + "version": "2.6.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "06c3b0bf2540338094575612f4a1778d0d2d5e94" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/06c3b0bf2540338094575612f4a1778d0d2d5e94", + "reference": "06c3b0bf2540338094575612f4a1778d0d2d5e94", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2025-04-18T21:09:27+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.29.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" + }, + "time": "2024-10-08T08:58:34+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.29.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0" + }, + "time": "2024-08-09T21:24:39+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-09-21T08:32:55+00:00" + }, + { + "name": "league/uri", + "version": "7.5.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "81fb5145d2644324614cc532b28efd0215bda430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.5", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.5.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:40:02+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:18:47+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.9.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2025-03-24T10:02:05+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.9.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6d16a8a015166fe54e22c042e0805c5363aef50d", + "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "<100.0", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3 || ^7.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.57.2", + "kylekatarnls/multi-tester": "^2.5.3", + "ondrejmirtes/better-reflection": "^6.25.0.4", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.11.2", + "phpunit/phpunit": "^10.5.20", + "squizlabs/php_codesniffer": "^3.9.0" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2025-03-27T12:57:33+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.4" + }, + "require-dev": { + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.2" + }, + "time": "2024-10-06T23:10:23+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.6", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "ce708655043c7050eb050df361c5e313cf708309" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/ce708655043c7050eb050df361c5e313cf708309", + "reference": "ce708655043c7050eb050df361c5e313cf708309", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.6" + }, + "time": "2025-03-30T21:06:30+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.4.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + }, + "time": "2024-12-30T11:07:19+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/52915afe6a1044e8b9cee1bcff836fb63acf9cda", + "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.1.8" + }, + "require-dev": { + "illuminate/console": "^11.33.2", + "laravel/pint": "^1.18.2", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0", + "phpstan/phpstan": "^1.12.11", + "phpstan/phpstan-strict-rules": "^1.6.1", + "symfony/var-dumper": "^7.1.8", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2024-11-21T10:39:51+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:41:07+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.8", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/85057ceedee50c49d4f6ecaff73ee96adb3b3625", + "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.8" + }, + "time": "2025-03-16T03:05:19+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.6", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.6" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2024-04-27T21:32:50+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/console", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "e51498ea18570c062e7df29d05a7003585b19b88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/e51498ea18570c062e7df29d05a7003585b19b88", + "reference": "e51498ea18570c062e7df29d05a7003585b19b88", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-12T08:11:12+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", + "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^6.4|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-03T07:12:39+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.2.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.2.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-30T19:00:17+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "371272aeb6286f8135e028ca535f8e4d6f114126" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/371272aeb6286f8135e028ca535f8e4d6f114126", + "reference": "371272aeb6286f8135e028ca535f8e4d6f114126", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-25T15:54:33+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b1fe91bc1fa454a806d3f98db4ba826eb9941a54", + "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^7.1", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-28T13:32:50+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/f3871b182c44997cf039f3b462af4a48fb85f9d3", + "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^7.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-27T11:08:17+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "87ca22046b78c3feaff04b337f33b38510fd686b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/87ca22046b78c3feaff04b337f33b38510fd686b", + "reference": "87ca22046b78c3feaff04b337f33b38510fd686b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v7.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-02-19T08:51:20+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "87b7c93e57df9d8e39a093d32587702380ff045d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/87b7c93e57df9d8e39a093d32587702380ff045d", + "reference": "87b7c93e57df9d8e39a093d32587702380ff045d", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-13T12:21:46+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/ee9a67edc6baa33e5fae662f94f91fd262930996", + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-17T10:56:55+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/string", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-13T13:31:26+00:00" + }, + { + "name": "symfony/translation", + "version": "v7.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "283856e6981286cc0d800b53bd5703e8e363f05a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a", + "reference": "283856e6981286cc0d800b53bd5703e8e363f05a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.18|^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v7.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-02-13T10:27:23+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "2d294d0c48df244c71c105a169d0190bfb080426" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/2d294d0c48df244c71c105a169d0190bfb080426", + "reference": "2d294d0c48df244c71c105a169d0190bfb080426", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-17T11:39:41+00:00" + }, + { + "name": "tightenco/ziggy", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/tighten/ziggy.git", + "reference": "d59dbb61dc0a1d9abb2130451b9e5e0f264bfe1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tighten/ziggy/zipball/d59dbb61dc0a1d9abb2130451b9e5e0f264bfe1c", + "reference": "d59dbb61dc0a1d9abb2130451b9e5e0f264bfe1c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel/framework": ">=9.0", + "php": ">=8.1" + }, + "require-dev": { + "laravel/folio": "^1.1", + "orchestra/testbench": "^7.0 || ^8.0 || ^9.0 || ^10.0", + "pestphp/pest": "^2.26|^3.0", + "pestphp/pest-plugin-laravel": "^2.4|^3.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Tighten\\Ziggy\\ZiggyServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Tighten\\Ziggy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Coulbourne", + "email": "daniel@tighten.co" + }, + { + "name": "Jake Bathman", + "email": "jake@tighten.co" + }, + { + "name": "Jacob Baker-Kretzmar", + "email": "jacob@tighten.co" + } + ], + "description": "Use your Laravel named routes in JavaScript.", + "homepage": "https://github.com/tighten/ziggy", + "keywords": [ + "Ziggy", + "javascript", + "laravel", + "routes" + ], + "support": { + "issues": "https://github.com/tighten/ziggy/issues", + "source": "https://github.com/tighten/ziggy/tree/v2.5.2" + }, + "time": "2025-02-27T15:43:52+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" + }, + "time": "2024-12-21T16:25:41+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.3", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:52:34+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "https://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2024-11-21T01:49:47+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "brianium/paratest", + "version": "v7.8.3", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "a585c346ddf1bec22e51e20b5387607905604a71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/a585c346ddf1bec22e51e20b5387607905604a71", + "reference": "a585c346ddf1bec22e51e20b5387607905604a71", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^1.2.0", + "jean85/pretty-package-versions": "^2.1.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "phpunit/php-code-coverage": "^11.0.9 || ^12.0.4", + "phpunit/php-file-iterator": "^5.1.0 || ^6", + "phpunit/php-timer": "^7.0.1 || ^8", + "phpunit/phpunit": "^11.5.11 || ^12.0.6", + "sebastian/environment": "^7.2.0 || ^8", + "symfony/console": "^6.4.17 || ^7.2.1", + "symfony/process": "^6.4.19 || ^7.2.4" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "phpstan/phpstan": "^2.1.6", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpstan/phpstan-phpunit": "^2.0.4", + "phpstan/phpstan-strict-rules": "^2.0.3", + "squizlabs/php_codesniffer": "^3.11.3", + "symfony/filesystem": "^6.4.13 || ^7.2.0" + }, + "bin": [ + "bin/paratest", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.8.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2025-03-05T08:29:11+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" + }, + "time": "2025-04-07T20:06:18+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.24.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" + }, + "time": "2024-11-21T13:46:39+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "8520451a140d3f46ac33042715115e290cf5785f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-08-06T10:04:20+00:00" + }, + { + "name": "filp/whoops", + "version": "2.18.0", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", + "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.18.0" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-03-15T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", + "vimeo/psalm": "^4.3 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1" + }, + "time": "2025-03-19T14:43:43+00:00" + }, + { + "name": "laravel/pail", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "f31f4980f52be17c4667f3eafe034e6826787db2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/f31f4980f52be17c4667f3eafe034e6826787db2", + "reference": "f31f4980f52be17c4667f3eafe034e6826787db2", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0|^12.0", + "illuminate/contracts": "^10.24|^11.0|^12.0", + "illuminate/log": "^10.24|^11.0|^12.0", + "illuminate/process": "^10.24|^11.0|^12.0", + "illuminate/support": "^10.24|^11.0|^12.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0|^12.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.13|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0", + "phpstan/phpstan": "^1.10", + "symfony/var-dumper": "^6.3|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Pail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", + "keywords": [ + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2025-01-28T15:15:15+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "7ddfaa6523a675fae5c4123ee38fc6bfb8ee4f36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/7ddfaa6523a675fae5c4123ee38fc6bfb8ee4f36", + "reference": "7ddfaa6523a675fae5c4123ee38fc6bfb8ee4f36", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.75.0", + "illuminate/view": "^11.44.2", + "larastan/larastan": "^3.3.1", + "laravel-zero/framework": "^11.36.1", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^2.3", + "pestphp/pest": "^2.36.0" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2025-04-08T22:11:45+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.41.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "e5692510f1ef8e0f5096cde2b885d558f8d86592" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/e5692510f1ef8e0f5096cde2b885d558f8d86592", + "reference": "e5692510f1ef8e0f5096cde2b885d558f8d86592", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2025-04-22T13:39:39+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.12", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2024-05-16T03:13:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-02-12T12:17:51+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v8.8.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/4cf9f3b47afff38b139fb79ce54fc71799022ce8", + "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.18.0", + "nunomaduro/termwind": "^2.3.0", + "php": "^8.2.0", + "symfony/console": "^7.2.5" + }, + "conflict": { + "laravel/framework": "<11.44.2 || >=13.0.0", + "phpunit/phpunit": "<11.5.15 || >=13.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.8.3", + "larastan/larastan": "^3.2", + "laravel/framework": "^11.44.2 || ^12.6", + "laravel/pint": "^1.21.2", + "laravel/sail": "^1.41.0", + "laravel/sanctum": "^4.0.8", + "laravel/tinker": "^2.10.1", + "orchestra/testbench-core": "^9.12.0 || ^10.1", + "pestphp/pest": "^3.8.0", + "sebastian/environment": "^7.2.0 || ^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "dev", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2025-04-03T14:33:09+00:00" + }, + { + "name": "pestphp/pest", + "version": "v3.8.2", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest.git", + "reference": "c6244a8712968dbac88eb998e7ff3b5caa556b0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest/zipball/c6244a8712968dbac88eb998e7ff3b5caa556b0d", + "reference": "c6244a8712968dbac88eb998e7ff3b5caa556b0d", + "shasum": "" + }, + "require": { + "brianium/paratest": "^7.8.3", + "nunomaduro/collision": "^8.8.0", + "nunomaduro/termwind": "^2.3.0", + "pestphp/pest-plugin": "^3.0.0", + "pestphp/pest-plugin-arch": "^3.1.0", + "pestphp/pest-plugin-mutate": "^3.0.5", + "php": "^8.2.0", + "phpunit/phpunit": "^11.5.15" + }, + "conflict": { + "filp/whoops": "<2.16.0", + "phpunit/phpunit": ">11.5.15", + "sebastian/exporter": "<6.0.0", + "webmozart/assert": "<1.11.0" + }, + "require-dev": { + "pestphp/pest-dev-tools": "^3.4.0", + "pestphp/pest-plugin-type-coverage": "^3.5.0", + "symfony/process": "^7.2.5" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Mutate\\Plugins\\Mutate", + "Pest\\Plugins\\Configuration", + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], + "psr-4": { + "Pest\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "The elegant PHP Testing Framework.", + "keywords": [ + "framework", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v3.8.2" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-04-17T10:53:02+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "e79b26c65bc11c41093b10150c1341cc5cdbea83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e79b26c65bc11c41093b10150c1341cc5cdbea83", + "reference": "e79b26c65bc11c41093b10150c1341cc5cdbea83", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.2" + }, + "conflict": { + "pestphp/pest": "<3.0.0" + }, + "require-dev": { + "composer/composer": "^2.7.9", + "pestphp/pest": "^3.0.0", + "pestphp/pest-dev-tools": "^3.0.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Pest\\Plugin\\Manager" + }, + "autoload": { + "psr-4": { + "Pest\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest plugin manager", + "keywords": [ + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin/tree/v3.0.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2024-09-08T23:21:41+00:00" + }, + { + "name": "pestphp/pest-plugin-arch", + "version": "v3.1.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "db7bd9cb1612b223e16618d85475c6f63b9c8daa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/db7bd9cb1612b223e16618d85475c6f63b9c8daa", + "reference": "db7bd9cb1612b223e16618d85475c6f63b9c8daa", + "shasum": "" + }, + "require": { + "pestphp/pest-plugin": "^3.0.0", + "php": "^8.2", + "ta-tikoma/phpunit-architecture-test": "^0.8.4" + }, + "require-dev": { + "pestphp/pest": "^3.8.1", + "pestphp/pest-dev-tools": "^3.4.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Arch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Arch plugin for Pest PHP.", + "keywords": [ + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v3.1.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-04-16T22:59:48+00:00" + }, + { + "name": "pestphp/pest-plugin-drift", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-drift.git", + "reference": "cd506d2b931eb1443b878229b472c59d6f2d8ee8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-drift/zipball/cd506d2b931eb1443b878229b472c59d6f2d8ee8", + "reference": "cd506d2b931eb1443b878229b472c59d6f2d8ee8", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.1.0", + "pestphp/pest": "^3.0.0", + "php": "^8.2.0", + "symfony/finder": "^7.1.4" + }, + "require-dev": { + "pestphp/pest-dev-tools": "^3.0.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Drift\\Plugin" + ] + } + }, + "autoload": { + "psr-4": { + "Pest\\Drift\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Drift Plugin", + "keywords": [ + "framework", + "laravel", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-drift/tree/v3.0.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/mandisma", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-09-08T23:45:48+00:00" + }, + { + "name": "pestphp/pest-plugin-laravel", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "6801be82fd92b96e82dd72e563e5674b1ce365fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/6801be82fd92b96e82dd72e563e5674b1ce365fc", + "reference": "6801be82fd92b96e82dd72e563e5674b1ce365fc", + "shasum": "" + }, + "require": { + "laravel/framework": "^11.39.1|^12.9.2", + "pestphp/pest": "^3.8.2", + "php": "^8.2.0" + }, + "require-dev": { + "laravel/dusk": "^8.2.13|dev-develop", + "orchestra/testbench": "^9.9.0|^10.2.1", + "pestphp/pest-dev-tools": "^3.4.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Laravel\\Plugin" + ] + }, + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Laravel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Laravel Plugin", + "keywords": [ + "framework", + "laravel", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-04-21T07:40:53+00:00" + }, + { + "name": "pestphp/pest-plugin-mutate", + "version": "v3.0.5", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-mutate.git", + "reference": "e10dbdc98c9e2f3890095b4fe2144f63a5717e08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-mutate/zipball/e10dbdc98c9e2f3890095b4fe2144f63a5717e08", + "reference": "e10dbdc98c9e2f3890095b4fe2144f63a5717e08", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.2.0", + "pestphp/pest-plugin": "^3.0.0", + "php": "^8.2", + "psr/simple-cache": "^3.0.0" + }, + "require-dev": { + "pestphp/pest": "^3.0.8", + "pestphp/pest-dev-tools": "^3.0.0", + "pestphp/pest-plugin-type-coverage": "^3.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Pest\\Mutate\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sandro Gehri", + "email": "sandrogehri@gmail.com" + } + ], + "description": "Mutates your code to find untested cases", + "keywords": [ + "framework", + "mutate", + "mutation", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-mutate/tree/v3.0.5" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/gehrisandro", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-09-22T07:54:40+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.6.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62", + "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2" + }, + "time": "2025-04-13T19:20:35+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.18|^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" + }, + "time": "2024-11-09T15:12:26+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" + }, + "time": "2025-02-19T13:28:12+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "11.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/14d63fbcca18457e49c6f8bebaa91a87e8e188d7", + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.4.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-text-template": "^4.0.1", + "sebastian/code-unit-reverse-lookup": "^4.0.1", + "sebastian/complexity": "^4.0.1", + "sebastian/environment": "^7.2.0", + "sebastian/lines-of-code": "^3.0.1", + "sebastian/version": "^5.0.2", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^11.5.2" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.9" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-25T13:26:39+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-27T05:02:59+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:07:44+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:08:43+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:09:35+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "11.5.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", + "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0.9", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-invoker": "^5.0.1", + "phpunit/php-text-template": "^4.0.1", + "phpunit/php-timer": "^7.0.1", + "sebastian/cli-parser": "^3.0.2", + "sebastian/code-unit": "^3.0.3", + "sebastian/comparator": "^6.3.1", + "sebastian/diff": "^6.0.2", + "sebastian/environment": "^7.2.0", + "sebastian/exporter": "^6.3.0", + "sebastian/global-state": "^7.0.2", + "sebastian/object-enumerator": "^6.0.1", + "sebastian/type": "^5.1.2", + "sebastian/version": "^5.0.2", + "staabm/side-effects-detector": "^1.0.5" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.15" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2025-03-23T16:02:11+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:41:36+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-19T07:56:08+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:45:54+00:00" + }, + { + "name": "sebastian/comparator", + "version": "6.3.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959", + "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.4" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-07T06:57:01+00:00" + }, + { + "name": "sebastian/complexity", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:49:50+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:53:05+00:00" + }, + { + "name": "sebastian/environment", + "version": "7.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", + "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:54:44+00:00" + }, + { + "name": "sebastian/exporter", + "version": "6.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/3473f61172093b2da7de1fb5782e1f24cc036dc3", + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-12-05T09:17:50+00:00" + }, + { + "name": "sebastian/global-state", + "version": "7.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:57:36+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:58:38+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:00:13+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:01:32+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", + "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:10:34+00:00" + }, + { + "name": "sebastian/type", + "version": "5.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", + "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-18T13:35:50+00:00" + }, + { + "name": "sebastian/version", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-09T05:16:32+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", + "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-03T07:12:39+00:00" + }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.8.5", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "cf6fb197b676ba716837c886baca842e4db29005" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/cf6fb197b676ba716837c886baca842e4db29005", + "reference": "cf6fb197b676ba716837c886baca842e4db29005", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18.0 || ^5.0.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" + }, + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.5" + }, + "time": "2025-04-20T20:23:40+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.2" + }, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..324b513 --- /dev/null +++ b/config/app.php @@ -0,0 +1,126 @@ + 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'), + + 'previous_keys' => [ + ...array_filter( + explode(',', env('APP_PREVIOUS_KEYS', '')) + ), + ], + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | 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'), + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..0ba5d5d --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => env('AUTH_GUARD', 'web'), + 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | which utilizes session storage plus the Eloquent user provider. + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | If you have multiple user tables or models you may configure multiple + | providers to represent the model / table. These providers may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => env('AUTH_MODEL', App\Models\User::class), + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | These configuration options specify the behavior of Laravel's password + | reset functionality, including the table utilized for token storage + | and the user provider that is invoked to actually retrieve users. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | window expires and users are asked to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..925f7d2 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,108 @@ + env('CACHE_STORE', 'database'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "array", "database", "file", "memcached", + | "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_CACHE_CONNECTION'), + 'table' => env('DB_CACHE_TABLE', 'cache'), + 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), + 'lock_table' => env('DB_CACHE_LOCK_TABLE'), + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_CACHE_CONNECTION', 'cache'), + 'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'), + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, and DynamoDB cache + | stores, there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..8910562 --- /dev/null +++ b/config/database.php @@ -0,0 +1,174 @@ + env('DB_CONNECTION', 'sqlite'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Below are all of the database connections defined for your application. + | An example configuration is provided for each database system which + | is supported by Laravel. You're free to add / remove connections. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DB_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + 'busy_timeout' => null, + 'journal_mode' => null, + 'synchronous' => null, + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'mariadb' => [ + 'driver' => 'mariadb', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run on the database. + | + */ + + 'migrations' => [ + 'table' => 'migrations', + 'update_date_on_publish' => true, + ], + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as Memcached. You may define your connection settings here. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + 'persistent' => env('REDIS_PERSISTENT', false), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..3d671bd --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,80 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. + | + | Supported drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app/private'), + 'serve' => true, + 'throw' => false, + 'report' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + 'report' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + 'report' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/inertia.php b/config/inertia.php new file mode 100644 index 0000000..f75e7b8 --- /dev/null +++ b/config/inertia.php @@ -0,0 +1,55 @@ + [ + 'enabled' => true, + 'url' => 'http://127.0.0.1:13714', + // 'bundle' => base_path('bootstrap/ssr/ssr.mjs'), + + ], + + /* + |-------------------------------------------------------------------------- + | Testing + |-------------------------------------------------------------------------- + | + | The values described here are used to locate Inertia components on the + | filesystem. For instance, when using `assertInertia`, the assertion + | attempts to locate the component as a file relative to the paths. + | + */ + + 'testing' => [ + + 'ensure_pages_exist' => true, + + 'page_paths' => [ + resource_path('js/pages'), + ], + + 'page_extensions' => [ + 'js', + 'jsx', + 'svelte', + 'ts', + 'tsx', + 'vue', + ], + + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..8d94292 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,132 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => env('LOG_DEPRECATIONS_TRACE', false), + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Laravel + | utilizes the Monolog PHP logging library, which includes a variety + | of powerful log handlers and formatters that you're free to use. + | + | Available drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", "custom", "stack" + | + */ + + 'channels' => [ + + 'stack' => [ + 'driver' => 'stack', + 'channels' => explode(',', env('LOG_STACK', 'single')), + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => env('LOG_DAILY_DAYS', 14), + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'), + 'emoji' => env('LOG_SLACK_EMOJI', ':boom:'), + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER), + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..756305b --- /dev/null +++ b/config/mail.php @@ -0,0 +1,116 @@ + env('MAIL_MAILER', 'log'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers that can be used + | when delivering an email. You may specify which one you're using for + | your mailers below. You may also add additional mailers if needed. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "resend", "log", "array", + | "failover", "roundrobin" + | + */ + + 'mailers' => [ + + 'smtp' => [ + 'transport' => 'smtp', + 'scheme' => env('MAIL_SCHEME'), + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', '127.0.0.1'), + 'port' => env('MAIL_PORT', 2525), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'), + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'resend' => [ + 'transport' => 'resend', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all emails sent by your application to be sent from + | the same address. Here you may specify a name and address that is + | used globally for all emails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..116bd8d --- /dev/null +++ b/config/queue.php @@ -0,0 +1,112 @@ + env('QUEUE_CONNECTION', 'database'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection options for every queue backend + | used by your application. An example configuration is provided for + | each backend supported by Laravel. You're also free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_QUEUE_CONNECTION'), + 'table' => env('DB_QUEUE_TABLE', 'jobs'), + 'queue' => env('DB_QUEUE', 'default'), + 'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90), + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), + 'queue' => env('BEANSTALKD_QUEUE', 'default'), + 'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90), + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_QUEUE_CONNECTION', 'default'), + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90), + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control how and where failed jobs are stored. Laravel ships with + | support for storing failed jobs in a simple file or in a database. + | + | Supported drivers: "database-uuids", "dynamodb", "file", "null" + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..27a3617 --- /dev/null +++ b/config/services.php @@ -0,0 +1,38 @@ + [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'resend' => [ + 'key' => env('RESEND_KEY'), + ], + + 'slack' => [ + 'notifications' => [ + 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), + 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), + ], + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..ba0aa60 --- /dev/null +++ b/config/session.php @@ -0,0 +1,217 @@ + env('SESSION_DRIVER', 'database'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to expire immediately when the browser is closed then you may + | indicate that via the expire_on_close configuration option. + | + */ + + 'lifetime' => (int) env('SESSION_LIFETIME', 120), + + 'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false), + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it's stored. All encryption is performed + | automatically by Laravel and you may use the session like normal. + | + */ + + 'encrypt' => env('SESSION_ENCRYPT', false), + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When utilizing the "file" session driver, the session files are placed + | on disk. The default storage location is defined here; however, you + | are free to provide another location where they should be stored. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table to + | be used to store sessions. Of course, a sensible default is defined + | for you; however, you're welcome to change this to another table. + | + */ + + 'table' => env('SESSION_TABLE', 'sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using one of the framework's cache driven session backends, you may + | define the cache store which should be used to store the session data + | between requests. This must match one of your defined cache stores. + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the session cookie that is created by + | the framework. Typically, you should not need to change this value + | since doing so does not grant a meaningful security improvement. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application, but you're free to change this when necessary. + | + */ + + 'path' => env('SESSION_PATH', '/'), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | This value determines the domain and subdomains the session cookie is + | available to. By default, the cookie will be available to the root + | domain and all subdomains. Typically, this shouldn't be changed. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. It's unlikely you should disable this option. + | + */ + + 'http_only' => env('SESSION_HTTP_ONLY', true), + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" to permit secure cross-site requests. + | + | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => env('SESSION_SAME_SITE', 'lax'), + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => env('SESSION_PARTITIONED_COOKIE', false), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,44 @@ + + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php new file mode 100644 index 0000000..6250adc --- /dev/null +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -0,0 +1,49 @@ +uuid('id')->primary(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + + Schema::create('password_reset_tokens', function (Blueprint $table) { + $table->string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + + Schema::create('sessions', function (Blueprint $table) { + $table->string('id')->primary(); + $table->uuid('user_id')->nullable()->index(); + $table->string('ip_address', 45)->nullable(); + $table->text('user_agent')->nullable(); + $table->longText('payload'); + $table->integer('last_activity')->index(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + Schema::dropIfExists('password_reset_tokens'); + Schema::dropIfExists('sessions'); + } +}; diff --git a/database/migrations/0001_01_01_000001_create_cache_table.php b/database/migrations/0001_01_01_000001_create_cache_table.php new file mode 100644 index 0000000..b9c106b --- /dev/null +++ b/database/migrations/0001_01_01_000001_create_cache_table.php @@ -0,0 +1,35 @@ +string('key')->primary(); + $table->mediumText('value'); + $table->integer('expiration'); + }); + + Schema::create('cache_locks', function (Blueprint $table) { + $table->string('key')->primary(); + $table->string('owner'); + $table->integer('expiration'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cache'); + Schema::dropIfExists('cache_locks'); + } +}; diff --git a/database/migrations/0001_01_01_000002_create_jobs_table.php b/database/migrations/0001_01_01_000002_create_jobs_table.php new file mode 100644 index 0000000..425e705 --- /dev/null +++ b/database/migrations/0001_01_01_000002_create_jobs_table.php @@ -0,0 +1,57 @@ +id(); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + + Schema::create('job_batches', function (Blueprint $table) { + $table->string('id')->primary(); + $table->string('name'); + $table->integer('total_jobs'); + $table->integer('pending_jobs'); + $table->integer('failed_jobs'); + $table->longText('failed_job_ids'); + $table->mediumText('options')->nullable(); + $table->integer('cancelled_at')->nullable(); + $table->integer('created_at'); + $table->integer('finished_at')->nullable(); + }); + + Schema::create('failed_jobs', function (Blueprint $table) { + $table->id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jobs'); + Schema::dropIfExists('job_batches'); + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2025_04_25_171116_create_m_employee_table.php b/database/migrations/2025_04_25_171116_create_m_employee_table.php new file mode 100644 index 0000000..6fdc03f --- /dev/null +++ b/database/migrations/2025_04_25_171116_create_m_employee_table.php @@ -0,0 +1,40 @@ +uuid('id')->primary(); + $table->uuid('user_id')->nullable(); + $table->string('employee_id', 20)->unique()->index(); + $table->enum('gender', ['laki-laki', 'perempuan']); + $table->string('nik', 16)->nullable()->index(); + $table->date('birth_date'); + $table->string('birth_place', 100)->nullable(); + $table->string('address', 255)->nullable(); + $table->string('phone_number', 15)->nullable(); + $table->string('specialization', 100)->nullable(); + $table->string('license_number', 50)->nullable(); + $table->date('join_date'); + $table->date('resign_date')->nullable(); + $table->boolean('is_active')->default(true); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('m_employee'); + } +}; diff --git a/database/migrations/2025_04_26_021536_create_m_patient_table.php b/database/migrations/2025_04_26_021536_create_m_patient_table.php new file mode 100644 index 0000000..14564dc --- /dev/null +++ b/database/migrations/2025_04_26_021536_create_m_patient_table.php @@ -0,0 +1,43 @@ +uuid('id')->primary(); + $table->string('medical_record_number', 20)->unique()->index(); + $table->string('nik', 16)->nullable()->index(); + $table->string('name', 100); + $table->enum('gender', ['laki-laki', 'perempuan']); + $table->date('birth_date'); + $table->string('birth_place', 100)->nullable(); + $table->string('address', 255)->nullable(); + $table->string('phone_number', 15)->nullable(); + $table->string('email', 100)->nullable(); + $table->enum('blood_type', ['A', 'B', 'AB', 'O', 'unknown'])->default('unknown'); + $table->enum('religion', ['islam', 'kristen', 'katolik', 'hindu', 'budha', 'konghucu', 'other'])->nullable(); + $table->enum('marital_status', ['lajang', 'menikah', 'cerai', 'duda/janda'])->nullable(); + $table->string('emergency_contact_name', 100)->nullable(); + $table->string('emergency_contact_phone', 15)->nullable(); + $table->string('emergency_contact_relation', 50)->nullable(); + $table->boolean('is_active')->default(true); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('m_patient'); + } +}; diff --git a/database/migrations/2025_04_26_042837_create_m_insurance_table.php b/database/migrations/2025_04_26_042837_create_m_insurance_table.php new file mode 100644 index 0000000..885f0f5 --- /dev/null +++ b/database/migrations/2025_04_26_042837_create_m_insurance_table.php @@ -0,0 +1,42 @@ +uuid('id')->primary(); + $table->string('code', 20)->unique(); + $table->string('name', 100); + $table->string('address', 255)->nullable(); + $table->string('phone_number', 15)->nullable(); + $table->string('email', 100)->nullable(); + $table->string('contact_person', 100)->nullable(); + $table->string('contact_person_phone', 15)->nullable(); + $table->decimal('coverage_percentage', 5, 2)->default(100.00); + $table->text('coverage_description')->nullable(); + $table->text('agreement_details')->nullable(); + $table->date('agreement_start_date')->nullable(); + $table->date('agreement_end_date')->nullable(); + $table->string('agreement_file_path')->nullable(); + + $table->boolean('is_active')->default(true); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('m_insurance'); + } +}; diff --git a/database/migrations/2025_04_26_060659_create_m_service_room_table.php b/database/migrations/2025_04_26_060659_create_m_service_room_table.php new file mode 100644 index 0000000..3ba8728 --- /dev/null +++ b/database/migrations/2025_04_26_060659_create_m_service_room_table.php @@ -0,0 +1,57 @@ +uuid('id')->primary(); + $table->string('code', 20)->unique()->comment('Kode unik ruangan: RJ-101, RI-201, dll'); + $table->string('name', 100)->comment('Nama ruangan: Ruang Bedah 1, Kamar VIP 2, dll'); + $table->enum('type', [ + 'Rawat Jalan', + 'Rawat Inap', + 'UGD', + 'ICU', + 'Bedah', + 'Persalinan', + 'Radiologi', + 'Laboratorium', + 'Farmasi', + 'Lainnya' + ])->default('Rawat Inap')->comment('Jenis ruangan'); + $table->enum('class', [ + 'vip', + 'class_1', + 'class_2', + 'class_3', + 'standard', + 'non_class' + ])->default('standard')->comment('Kelas ruangan'); + $table->string('floor', 10)->nullable()->comment('Lantai: 1, 2, 3, dll'); + $table->string('building', 50)->nullable()->comment('Gedung: A, B, Utama, dll'); + $table->string('wing', 50)->nullable()->comment('Sayap: Timur, Barat, dll'); + $table->integer('capacity')->default(1)->comment('Kapasitas pasien'); + $table->decimal('price_per_day', 12, 2)->nullable()->comment('Harga per hari jika ada'); + $table->text('facilities')->nullable()->comment('Fasilitas ruangan (JSON atau text)'); + $table->boolean('is_available')->default(true)->comment('Status ketersediaan'); + $table->boolean('is_active')->default(true)->comment('Status aktif/tidak'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('m_service_room'); + } +}; diff --git a/database/migrations/2025_04_26_082655_create_m_procedure_table.php b/database/migrations/2025_04_26_082655_create_m_procedure_table.php new file mode 100644 index 0000000..0fc60f7 --- /dev/null +++ b/database/migrations/2025_04_26_082655_create_m_procedure_table.php @@ -0,0 +1,46 @@ +uuid('id')->primary(); + $table->string('code', 20)->unique()->comment('Kode prosedur: KON-001, OPR-102, dll'); + $table->string('name', 100)->comment('Nama prosedur: Konsultasi Umum, Operasi Appendiks, dll'); + $table->enum('category', [ + 'Konsultasi', + 'Pemeriksaan', + 'Tindakan', + 'Operasi', + 'Laboratorium', + 'Radiologi', + 'Obat', + 'Lainnya' + ])->default('Tindakan')->comment('Kategori prosedur'); + $table->text('description')->nullable()->comment('Penjelasan prosedur'); + $table->decimal('base_price', 12, 2)->default(0.00)->comment('Harga dasar'); + $table->boolean('is_taxable')->default(true)->comment('Kena pajak?'); + $table->decimal('tax_percentage', 5, 2)->default(10.00)->comment('Persentase pajak'); + $table->boolean('is_discountable')->default(true)->comment('Bisa dapat diskon?'); + $table->boolean('requires_approval')->default(false)->comment('Butuh persetujuan?'); + $table->boolean('is_active')->default(true)->comment('Status aktif/tidak'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('m_procedure'); + } +}; diff --git a/database/migrations/2025_04_27_045425_create_t_transaction_table.php b/database/migrations/2025_04_27_045425_create_t_transaction_table.php new file mode 100644 index 0000000..b0a5316 --- /dev/null +++ b/database/migrations/2025_04_27_045425_create_t_transaction_table.php @@ -0,0 +1,61 @@ +uuid('id')->primary(); + $table->string('invoice_number', 20)->unique()->index()->comment('Format: INV-YYYYMMDD-001'); + $table->uuid('registration_id')->index()->comment('Referensi ke t_registration'); + $table->uuid('patient_id')->index()->comment('Referensi ke m_patient'); + $table->uuid('insurance_id')->nullable()->index()->comment('Referensi ke m_insurance'); + $table->uuid('cashier_id')->nullable()->index()->comment('Petugas kasir yang memproses'); + $table->dateTime('transaction_datetime')->comment('Waktu transaksi dibuat'); + $table->dateTime('payment_datetime')->nullable()->comment('Waktu pembayaran'); + $table->date('due_date')->nullable()->comment('Jatuh tempo pembayaran'); + $table->decimal('subtotal', 12, 2)->comment('Total sebelum pajak & diskon'); + $table->decimal('tax_amount', 12, 2)->default(0)->comment('Total pajak'); + $table->decimal('discount_amount', 12, 2)->default(0)->comment('Total diskon'); + $table->string('discount_reason', 100)->nullable()->comment('Alasan diskon'); + $table->decimal('grand_total', 12, 2)->comment('Total yang harus dibayar'); + $table->decimal('paid_amount', 12, 2)->default(0)->comment('Jumlah yang sudah dibayar'); + $table->decimal('change_amount', 12, 2)->default(0)->comment('Kembalian'); + $table->decimal('insurance_covered_amount', 12, 2)->default(0)->comment('Ditanggung asuransi'); + $table->decimal('patient_responsibility', 12, 2)->default(0)->comment('Tanggungan pasien'); + $table->enum('payment_method', [ + 'cash', + 'debit_card', + 'credit_card', + 'transfer', + 'insurance', + 'other' + ])->default('cash')->comment('Metode pembayaran'); + $table->string('payment_reference', 100)->nullable()->comment('No. referensi pembayaran'); + $table->enum('status', [ + 'pending', + 'paid', + 'partially_paid', + 'cancelled', + 'refunded' + ])->default('pending')->comment('Status transaksi'); + $table->text('notes')->nullable()->comment('Catatan tambahan'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('t_transaction'); + } +}; diff --git a/database/migrations/2025_04_27_050234_create_t_transaction_detail_table.php b/database/migrations/2025_04_27_050234_create_t_transaction_detail_table.php new file mode 100644 index 0000000..95878e4 --- /dev/null +++ b/database/migrations/2025_04_27_050234_create_t_transaction_detail_table.php @@ -0,0 +1,39 @@ +uuid('id')->primary(); + $table->uuid('transaction_id')->index()->comment('Referensi ke t_transaction'); + $table->uuid('procedure_id')->index()->comment('Referensi ke m_procedure'); + $table->uuid('performed_by')->nullable()->index()->comment('Dokter/perawat yang melakukan tindakan'); + $table->string('procedure_code', 20)->comment('Kode prosedur'); + $table->string('procedure_name', 100)->comment('Nama prosedur'); + $table->integer('quantity')->default(1)->comment('Jumlah'); + $table->decimal('unit_price', 12, 2)->comment('Harga satuan'); + $table->decimal('discount_amount', 12, 2)->default(0)->comment('Diskon per item'); + $table->decimal('tax_amount', 12, 2)->default(0)->comment('Pajak per item'); + $table->decimal('subtotal', 12, 2)->comment('Total per item'); + $table->dateTime('performed_datetime')->nullable()->comment('Waktu tindakan dilakukan'); + $table->text('notes')->nullable()->comment('Catatan prosedur'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('t_transaction_detail'); + } +}; diff --git a/database/migrations/2025_04_27_050712_create_t_registration_table.php b/database/migrations/2025_04_27_050712_create_t_registration_table.php new file mode 100644 index 0000000..bb9a404 --- /dev/null +++ b/database/migrations/2025_04_27_050712_create_t_registration_table.php @@ -0,0 +1,54 @@ +uuid('id')->primary(); + $table->string('registration_number', 20)->unique()->index()->comment('Format: RJ-YYYYMMDD-001 (Rawat Jalan), RI-YYYYMMDD-001 (Rawat Inap), UGD-YYYYMMDD-001 (Gawat Darurat)'); + $table->uuid('patient_id')->index()->comment('Referensi ke tabel pasien (m_patient)'); + $table->uuid('employee_id')->index()->comment('Dokter penanggung jawab utama'); + $table->uuid('service_room_id')->index()->comment('Ruangan yang digunakan'); + $table->uuid('insurance_id')->nullable()->index()->comment('Asuransi yang digunakan (jika ada)'); + $table->uuid('created_by')->nullable()->index()->comment('Petugas yang melakukan pendaftaran'); + $table->enum('registration_type', ['Rawat Jalan', 'Rawat Inap', 'UGD'])->default('Rawat Jalan')->comment('Jenis pendaftaran pasien'); + $table->enum('patient_type', ['Umum', 'BPJS', 'Asuransi', 'Perusahaan', 'Gratis']) + ->default('Umum') + ->comment('Kategori pasien berdasarkan pembiayaan'); + $table->dateTime('registration_datetime')->comment('Waktu pendaftaran pasien'); + $table->dateTime('discharge_datetime')->nullable()->comment('Waktu pasien keluar/pulang'); + $table->dateTime('estimated_discharge')->nullable()->comment('Perkiraan waktu pulang (untuk rawat inap)'); + $table->json('diagnoses')->nullable()->comment('Diagnosa pasien dalam format JSON'); + $table->json('prescriptions')->nullable()->comment('Resep obat dalam format JSON'); + $table->text('medical_notes')->nullable()->comment('Catatan medis tambahan'); + $table->text('complaint')->nullable()->comment('Keluhan utama pasien'); + $table->enum('status', ['registered', 'in_progress', 'completed', 'cancelled']) + ->default('registered') + ->comment('Status proses pendaftaran'); + $table->enum('payment_status', ['unpaid', 'partial', 'paid', 'insurance_cover']) + ->default('unpaid') + ->comment('Status pembayaran'); + $table->boolean('need_icu')->default(false)->comment('Butuh perawatan ICU'); + $table->boolean('is_referral')->default(false)->comment('Pasien rujukan'); + $table->string('referral_from', 100)->nullable()->comment('Asal rujukan'); + $table->boolean('is_active')->default(true)->comment('Status aktif/tidak aktif'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('t_registration'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..d01a0ef --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,23 @@ +create(); + + User::factory()->create([ + 'name' => 'Test User', + 'email' => 'test@example.com', + ]); + } +} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..a136d22 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,44 @@ +import js from '@eslint/js'; +import prettier from 'eslint-config-prettier'; +import react from 'eslint-plugin-react'; +import reactHooks from 'eslint-plugin-react-hooks'; +import globals from 'globals'; +import typescript from 'typescript-eslint'; + +/** @type {import('eslint').Linter.Config[]} */ +export default [ + js.configs.recommended, + ...typescript.configs.recommended, + { + ...react.configs.flat.recommended, + ...react.configs.flat['jsx-runtime'], // Required for React 17+ + languageOptions: { + globals: { + ...globals.browser, + }, + }, + rules: { + 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', + 'react/no-unescaped-entities': 'off', + }, + settings: { + react: { + version: 'detect', + }, + }, + }, + { + plugins: { + 'react-hooks': reactHooks, + }, + rules: { + 'react-hooks/rules-of-hooks': 'error', + 'react-hooks/exhaustive-deps': 'warn', + }, + }, + { + ignores: ['vendor', 'node_modules', 'public', 'bootstrap/ssr', 'tailwind.config.js'], + }, + prettier, // Turn off all rules that might conflict with Prettier +]; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..df998c7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8747 @@ +{ + "name": "sim-rsab-hk", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@headlessui/react": "^2.2.0", + "@inertiajs/react": "^2.0.0", + "@radix-ui/react-alert-dialog": "^1.1.11", + "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-checkbox": "^1.1.4", + "@radix-ui/react-collapsible": "^1.1.8", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-navigation-menu": "^1.2.5", + "@radix-ui/react-popover": "^1.1.11", + "@radix-ui/react-radio-group": "^1.3.4", + "@radix-ui/react-select": "^2.1.6", + "@radix-ui/react-separator": "^1.1.2", + "@radix-ui/react-slot": "^1.2.0", + "@radix-ui/react-toggle": "^1.1.2", + "@radix-ui/react-toggle-group": "^1.1.2", + "@radix-ui/react-tooltip": "^1.1.8", + "@tailwindcss/vite": "^4.0.6", + "@types/react": "^19.0.3", + "@types/react-dom": "^19.0.2", + "@vitejs/plugin-react": "^4.3.4", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "concurrently": "^9.0.1", + "date-fns": "^3.6.0", + "globals": "^15.14.0", + "laravel-vite-plugin": "^1.0", + "lucide-react": "^0.475.0", + "next-themes": "^0.4.6", + "react": "^19.0.0", + "react-day-picker": "^8.10.1", + "react-dom": "^19.0.0", + "sonner": "^2.0.3", + "tailwind-merge": "^3.0.1", + "tailwindcss": "^4.0.0", + "tailwindcss-animate": "^1.0.7", + "typescript": "^5.7.2", + "vite": "^6.0" + }, + "devDependencies": { + "@eslint/js": "^9.19.0", + "@types/node": "^22.13.5", + "eslint": "^9.17.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "^5.1.0", + "prettier": "^3.4.2", + "prettier-plugin-organize-imports": "^4.1.0", + "prettier-plugin-tailwindcss": "^0.6.11", + "typescript-eslint": "^8.23.0" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.9.5", + "@tailwindcss/oxide-linux-x64-gnu": "^4.0.1", + "lightningcss-linux-x64-gnu": "^1.29.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", + "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.28", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", + "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "license": "MIT" + }, + "node_modules/@headlessui/react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.0.tgz", + "integrity": "sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.26.16", + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@tanstack/react-virtual": "^3.8.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inertiajs/core": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-2.0.4.tgz", + "integrity": "sha512-gCUqpwBRYOhz0hwBDWca2lkk+Mc+36GvbRoE0rEvYFpzQAMMP0xFhH9h8hr7VWTn+vVOZRuDvakI+4cazwtvCg==", + "license": "MIT", + "dependencies": { + "axios": "^1.6.0", + "deepmerge": "^4.0.0", + "qs": "^6.9.0" + } + }, + "node_modules/@inertiajs/react": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@inertiajs/react/-/react-2.0.4.tgz", + "integrity": "sha512-syPqZNVU5v0DB3VHCm9aVQafJ9kgkxtC5lfc4WOTBxtUjZjbJYDwt5d0yLOhyfU4S7d9CR0dhlkkEt1DsedD3Q==", + "license": "MIT", + "dependencies": { + "@inertiajs/core": "2.0.4", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.11.tgz", + "integrity": "sha512-4KfkwrFnAw3Y5Jeoq6G+JYSKW0JfIS3uDdFC/79Jw9AsMayZMizSSMxk1gkrolYXsa/WzbbDfOA7/D8N5D+l1g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.11", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/react-primitive": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz", + "integrity": "sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", + "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.3.tgz", + "integrity": "sha512-Paen00T4P8L8gd9bNsRMw7Cbaz85oxiv+hzomsRZgFm2byltPFDtfcoqlWJ8GyZlIBWgLssJlzLCnKU0G0302g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.4.tgz", + "integrity": "sha512-wP0CPAHq+P5I4INKe3hJrIa1WoNqqrejzW+zoU0rOvo1b9gDEJJFl2rYfO1PYJUQCc2H1WZxIJmyv9BS8i5fLw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.8.tgz", + "integrity": "sha512-hxEsLvK9WxIAPyxdDRULL4hcaSjMZCfP7fHB0Z1uUnDoDBat1Zh46hwYfa69DeZAbJrPckjf0AGAtEZyvDyJbw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-primitive": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz", + "integrity": "sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.2.tgz", + "integrity": "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.11.tgz", + "integrity": "sha512-yI7S1ipkP5/+99qhSI6nthfo/tR6bL6Zgxi/+1UO6qPa6UeM6nlafWcQ65vB4rU2XjgjMfMhI3k9Y5MztA62VQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.7", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.4", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.6", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.7.tgz", + "integrity": "sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.4.tgz", + "integrity": "sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.6.tgz", + "integrity": "sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz", + "integrity": "sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", + "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.6.tgz", + "integrity": "sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.6", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz", + "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.2.tgz", + "integrity": "sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.6.tgz", + "integrity": "sha512-tBBb5CXDJW3t2mo9WlO7r6GTmWV0F0uzHZVFmlRmYpiSK1CDU5IKojP1pm7oknpBOrFZx/YgBRW9oorPO2S/Lg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-roving-focus": "1.1.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.5.tgz", + "integrity": "sha512-myMHHQUZ3ZLTi8W381/Vu43Ia0NqakkQZ2vzynMmTUtQQ9kNkjzhOwkZC9TAM5R07OZUVIQyHC06f/9JZJpvvA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.11.tgz", + "integrity": "sha512-yFMfZkVA5G3GJnBgb2PxrrcLKm1ZLWXrbYVgdyTl//0TYEIHS9LJbnyz7WWcZ0qCq7hIlJZpRtxeSeIG5T5oJw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.7", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.4", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.4", + "@radix-ui/react-portal": "1.1.6", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-arrow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.4.tgz", + "integrity": "sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.7.tgz", + "integrity": "sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.4.tgz", + "integrity": "sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.4.tgz", + "integrity": "sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.4", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-portal": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.6.tgz", + "integrity": "sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-primitive": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz", + "integrity": "sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", + "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", + "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.4.tgz", + "integrity": "sha512-N4J9QFdW5zcJNxxY/zwTXBN4Uc5VEuRM7ZLjNfnWoKmNvgrPtNNw4P8zY532O3qL6aPkaNO+gY9y6bfzmH4U1g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-roving-focus": "1.1.7", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-collection": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.4.tgz", + "integrity": "sha512-cv4vSf7HttqXilDnAnvINd53OTl1/bjUYVZrkFnA7nwmY9Ob2POUy0WY0sfqBAe1s5FyKsyceQlqiEGPYNTadg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-primitive": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz", + "integrity": "sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.7.tgz", + "integrity": "sha512-C6oAg451/fQT3EGbWHbCQjYTtbyjNO1uzQgMzwyivcHT3GKNEmu1q3UuREhN+HzHAVtv3ivMVK08QlC+PkYw9Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.4", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.0", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.2.tgz", + "integrity": "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.6.tgz", + "integrity": "sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.2.tgz", + "integrity": "sha512-oZfHcaAp2Y6KFBX6I5P1u7CQoy4lheCGiYj+pGFrHy8E/VNRb5E39TkTr3JrV520csPBTZjkuKFdEsjS5EUNKQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.2.tgz", + "integrity": "sha512-lntKchNWx3aCHuWKiDY+8WudiegQvBpDRAYL8dKLRvKEH8VOpl0XX6SSU/bUBqIRJbcTy4+MW06Wv8vgp10rzQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.2.tgz", + "integrity": "sha512-JBm6s6aVG/nwuY5eadhU2zDi/IwYS0sDM5ZWb4nymv/hn3hZdkw+gENn0LP4iY1yCd7+bgJaCwueMYJIU3vk4A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-roving-focus": "1.1.2", + "@radix-ui/react-toggle": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.8.tgz", + "integrity": "sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.2.tgz", + "integrity": "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@react-aria/focus": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.19.1.tgz", + "integrity": "sha512-bix9Bu1Ue7RPcYmjwcjhB14BMu2qzfJ3tMQLqDc9pweJA66nOw8DThy3IfVr8Z7j2PHktOLf9kcbiZpydKHqzg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.23.0", + "@react-aria/utils": "^3.27.0", + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.23.0.tgz", + "integrity": "sha512-0qR1atBIWrb7FzQ+Tmr3s8uH5mQdyRH78n0krYaG8tng9+u1JlSi8DGRSaC9ezKyNB84m7vHT207xnHXGeJ3Fg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.7", + "@react-aria/utils": "^3.27.0", + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", + "integrity": "sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.27.0.tgz", + "integrity": "sha512-p681OtApnKOdbeN8ITfnnYqfdHS0z7GE+4l8EXlfLnr70Rp/9xicBO6d2rU+V/B3JujDw2gPWxYKEnEeh0CGCw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.7", + "@react-stately/utils": "^3.10.5", + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.5", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.5.tgz", + "integrity": "sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/shared": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.27.0.tgz", + "integrity": "sha512-gvznmLhi6JPEf0bsq7SwRYTHAKKq/wcmKqFez9sRdbED+SPMUmK5omfZ6w3EwUFQHbYUa4zPBYedQ7Knv70RMw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz", + "integrity": "sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz", + "integrity": "sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", + "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", + "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz", + "integrity": "sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz", + "integrity": "sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz", + "integrity": "sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz", + "integrity": "sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", + "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", + "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz", + "integrity": "sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz", + "integrity": "sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz", + "integrity": "sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz", + "integrity": "sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", + "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", + "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", + "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz", + "integrity": "sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", + "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.10.tgz", + "integrity": "sha512-5YuI8pXfNkg5Ng12wgMic6jrFe4K8+eVmaC1kLsbA6g7iMgrj5fyl4hoLqHjmBDGpJXKxUAjwMSuJmc4oetnrg==", + "license": "MIT", + "dependencies": { + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "tailwindcss": "4.0.10" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.10.tgz", + "integrity": "sha512-vAPYXF1c2yH8jmepA82on3kLpgrHZQ0B7Q2tPeASXnKxJx3GP/Fe0j1RB6PDmR5UntwA0y0Z0bZYwLcnw4/OGw==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.0.10", + "@tailwindcss/oxide-darwin-arm64": "4.0.10", + "@tailwindcss/oxide-darwin-x64": "4.0.10", + "@tailwindcss/oxide-freebsd-x64": "4.0.10", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.10", + "@tailwindcss/oxide-linux-arm64-gnu": "4.0.10", + "@tailwindcss/oxide-linux-arm64-musl": "4.0.10", + "@tailwindcss/oxide-linux-x64-gnu": "4.0.10", + "@tailwindcss/oxide-linux-x64-musl": "4.0.10", + "@tailwindcss/oxide-win32-arm64-msvc": "4.0.10", + "@tailwindcss/oxide-win32-x64-msvc": "4.0.10" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.10.tgz", + "integrity": "sha512-HymaBJV/oB7fAMabW/EdWBrNskw9BOXoChYVnk/n3xq9LpK3eWNOcLeB4P52Bks+OpAyv8u0I/0WdrOkPRPv0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.10.tgz", + "integrity": "sha512-PJtNobUOQCydEpBbOmVhP+diTD8JEM7HRxgX9O72SODg+ynKDM0fNDkqKOX0CFR6+mCdOwRQdhnoulM6hM27TA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.10.tgz", + "integrity": "sha512-jUqYWjThIoLEUTX5WGwukGh0js+RGGFqjt0YhQnDyCDofBD/CBxOdbrsXX6CnYmbGw+a3BDrl0r3xbPY2fX8Mw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.10.tgz", + "integrity": "sha512-m4SdTo/MkZJX2FEyiOjtQAsKG17q9d/RJXTlXDu6owVIM/U9TG0Vy3XdW/L4Yh0mHsayhHUJVIpvV0ZaWMs7nQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.10.tgz", + "integrity": "sha512-cdq+Xa4cgYOYgg2n8RdL2/COIuW0FZJRvSg+AtGuZWG0omVS9XIf/wLlL+ln7pCTMt9zGOX1Yyryfrw12tYw4Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.10.tgz", + "integrity": "sha512-6PMpTsv8vE0xiaPnpOptSvO99JkIqW9KrtmPYp/Khr6i9AkVmf95XGQxqcgwlU7Gdo7eb02fK5z0c5crK/pTew==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.10.tgz", + "integrity": "sha512-tI264V1H4yxRnYaOzYWm+5x94QtoreoBpVkX0OpQTycvnv6JPUC6wqsZkrDwpphaDitUGY+mv7rGQZ5vzB/Tlg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.10.tgz", + "integrity": "sha512-Xe15DqfzcYzozbhhgTUeZNnmnr56HdnqeollvLumxKvrCicDFkeZimz299Czyw4GeRUHZgcdccwr+Do3/Y2aZA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.10.tgz", + "integrity": "sha512-L0NTk+UPpx4l/xD0G+UDBYhu6whA7xh415nErEnliFK8KV5lQlWz66icpHLmT4fTpAZTBaD+ul+GorlL1D1xCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.10.tgz", + "integrity": "sha512-IXNvUmLBmTJNcMofOl8B0fzNvwUFPNvFE799THaEPgi16zj+WqFLVQh4N5+zuI1vgtZTaIJrZmqHhjqNPLOItg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.10.tgz", + "integrity": "sha512-K/51OZBREcq2J4JE8r9qdX2qjnVfUrm8AT4R+Pd9E27AiIyr7IkLQQjR3mj2Lpb/jUtQ8NS0KkJ1nXMoQpSlkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.10.tgz", + "integrity": "sha512-SFY/FgEj68k/6o3Q0PxoZK6KzQZV9T4yMy+kwOGq17NOWXAyDJ+Fagz3tkzqhzKpWTzMMPFfIo+g5r3seyp6uQ==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.0.10", + "@tailwindcss/oxide": "4.0.10", + "lightningcss": "^1.29.1", + "tailwindcss": "4.0.10" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "node_modules/@tanstack/react-virtual": { + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.2.tgz", + "integrity": "sha512-LceSUgABBKF6HSsHK2ZqHzQ37IKV/jlaWbHm+NyTa3/WNb/JZVcThDuTainf+PixltOOcFCYXwxbLpOX9sCx+g==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.13.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.2.tgz", + "integrity": "sha512-Qzz4EgzMbO5gKrmqUondCjiHcuu4B1ftHb0pjCut661lXZdGoHeze9f/M8iwsK1t5LGR6aNuNGU7mxkowaW6RQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.13.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.9.tgz", + "integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/react": { + "version": "19.0.10", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", + "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", + "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.0.tgz", + "integrity": "sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.26.0", + "@typescript-eslint/type-utils": "8.26.0", + "@typescript-eslint/utils": "8.26.0", + "@typescript-eslint/visitor-keys": "8.26.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.0.tgz", + "integrity": "sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.26.0", + "@typescript-eslint/types": "8.26.0", + "@typescript-eslint/typescript-estree": "8.26.0", + "@typescript-eslint/visitor-keys": "8.26.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.0.tgz", + "integrity": "sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.0", + "@typescript-eslint/visitor-keys": "8.26.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.0.tgz", + "integrity": "sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.26.0", + "@typescript-eslint/utils": "8.26.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.0.tgz", + "integrity": "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.0.tgz", + "integrity": "sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.0", + "@typescript-eslint/visitor-keys": "8.26.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.0.tgz", + "integrity": "sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.26.0", + "@typescript-eslint/types": "8.26.0", + "@typescript-eslint/typescript-estree": "8.26.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.0.tgz", + "integrity": "sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001702", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz", + "integrity": "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concurrently": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.1.2.tgz", + "integrity": "sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.112", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.112.tgz", + "integrity": "sha512-oen93kVyqSb3l+ziUgzIOlWt/oOuy4zRmpwestMn4rhFWAoFJeFuCVte9F2fASjeZZo7l/Cif9TiyrdW4CwEMA==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", + "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.21.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.2.tgz", + "integrity": "sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "build/bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "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, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/laravel-vite-plugin": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.2.0.tgz", + "integrity": "sha512-R0pJ+IcTVeqEMoKz/B2Ij57QVq3sFTABiFmb06gAwFdivbOgsUtuhX6N2MGLEArajrS3U5JbberzwOe7uXHMHQ==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "vite-plugin-full-reload": "^1.1.0" + }, + "bin": { + "clean-orphaned-assets": "bin/clean.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.1.tgz", + "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.1", + "lightningcss-darwin-x64": "1.29.1", + "lightningcss-freebsd-x64": "1.29.1", + "lightningcss-linux-arm-gnueabihf": "1.29.1", + "lightningcss-linux-arm64-gnu": "1.29.1", + "lightningcss-linux-arm64-musl": "1.29.1", + "lightningcss-linux-x64-gnu": "1.29.1", + "lightningcss-linux-x64-musl": "1.29.1", + "lightningcss-win32-arm64-msvc": "1.29.1", + "lightningcss-win32-x64-msvc": "1.29.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz", + "integrity": "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz", + "integrity": "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz", + "integrity": "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz", + "integrity": "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz", + "integrity": "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz", + "integrity": "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz", + "integrity": "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz", + "integrity": "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz", + "integrity": "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz", + "integrity": "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.475.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.475.0.tgz", + "integrity": "sha512-NJzvVu1HwFVeZ+Gwq2q00KygM1aBhy/ZrhY9FsAgJtpB+E4R7uxRk9M2iKvHa6/vNxZydIB59htha4c2vvwvVg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-organize-imports": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz", + "integrity": "sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "prettier": ">=2.0", + "typescript": ">=2.9", + "vue-tsc": "^2.1.0" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", + "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-day-picker": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz", + "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "date-fns": "^2.28.0 || ^3.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", + "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.9.tgz", + "integrity": "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.34.9", + "@rollup/rollup-android-arm64": "4.34.9", + "@rollup/rollup-darwin-arm64": "4.34.9", + "@rollup/rollup-darwin-x64": "4.34.9", + "@rollup/rollup-freebsd-arm64": "4.34.9", + "@rollup/rollup-freebsd-x64": "4.34.9", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.9", + "@rollup/rollup-linux-arm-musleabihf": "4.34.9", + "@rollup/rollup-linux-arm64-gnu": "4.34.9", + "@rollup/rollup-linux-arm64-musl": "4.34.9", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.9", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.9", + "@rollup/rollup-linux-riscv64-gnu": "4.34.9", + "@rollup/rollup-linux-s390x-gnu": "4.34.9", + "@rollup/rollup-linux-x64-gnu": "4.34.9", + "@rollup/rollup-linux-x64-musl": "4.34.9", + "@rollup/rollup-win32-arm64-msvc": "4.34.9", + "@rollup/rollup-win32-ia32-msvc": "4.34.9", + "@rollup/rollup-win32-x64-msvc": "4.34.9", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", + "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sonner": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.3.tgz", + "integrity": "sha512-njQ4Hht92m0sMqqHVDL32V2Oun9W1+PHO9NDv9FHfJjT3JT22IG4Jpo3FPQy+mouRKCXFWO+r67v6MrHX2zeIA==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" + }, + "node_modules/tailwind-merge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.2.tgz", + "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.10.tgz", + "integrity": "sha512-Z8U/6E2BWSdDkt3IWPiphoV+8V6aNzRmu2SriSbuhm6i3QIcY3TdUJzUP5NX8M8MZuIl+v4/77Rer8u4YSrSsg==", + "license": "MIT" + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.0.tgz", + "integrity": "sha512-PtVz9nAnuNJuAVeUFvwztjuUgSnJInODAUx47VDwWPXzd5vismPOtPtt83tzNXyOjVQbPRp786D6WFW/M2koIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.26.0", + "@typescript-eslint/parser": "8.26.0", + "@typescript-eslint/utils": "8.26.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/vite": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.3.tgz", + "integrity": "sha512-5nXH+QsELbFKhsEfWLkHrvgRpTdGJzqOZ+utSdmPTvwHmvU6ITTm3xx+mRusihkcI8GeC7lCDyn3kDtiki9scw==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-plugin-full-reload": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.2.0.tgz", + "integrity": "sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..66acc8c --- /dev/null +++ b/package.json @@ -0,0 +1,71 @@ +{ + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "build:ssr": "vite build && vite build --ssr", + "dev": "vite", + "format": "prettier --write resources/", + "format:check": "prettier --check resources/", + "lint": "eslint . --fix", + "types": "tsc --noEmit" + }, + "devDependencies": { + "@eslint/js": "^9.19.0", + "@types/node": "^22.13.5", + "eslint": "^9.17.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "^5.1.0", + "prettier": "^3.4.2", + "prettier-plugin-organize-imports": "^4.1.0", + "prettier-plugin-tailwindcss": "^0.6.11", + "typescript-eslint": "^8.23.0" + }, + "dependencies": { + "@headlessui/react": "^2.2.0", + "@inertiajs/react": "^2.0.0", + "@radix-ui/react-alert-dialog": "^1.1.11", + "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-checkbox": "^1.1.4", + "@radix-ui/react-collapsible": "^1.1.8", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-navigation-menu": "^1.2.5", + "@radix-ui/react-popover": "^1.1.11", + "@radix-ui/react-radio-group": "^1.3.4", + "@radix-ui/react-select": "^2.1.6", + "@radix-ui/react-separator": "^1.1.2", + "@radix-ui/react-slot": "^1.2.0", + "@radix-ui/react-toggle": "^1.1.2", + "@radix-ui/react-toggle-group": "^1.1.2", + "@radix-ui/react-tooltip": "^1.1.8", + "@tailwindcss/vite": "^4.0.6", + "@types/react": "^19.0.3", + "@types/react-dom": "^19.0.2", + "@vitejs/plugin-react": "^4.3.4", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "concurrently": "^9.0.1", + "date-fns": "^3.6.0", + "globals": "^15.14.0", + "laravel-vite-plugin": "^1.0", + "lucide-react": "^0.475.0", + "next-themes": "^0.4.6", + "react": "^19.0.0", + "react-day-picker": "^8.10.1", + "react-dom": "^19.0.0", + "sonner": "^2.0.3", + "tailwind-merge": "^3.0.1", + "tailwindcss": "^4.0.0", + "tailwindcss-animate": "^1.0.7", + "typescript": "^5.7.2", + "vite": "^6.0" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.9.5", + "@tailwindcss/oxide-linux-x64-gnu": "^4.0.1", + "lightningcss-linux-x64-gnu": "^1.29.1" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..61c031c --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,33 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..b574a59 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,25 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Handle X-XSRF-Token Header + RewriteCond %{HTTP:x-xsrf-token} . + RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/bg-rsab-harapan_kita.jpeg b/public/bg-rsab-harapan_kita.jpeg new file mode 100644 index 0000000..684f346 Binary files /dev/null and b/public/bg-rsab-harapan_kita.jpeg differ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..ee8f07e --- /dev/null +++ b/public/index.php @@ -0,0 +1,20 @@ +handleRequest(Request::capture()); diff --git a/public/logo-kemenkes.svg b/public/logo-kemenkes.svg new file mode 100644 index 0000000..276c007 --- /dev/null +++ b/public/logo-kemenkes.svg @@ -0,0 +1,1948 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 +PQKp/b8B0N9ROQ== + + + diff --git a/public/logo.svg b/public/logo.svg new file mode 100644 index 0000000..3b7c63d --- /dev/null +++ b/public/logo.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/resources/css/app.css b/resources/css/app.css new file mode 100644 index 0000000..8cdc4dd --- /dev/null +++ b/resources/css/app.css @@ -0,0 +1,169 @@ +@import 'tailwindcss'; + +@plugin 'tailwindcss-animate'; + +@source '../views'; +@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; + +@custom-variant dark (&:is(.dark *)); + +@theme { + --font-sans: + 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + + --radius-lg: var(--radius); + --radius-md: calc(var(--radius) - 2px); + --radius-sm: calc(var(--radius) - 4px); + + --color-background: var(--background); + --color-foreground: var(--foreground); + + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +/* + The default border color has changed to `currentColor` in Tailwind CSS v4, + so we've added these compatibility styles to make sure everything still + looks the same as it did with Tailwind CSS v3. + + If we ever want to remove these styles, we need to add an explicit border + color utility to any element that depends on these defaults. +*/ +@layer base { + *, + ::after, + ::before, + ::backdrop, + ::file-selector-button { + border-color: var(--color-gray-200, currentColor); + } +} + +:root { + --background: oklch(0.98 0.01 210); /* hampir putih kebiruan */ + --foreground: oklch(0.22 0.02 250); /* abu kebiruan gelap */ + --card: oklch(0.97 0.01 210); + --card-foreground: oklch(0.22 0.02 250); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.22 0.02 250); + + --primary: oklch(0.55 0.12 220); /* biru tenang */ + --primary-foreground: oklch(0.98 0.01 210); + --secondary: oklch(0.926 0.061 150.801); /* hijau pastel */ + --secondary-foreground: oklch(0.1 0.02 150); + --muted: oklch(0.9 0.01 210); + --muted-foreground: oklch(0.45 0.01 210); + --accent: oklch(0.993 0.01 181.419); /* cyan lembut */ + --accent-foreground: oklch(0.15 0.02 180); + --destructive: oklch(0.65 0.2 25); /* merah lembut */ + --destructive-foreground: oklch(0.98 0.01 0); + + --border: oklch(0.88 0.01 210); + --input: oklch(0.95 0.01 210); + --ring: oklch(0.7 0.1 220); + + --chart-1: oklch(0.65 0.18 220); + --chart-2: oklch(0.65 0.1 150); + --chart-3: oklch(0.5 0.08 180); + --chart-4: oklch(0.75 0.12 100); + --chart-5: oklch(0.7 0.14 30); + + --radius: 0.625rem; + + --sidebar: oklch(0.95 0.01 210); + --sidebar-foreground: oklch(0.22 0.02 250); + --sidebar-primary: var(--primary); + --sidebar-primary-foreground: var(--primary-foreground); + --sidebar-accent: var(--accent); + --sidebar-accent-foreground: var(--accent-foreground); + --sidebar-border: var(--border); + --sidebar-ring: var(--ring); +} + +.dark { + --background: oklch(0.18 0.02 240); + --foreground: oklch(0.98 0.01 210); + --card: oklch(0.22 0.02 250); + --card-foreground: oklch(0.98 0.01 210); + --popover: oklch(0.2 0.02 250); + --popover-foreground: oklch(0.98 0.01 210); + + --primary: oklch(0.7 0.1 220); + --primary-foreground: oklch(0.15 0.02 220); + --secondary: oklch(0.6 0.06 150); + --secondary-foreground: oklch(0.95 0.01 150); + --muted: oklch(0.3 0.01 220); + --muted-foreground: oklch(0.7 0.01 220); + --accent: oklch(0.5 0.06 180); + --accent-foreground: oklch(0.95 0.01 180); + --destructive: oklch(0.55 0.15 25); + --destructive-foreground: oklch(0.98 0.01 0); + + --border: oklch(0.3 0.01 220); + --input: oklch(0.35 0.01 220); + --ring: oklch(0.5 0.08 220); + + --chart-1: oklch(0.6 0.16 220); + --chart-2: oklch(0.6 0.08 150); + --chart-3: oklch(0.45 0.06 180); + --chart-4: oklch(0.65 0.1 100); + --chart-5: oklch(0.6 0.12 30); + + --sidebar: oklch(0.2 0.02 240); + --sidebar-foreground: oklch(0.98 0.01 210); + --sidebar-primary: var(--primary); + --sidebar-primary-foreground: var(--primary-foreground); + --sidebar-accent: var(--accent); + --sidebar-accent-foreground: var(--accent-foreground); + --sidebar-border: var(--border); + --sidebar-ring: var(--ring); +} + + +@layer base { + * { + @apply border-border; + } + + body { + @apply bg-background text-foreground; + } +} diff --git a/resources/js/app.tsx b/resources/js/app.tsx new file mode 100644 index 0000000..b8d0c91 --- /dev/null +++ b/resources/js/app.tsx @@ -0,0 +1,24 @@ +import '../css/app.css'; + +import { createInertiaApp } from '@inertiajs/react'; +import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'; +import { createRoot } from 'react-dom/client'; +import { initializeTheme } from './hooks/use-appearance'; + +const appName = import.meta.env.VITE_APP_NAME || 'Laravel'; + +createInertiaApp({ + title: (title) => `${title} - ${appName}`, + resolve: (name) => resolvePageComponent(`./pages/${name}.tsx`, import.meta.glob('./pages/**/*.tsx')), + setup({ el, App, props }) { + const root = createRoot(el); + + root.render(); + }, + progress: { + color: '#4B5563', + }, +}); + +// This will set light / dark mode on load... +initializeTheme(); diff --git a/resources/js/components/app-content.tsx b/resources/js/components/app-content.tsx new file mode 100644 index 0000000..e5d04cd --- /dev/null +++ b/resources/js/components/app-content.tsx @@ -0,0 +1,18 @@ +import { SidebarInset } from '@/components/ui/sidebar'; +import * as React from 'react'; + +interface AppContentProps extends React.ComponentProps<'main'> { + variant?: 'header' | 'sidebar'; +} + +export function AppContent({ variant = 'header', children, ...props }: AppContentProps) { + if (variant === 'sidebar') { + return {children}; + } + + return ( +
+ {children} +
+ ); +} diff --git a/resources/js/components/app-header.tsx b/resources/js/components/app-header.tsx new file mode 100644 index 0000000..b9e282d --- /dev/null +++ b/resources/js/components/app-header.tsx @@ -0,0 +1,182 @@ +import { Breadcrumbs } from '@/components/breadcrumbs'; +import { Icon } from '@/components/icon'; +import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; +import { Button } from '@/components/ui/button'; +import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; +import { NavigationMenu, NavigationMenuItem, NavigationMenuList, navigationMenuTriggerStyle } from '@/components/ui/navigation-menu'; +import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from '@/components/ui/sheet'; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; +import { UserMenuContent } from '@/components/user-menu-content'; +import { useInitials } from '@/hooks/use-initials'; +import { cn } from '@/lib/utils'; +import { type BreadcrumbItem, type NavItem, type SharedData } from '@/types'; +import { Link, usePage } from '@inertiajs/react'; +import { BookOpen, Folder, LayoutGrid, Menu, Search } from 'lucide-react'; +import AppLogo from './app-logo'; +import AppLogoIcon from './app-logo-icon'; + +const mainNavItems: NavItem[] = [ + { + title: 'Dashboard', + href: '/dashboard', + icon: LayoutGrid, + }, +]; + +const rightNavItems: NavItem[] = [ + { + title: 'Repository', + href: 'https://github.com/laravel/react-starter-kit', + icon: Folder, + }, + { + title: 'Documentation', + href: 'https://laravel.com/docs/starter-kits', + icon: BookOpen, + }, +]; + +const activeItemStyles = 'text-neutral-900 dark:bg-neutral-800 dark:text-neutral-100'; + +interface AppHeaderProps { + breadcrumbs?: BreadcrumbItem[]; +} + +export function AppHeader({ breadcrumbs = [] }: AppHeaderProps) { + const page = usePage(); + const { auth } = page.props; + const getInitials = useInitials(); + return ( + <> +
+
+ {/* Mobile Menu */} +
+ + + + + + Navigation Menu + + + +
+
+
+ {mainNavItems.map((item) => ( + + {item.icon && } + {item.title} + + ))} +
+ +
+ {rightNavItems.map((item) => ( + + {item.icon && } + {item.title} + + ))} +
+
+
+
+
+
+ + + + + + {/* Desktop Navigation */} +
+ + + {mainNavItems.map((item, index) => ( + + + {item.icon && } + {item.title} + + {page.url === item.href && ( +
+ )} +
+ ))} +
+
+
+ +
+
+ +
+ {rightNavItems.map((item) => ( + + + + + {item.title} + {item.icon && } + + + +

{item.title}

+
+
+
+ ))} +
+
+ + + + + + + + +
+
+
+ {breadcrumbs.length > 1 && ( +
+
+ +
+
+ )} + + ); +} diff --git a/resources/js/components/app-logo-icon.tsx b/resources/js/components/app-logo-icon.tsx new file mode 100644 index 0000000..6698497 --- /dev/null +++ b/resources/js/components/app-logo-icon.tsx @@ -0,0 +1,8 @@ +import { SVGAttributes } from 'react'; +import LogoKemenkes from '/public/logo-kemenkes.svg'; + +export default function AppLogoIcon(props: SVGAttributes) { + return ( + Logo Kemenkes + ); +} diff --git a/resources/js/components/app-logo.tsx b/resources/js/components/app-logo.tsx new file mode 100644 index 0000000..3fbf1f2 --- /dev/null +++ b/resources/js/components/app-logo.tsx @@ -0,0 +1,15 @@ +import AppLogoIcon from './app-logo-icon'; + +export default function AppLogo() { + return ( + <> +
+ +
+
+ SIM-RS + RSAB Harapan Kita +
+ + ); +} diff --git a/resources/js/components/app-shell.tsx b/resources/js/components/app-shell.tsx new file mode 100644 index 0000000..0d5cdb9 --- /dev/null +++ b/resources/js/components/app-shell.tsx @@ -0,0 +1,18 @@ +import { SidebarProvider } from '@/components/ui/sidebar'; +import { SharedData } from '@/types'; +import { usePage } from '@inertiajs/react'; + +interface AppShellProps { + children: React.ReactNode; + variant?: 'header' | 'sidebar'; +} + +export function AppShell({ children, variant = 'header' }: AppShellProps) { + const isOpen = usePage().props.sidebarOpen; + + if (variant === 'header') { + return
{children}
; + } + + return {children}; +} diff --git a/resources/js/components/app-sidebar-header.tsx b/resources/js/components/app-sidebar-header.tsx new file mode 100644 index 0000000..e31381e --- /dev/null +++ b/resources/js/components/app-sidebar-header.tsx @@ -0,0 +1,14 @@ +import { Breadcrumbs } from '@/components/breadcrumbs'; +import { SidebarTrigger } from '@/components/ui/sidebar'; +import { type BreadcrumbItem as BreadcrumbItemType } from '@/types'; + +export function AppSidebarHeader({ breadcrumbs = [] }: { breadcrumbs?: BreadcrumbItemType[] }) { + return ( +
+
+ + +
+
+ ); +} diff --git a/resources/js/components/app-sidebar.tsx b/resources/js/components/app-sidebar.tsx new file mode 100644 index 0000000..257e0ef --- /dev/null +++ b/resources/js/components/app-sidebar.tsx @@ -0,0 +1,152 @@ +import { NavFooter } from '@/components/nav-footer'; +import { NavUser } from '@/components/nav-user'; +import { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem } from '@/components/ui/sidebar'; +import { type NavItem } from '@/types'; +import { Link, usePage } from '@inertiajs/react'; +import { + ArrowLeftRightIcon, + BookOpen, + Folder, GalleryVerticalEndIcon, + HospitalIcon, + LayoutGrid, + LucideAmbulance, + ScrollText, + Stethoscope, + Users +} from 'lucide-react'; +import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible'; +import AppLogo from './app-logo'; +import { useMemo, useState, useEffect } from 'react'; + +const mainNavItems: NavItem[] = [ + { + title: 'Dashboard', + href: '/dashboard', + icon: LayoutGrid, + }, + { + title: 'Registrasi', + href: '/registrations', + icon: GalleryVerticalEndIcon, + }, + { + title: 'Transaction', + href: '/transactions', + icon: ArrowLeftRightIcon, + }, +]; + +const masterNavItems = [ + { + title: 'Data Pegawai', + href: '/employees', + icon: Users, + }, + { + title: 'Data Pasien', + href: '/patients', + icon: LucideAmbulance, + }, + { + title: 'Data Asuransi', + href: '/insurances', + icon: ScrollText, + }, + { + title: 'Data Ruangan', + href: '/room-services', + icon: HospitalIcon, + }, + { + title: 'Data Prosedur', + href: '/procedures', + icon: Stethoscope, + }, +]; + +const footerNavItems: NavItem[] = [ + { + title: 'Repository', + href: 'https://github.com/laravel/react-starter-kit', + icon: Folder, + }, + { + title: 'Documentation', + href: 'https://laravel.com/docs/starter-kits', + icon: BookOpen, + }, +]; + +export function AppSidebar() { + const { url } = usePage(); + const [openMaster, setOpenMaster] = useState(false); + + const isMasterActive = useMemo(() => { + return masterNavItems.some((item) => url.startsWith(item.href)); + }, [url]); + + useEffect(() => { + if (isMasterActive) { + setOpenMaster(true); + } + }, [isMasterActive]); + + return ( + + + + + + + + + + + + {/* Tampilkan mainNavItems */} + {mainNavItems.map((item) => ( + + + + + {item.title} + + + + ))} + + + + + + {/* Data Master Group */} + + + + + Data Master + + + + {masterNavItems.map((item) => ( + + + + + {item.title} + + + + ))} + + + + + + + + + + + ); +} diff --git a/resources/js/components/appearance-dropdown.tsx b/resources/js/components/appearance-dropdown.tsx new file mode 100644 index 0000000..89a4586 --- /dev/null +++ b/resources/js/components/appearance-dropdown.tsx @@ -0,0 +1,53 @@ +import { Button } from '@/components/ui/button'; +import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; +import { useAppearance } from '@/hooks/use-appearance'; +import { Monitor, Moon, Sun } from 'lucide-react'; +import { HTMLAttributes } from 'react'; + +export default function AppearanceToggleDropdown({ className = '', ...props }: HTMLAttributes) { + const { appearance, updateAppearance } = useAppearance(); + + const getCurrentIcon = () => { + switch (appearance) { + case 'dark': + return ; + case 'light': + return ; + default: + return ; + } + }; + + return ( +
+ + + + + + updateAppearance('light')}> + + + Light + + + updateAppearance('dark')}> + + + Dark + + + updateAppearance('system')}> + + + System + + + + +
+ ); +} diff --git a/resources/js/components/appearance-tabs.tsx b/resources/js/components/appearance-tabs.tsx new file mode 100644 index 0000000..900b0f2 --- /dev/null +++ b/resources/js/components/appearance-tabs.tsx @@ -0,0 +1,34 @@ +import { Appearance, useAppearance } from '@/hooks/use-appearance'; +import { cn } from '@/lib/utils'; +import { LucideIcon, Monitor, Moon, Sun } from 'lucide-react'; +import { HTMLAttributes } from 'react'; + +export default function AppearanceToggleTab({ className = '', ...props }: HTMLAttributes) { + const { appearance, updateAppearance } = useAppearance(); + + const tabs: { value: Appearance; icon: LucideIcon; label: string }[] = [ + { value: 'light', icon: Sun, label: 'Light' }, + { value: 'dark', icon: Moon, label: 'Dark' }, + { value: 'system', icon: Monitor, label: 'System' }, + ]; + + return ( +
+ {tabs.map(({ value, icon: Icon, label }) => ( + + ))} +
+ ); +} diff --git a/resources/js/components/breadcrumbs.tsx b/resources/js/components/breadcrumbs.tsx new file mode 100644 index 0000000..cb00f91 --- /dev/null +++ b/resources/js/components/breadcrumbs.tsx @@ -0,0 +1,34 @@ +import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from '@/components/ui/breadcrumb'; +import { type BreadcrumbItem as BreadcrumbItemType } from '@/types'; +import { Link } from '@inertiajs/react'; +import { Fragment } from 'react'; + +export function Breadcrumbs({ breadcrumbs }: { breadcrumbs: BreadcrumbItemType[] }) { + return ( + <> + {breadcrumbs.length > 0 && ( + + + {breadcrumbs.map((item, index) => { + const isLast = index === breadcrumbs.length - 1; + return ( + + + {isLast ? ( + {item.title} + ) : ( + + {item.title} + + )} + + {!isLast && } + + ); + })} + + + )} + + ); +} diff --git a/resources/js/components/delete-user.tsx b/resources/js/components/delete-user.tsx new file mode 100644 index 0000000..e1f8788 --- /dev/null +++ b/resources/js/components/delete-user.tsx @@ -0,0 +1,89 @@ +import { useForm } from '@inertiajs/react'; +import { FormEventHandler, useRef } from 'react'; + +import InputError from '@/components/input-error'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; + +import HeadingSmall from '@/components/heading-small'; + +import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogTitle, DialogTrigger } from '@/components/ui/dialog'; + +export default function DeleteUser() { + const passwordInput = useRef(null); + const { data, setData, delete: destroy, processing, reset, errors, clearErrors } = useForm>({ password: '' }); + + const deleteUser: FormEventHandler = (e) => { + e.preventDefault(); + + destroy(route('profile.destroy'), { + preserveScroll: true, + onSuccess: () => closeModal(), + onError: () => passwordInput.current?.focus(), + onFinish: () => reset(), + }); + }; + + const closeModal = () => { + clearErrors(); + reset(); + }; + + return ( +
+ +
+
+

Warning

+

Please proceed with caution, this cannot be undone.

+
+ + + + + + + Are you sure you want to delete your account? + + Once your account is deleted, all of its resources and data will also be permanently deleted. Please enter your password + to confirm you would like to permanently delete your account. + +
+
+ + + setData('password', e.target.value)} + placeholder="Password" + autoComplete="current-password" + /> + + +
+ + + + + + + + + +
+
+
+
+
+ ); +} diff --git a/resources/js/components/heading-small.tsx b/resources/js/components/heading-small.tsx new file mode 100644 index 0000000..b71a16e --- /dev/null +++ b/resources/js/components/heading-small.tsx @@ -0,0 +1,8 @@ +export default function HeadingSmall({ title, description }: { title: string; description?: string }) { + return ( +
+

{title}

+ {description &&

{description}

} +
+ ); +} diff --git a/resources/js/components/heading.tsx b/resources/js/components/heading.tsx new file mode 100644 index 0000000..d59163e --- /dev/null +++ b/resources/js/components/heading.tsx @@ -0,0 +1,8 @@ +export default function Heading({ title, description }: { title: string; description?: string }) { + return ( +
+

{title}

+ {description &&

{description}

} +
+ ); +} diff --git a/resources/js/components/icon.tsx b/resources/js/components/icon.tsx new file mode 100644 index 0000000..0f81d9c --- /dev/null +++ b/resources/js/components/icon.tsx @@ -0,0 +1,11 @@ +import { cn } from '@/lib/utils'; +import { type LucideProps } from 'lucide-react'; +import { type ComponentType } from 'react'; + +interface IconProps extends Omit { + iconNode: ComponentType; +} + +export function Icon({ iconNode: IconComponent, className, ...props }: IconProps) { + return ; +} diff --git a/resources/js/components/input-error.tsx b/resources/js/components/input-error.tsx new file mode 100644 index 0000000..bb48d71 --- /dev/null +++ b/resources/js/components/input-error.tsx @@ -0,0 +1,10 @@ +import { cn } from '@/lib/utils'; +import { type HTMLAttributes } from 'react'; + +export default function InputError({ message, className = '', ...props }: HTMLAttributes & { message?: string }) { + return message ? ( +

+ {message} +

+ ) : null; +} diff --git a/resources/js/components/nav-footer.tsx b/resources/js/components/nav-footer.tsx new file mode 100644 index 0000000..13b6737 --- /dev/null +++ b/resources/js/components/nav-footer.tsx @@ -0,0 +1,34 @@ +import { Icon } from '@/components/icon'; +import { SidebarGroup, SidebarGroupContent, SidebarMenu, SidebarMenuButton, SidebarMenuItem } from '@/components/ui/sidebar'; +import { type NavItem } from '@/types'; +import { type ComponentPropsWithoutRef } from 'react'; + +export function NavFooter({ + items, + className, + ...props +}: ComponentPropsWithoutRef & { + items: NavItem[]; +}) { + return ( + + + + {items.map((item) => ( + + + + {item.icon && } + {item.title} + + + + ))} + + + + ); +} diff --git a/resources/js/components/nav-main.tsx b/resources/js/components/nav-main.tsx new file mode 100644 index 0000000..a4394ff --- /dev/null +++ b/resources/js/components/nav-main.tsx @@ -0,0 +1,26 @@ +import { SidebarGroup, SidebarMenu, SidebarMenuButton, SidebarMenuItem } from '@/components/ui/sidebar'; +import { type NavItem } from '@/types'; +import { Link, usePage } from '@inertiajs/react'; + +export function NavMain({ items = [] }: { items: NavItem[] }) { + const page = usePage(); + return ( + + + {items.map((item) => ( + + + + {item.icon && } + {item.title} + + + + ))} + + + ); +} diff --git a/resources/js/components/nav-user.tsx b/resources/js/components/nav-user.tsx new file mode 100644 index 0000000..1210250 --- /dev/null +++ b/resources/js/components/nav-user.tsx @@ -0,0 +1,36 @@ +import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; +import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '@/components/ui/sidebar'; +import { UserInfo } from '@/components/user-info'; +import { UserMenuContent } from '@/components/user-menu-content'; +import { useIsMobile } from '@/hooks/use-mobile'; +import { type SharedData } from '@/types'; +import { usePage } from '@inertiajs/react'; +import { ChevronsUpDown } from 'lucide-react'; + +export function NavUser() { + const { auth } = usePage().props; + const { state } = useSidebar(); + const isMobile = useIsMobile(); + + return ( + + + + + + + + + + + + + + + + ); +} diff --git a/resources/js/components/text-link.tsx b/resources/js/components/text-link.tsx new file mode 100644 index 0000000..1c2ddb8 --- /dev/null +++ b/resources/js/components/text-link.tsx @@ -0,0 +1,19 @@ +import { cn } from '@/lib/utils'; +import { Link } from '@inertiajs/react'; +import { ComponentProps } from 'react'; + +type LinkProps = ComponentProps; + +export default function TextLink({ className = '', children, ...props }: LinkProps) { + return ( + + {children} + + ); +} diff --git a/resources/js/components/ui/alert-dialog.tsx b/resources/js/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..935eecf --- /dev/null +++ b/resources/js/components/ui/alert-dialog.tsx @@ -0,0 +1,155 @@ +import * as React from "react" +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" + +import { cn } from "@/lib/utils" +import { buttonVariants } from "@/components/ui/button" + +function AlertDialog({ + ...props +}: React.ComponentProps) { + return +} + +function AlertDialogTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogPortal({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + + ) +} + +function AlertDialogHeader({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDialogFooter({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogAction({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogCancel({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +} diff --git a/resources/js/components/ui/alert.tsx b/resources/js/components/ui/alert.tsx new file mode 100644 index 0000000..3b8ee79 --- /dev/null +++ b/resources/js/components/ui/alert.tsx @@ -0,0 +1,66 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "text-destructive-foreground [&>svg]:text-current *:data-[slot=alert-description]:text-destructive-foreground/80", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Alert({ + className, + variant, + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ) +} + +function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDescription({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { Alert, AlertTitle, AlertDescription } diff --git a/resources/js/components/ui/avatar.tsx b/resources/js/components/ui/avatar.tsx new file mode 100644 index 0000000..b7224f0 --- /dev/null +++ b/resources/js/components/ui/avatar.tsx @@ -0,0 +1,51 @@ +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +function Avatar({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarImage({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/resources/js/components/ui/badge.tsx b/resources/js/components/ui/badge.tsx new file mode 100644 index 0000000..268ea77 --- /dev/null +++ b/resources/js/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-auto", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span" + + return ( + + ) +} + +export { Badge, badgeVariants } diff --git a/resources/js/components/ui/breadcrumb.tsx b/resources/js/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..eb88f32 --- /dev/null +++ b/resources/js/components/ui/breadcrumb.tsx @@ -0,0 +1,109 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { ChevronRight, MoreHorizontal } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { + return