From e488ae334294e5f67a18f9a4b829e16df52b9c2a Mon Sep 17 00:00:00 2001 From: Luis Medon Date: Thu, 29 Oct 2026 11:30:06 +0000 Subject: [PATCH] Add feature tests, unit tests, and configuration for Laravel application - Created ExampleTest and RoutesTest for basic application response and route testing. - Implemented IsolatedDatabaseTestCase for isolated database testing. - Added unit tests for various models and services including Contract, CPE, and LeadDetail. - Developed request validation tests for CreateClientRequest, UpdateClientRequest, and ContractRequest. - Introduced Vite configuration for asset management in the Laravel application. --- .editorconfig | 18 + .env.example | 66 + .gitattributes | 11 + .gitignore | 25 + SECURITY.md | 21 + app/Console/Commands/CleanMinioBackups.php | 111 + app/Console/Commands/SendTestEmail.php | 31 + app/Exports/ContractsExport.php | 52 + app/Http/Controllers/AdminController.php | 17 + app/Http/Controllers/AnalyticalController.php | 18 + app/Http/Controllers/Api/AccessController.php | 33 + app/Http/Controllers/Api/AdminController.php | 36 + app/Http/Controllers/Api/AuthController.php | 66 + app/Http/Controllers/Api/ClientController.php | 140 + .../Controllers/Api/ContractController.php | 92 + .../Controllers/Api/DashboardController.php | 21 + app/Http/Controllers/Api/LeadController.php | 49 + .../Controllers/Api/ResourceController.php | 40 + app/Http/Controllers/Api/UserController.php | 63 + .../Controllers/Auth/ApiLoginController.php | 77 + .../Auth/ConfirmPasswordController.php | 39 + .../Auth/ForgotPasswordController.php | 34 + app/Http/Controllers/Auth/LoginController.php | 40 + .../Controllers/Auth/RegisterController.php | 72 + .../Auth/ResetPasswordController.php | 50 + .../Auth/VerificationController.php | 41 + app/Http/Controllers/ClientController.php | 79 + app/Http/Controllers/ContractController.php | 107 + app/Http/Controllers/Controller.php | 12 + app/Http/Controllers/EmailTestController.php | 61 + app/Http/Controllers/HomeController.php | 17 + app/Http/Controllers/LeadController.php | 56 + .../Resources/ContractStatusController.php | 11 + .../Resources/ContractTypeController.php | 11 + .../Resources/CuiTierController.php | 11 + .../Resources/PaymentMethodController.php | 11 + .../Resources/PowerTierController.php | 11 + .../Resources/ResourceController.php | 57 + .../Resources/SupplierController.php | 11 + .../Resources/TypologyController.php | 11 + .../Controllers/RolePermissionController.php | 25 + app/Http/Controllers/UserAccessController.php | 25 + app/Http/Controllers/UserController.php | 65 + app/Http/Kernel.php | 40 + app/Http/Middleware/ApiResponse.php | 45 + app/Http/Middleware/AuthSession.php | 31 + app/Http/Middleware/EnsureApiUser.php | 15 + app/Http/Requests/ContractRequest.php | 196 + app/Http/Requests/CreateClientRequest.php | 81 + app/Http/Requests/LeadRequest.php | 72 + app/Http/Requests/RenewContractRequest.php | 83 + app/Http/Requests/UpdateClientRequest.php | 83 + app/Mail/NewUserWelcome.php | 28 + app/Models/CPE.php | 87 + app/Models/ClientType.php | 15 + app/Models/Clients.php | 71 + app/Models/Contract.php | 224 + app/Models/ContractHistory.php | 116 + app/Models/ContractInstallment.php | 22 + app/Models/ContractStatus.php | 25 + app/Models/ContractType.php | 25 + app/Models/CpePayment.php | 21 + app/Models/CuiTier.php | 13 + app/Models/LeadDetail.php | 55 + app/Models/LeadStatus.php | 20 + app/Models/Payment.php | 15 + app/Models/PaymentMethod.php | 21 + app/Models/PowerTier.php | 10 + app/Models/ReceiveInvoiceTypes.php | 12 + app/Models/RenewalType.php | 13 + app/Models/Supplier.php | 25 + app/Models/Typology.php | 23 + app/Models/User.php | 55 + app/Providers/AppServiceProvider.php | 38 + app/Providers/RouteServiceProvider.php | 22 + app/Services/AdminService.php | 53 + app/Services/AnalyticalService.php | 283 + app/Services/AuthService.php | 73 + app/Services/ClientService.php | 95 + app/Services/ContractService.php | 735 + app/Services/HomeService.php | 79 + app/Services/LeadService.php | 133 + app/Services/ResourceService.php | 78 + app/Services/RolePermissionService.php | 25 + app/Services/UserAccessService.php | 25 + app/Services/UserService.php | 139 + app/Traits/ResourcesCache.php | 130 + artisan | 18 + bootstrap/app.php | 79 + bootstrap/cache/.gitignore | 2 + bootstrap/providers.php | 6 + composer.json | 82 + composer.lock | 10102 ++++++++ config/app.php | 234 + config/auth.php | 115 + config/backup.php | 341 + config/cache.php | 108 + config/database.php | 174 + config/filesystems.php | 79 + config/logging.php | 132 + config/mail.php | 116 + config/permission.php | 202 + config/queue.php | 112 + config/sanctum.php | 84 + config/services.php | 38 + config/session.php | 217 + config/telescope.php | 206 + database/.gitignore | 1 + database/factories/UserFactory.php | 44 + .../0001_01_01_000000_create_users_table.php | 49 + .../0001_01_01_000001_create_cache_table.php | 35 + .../0001_01_01_000002_create_jobs_table.php | 57 + ...2025_03_23_112822_create_clients_table.php | 34 + ...932_create_receive_invoice_types_table.php | 28 + ...03_23_114136_create_client_foreignkeys.php | 26 + ...26_155735_add_column_status_to_clients.php | 28 + ...2025_03_27_152255_create_c_p_e_s_table.php | 64 + ...01233_add_client_type_to_clients_table.php | 28 + ...04_03_143359_create_cpe_payments_table.php | 33 + ..._191159_create_telescope_entries_table.php | 70 + ...2052_add_status_index_to_clients_table.php | 28 + ...otes_and_contact_info_to_clients_table.php | 30 + ...19_175820_create_payment_methods_table.php | 29 + ...854_add_payment_method_id_to_cpe_table.php | 35 + ...0919_add_icon_to_payment_methods_table.php | 28 + ...25_04_23_104031_create_contracts_table.php | 42 + ...025_04_23_104100_create_payments_table.php | 33 + ...5_04_23_105408_drop_old_cpe_cpi_tables.php | 25 + ...025_04_23_105542_drop_telescope_tables.php | 26 + .../2025_04_23_105858_drop_old_cpe.php | 24 + ..._04_30_113303_create_permission_tables.php | 140 + ...2_add_description_to_permissions_table.php | 28 + ..._153303_add_description_to_roles_table.php | 28 + ...05_28_075006_create_client_types_table.php | 30 + ...date_clients_table_with_client_type_id.php | 32 + ..._client_type_column_from_clients_table.php | 32 + ..._06_02_184902_create_power_tiers_table.php | 28 + ..._update_contracts_table_for_new_fields.php | 93 + ...80623_add_seller_id_to_contracts_table.php | 30 + ...dd_financial_fields_to_contracts_table.php | 30 + ...rename_tier_to_code_in_contracts_table.php | 28 + ...5_06_12_144037_create_typologies_table.php | 29 + ...056_add_typology_id_to_contracts_table.php | 29 + ...144336_drop_code_from_typologies_table.php | 28 + ..._receive_invoice_id_from_clients_table.php | 27 + ...25_06_20_132113_create_ciu_tiers_table.php | 28 + ...448_add_ciu_tier_id_to_contracts_table.php | 23 + ..._192219_add_status_to_resources_tables.php | 53 + ...5_06_23_192618_add_status_to_suppliers.php | 28 + ...25_110317_add_can_login_to_users_table.php | 28 + ...onsumption_nullable_in_contracts_table.php | 28 + ...31956_remove_type_from_contracts_table.php | 28 + ...25_151156_add_color_to_suppliers_table.php | 28 + ...214_add_color_to_contract_status_table.php | 28 + ...25_141236_add_go_ki_to_contracts_table.php | 28 + ..._08_26_091926_create_lead_status_table.php | 28 + ..._type_and_lead_status_to_clients_table.php | 32 + ...6_101929_alter_clients_nullable_fields.php | 29 + ...08_27_142641_create_lead_details_table.php | 25 + ...ivery_point_code_to_lead_details_table.php | 22 + ..._04_135532_add_paid_to_contracts_table.php | 22 + ...25_09_08_110610_add_pin_to_users_table.php | 28 + ...e_timestamps_to_end_in_contracts_table.php | 22 + ...100622_create_contract_histories_table.php | 35 + ...onsumption_to_contract_histories_table.php | 30 + ..._renewal_date_contract_histories_table.php | 28 + ...d_installment_count_to_contracts_table.php | 21 + ...222_create_contract_installments_table.php | 28 + ...12_create_personal_access_tokens_table.php | 33 + ...2_174505_add_locality_to_clients_table.php | 28 + ...upplier_id_to_contract_histories_table.php | 33 + ...d_chargeback_fields_to_contracts_table.php | 24 + ...d_contract_end_date_to_contracts_table.php | 22 + ...ent_counts_to_contract_histories_table.php | 23 + ...ent_counts_on_contract_histories_table.php | 36 + ...ct_details_to_contract_histories_table.php | 38 + ...9_28_000000_create_renewal_types_table.php | 23 + ...ypology_id_to_contract_histories_table.php | 26 + ...ack_fields_to_contract_histories_table.php | 30 + database/seeders/ClientTypesSeeder.php | 30 + database/seeders/ClientsTableSeeder.php | 34 + database/seeders/ContractStatusSeeder.php | 41 + database/seeders/ContractTypesSeeder.php | 24 + database/seeders/ContractsTableSeeder.php | 58 + database/seeders/CuiTiersSeeder.php | 25 + database/seeders/DatabaseSeeder.php | 34 + database/seeders/LeadStatusSeeder.php | 25 + database/seeders/PaymentMethodsSeeder.php | 39 + database/seeders/PermissionSeeder.php | 69 + database/seeders/PowerTiersTableSeeder.php | 31 + .../seeders/ReceiveInvoiceTypesSeeder.php | 19 + database/seeders/RenewalTypesSeeder.php | 21 + database/seeders/ResetPermissionsSeeder.php | 26 + database/seeders/SuppliersSeeder.php | 42 + database/seeders/TypologySeeder.php | 31 + database/seeders/UserSeeder.php | 79 + docs/API.md | 131 + package-lock.json | 2720 +++ package.json | 19 + phpunit.xml | 21 + public/.htaccess | 25 + public/assets/demo/chart-area-demo.js | 146 + public/assets/demo/chart-bar-demo.js | 113 + public/assets/demo/chart-pie-demo.js | 44 + .../fonts/metropolis/Metropolis-Black.otf | Bin 0 -> 23696 bytes .../metropolis/Metropolis-BlackItalic.otf | Bin 0 -> 24288 bytes .../fonts/metropolis/Metropolis-Bold.otf | Bin 0 -> 23664 bytes .../metropolis/Metropolis-BoldItalic.otf | Bin 0 -> 24332 bytes .../fonts/metropolis/Metropolis-ExtraBold.otf | Bin 0 -> 23700 bytes .../metropolis/Metropolis-ExtraBoldItalic.otf | Bin 0 -> 24588 bytes .../metropolis/Metropolis-ExtraLight.otf | Bin 0 -> 23080 bytes .../Metropolis-ExtraLightItalic.otf | Bin 0 -> 24284 bytes .../fonts/metropolis/Metropolis-Light.otf | Bin 0 -> 23200 bytes .../metropolis/Metropolis-LightItalic.otf | Bin 0 -> 24208 bytes .../fonts/metropolis/Metropolis-Medium.otf | Bin 0 -> 23240 bytes .../metropolis/Metropolis-MediumItalic.otf | Bin 0 -> 24352 bytes .../fonts/metropolis/Metropolis-Regular.otf | Bin 0 -> 23124 bytes .../metropolis/Metropolis-RegularItalic.otf | Bin 0 -> 24236 bytes .../fonts/metropolis/Metropolis-SemiBold.otf | Bin 0 -> 23480 bytes .../metropolis/Metropolis-SemiBoldItalic.otf | Bin 0 -> 24284 bytes .../fonts/metropolis/Metropolis-Thin.otf | Bin 0 -> 22920 bytes .../metropolis/Metropolis-ThinItalic.otf | Bin 0 -> 24052 bytes .../metropolis/SIL Open Font License.txt | 43 + public/assets/img/backgrounds/bg-angles.svg | 9 + .../img/backgrounds/bg-pattern-shapes.png | Bin 0 -> 3182 bytes public/assets/img/backgrounds/bg-waves.svg | 13 + .../assets/img/demo/cards/card-img-bottom.jpg | Bin 0 -> 120159 bytes .../assets/img/demo/cards/card-img-left.jpg | Bin 0 -> 32974 bytes .../img/demo/cards/card-img-overlay.jpg | Bin 0 -> 112349 bytes .../assets/img/demo/cards/card-img-right.jpg | Bin 0 -> 50204 bytes public/assets/img/demo/cards/card-img-top.jpg | Bin 0 -> 82922 bytes public/assets/img/demo/demo-logo.svg | 1 + public/assets/img/demo/demo-ocean-lg.jpg | Bin 0 -> 83022 bytes public/assets/img/demo/demo-ocean-sm.jpg | Bin 0 -> 35862 bytes public/assets/img/demo/pug.svg | 96 + public/assets/img/demo/user-placeholder.svg | 1 + public/assets/img/favicon.png | Bin 0 -> 562 bytes .../illustrations/400-error-bad-request.svg | 601 + .../illustrations/401-error-unauthorized.svg | 948 + .../img/illustrations/403-error-forbidden.svg | 690 + .../404-error-with-a-cute-animal.svg | 571 + public/assets/img/illustrations/404-error.svg | 566 + .../500-internal-server-error.svg | 1048 + .../503-error-service-unavailable.svg | 559 + .../504-error-gateway-timeout.svg | 711 + public/assets/img/illustrations/CREDITS.md | 14 + public/assets/img/illustrations/at-work.svg | 246 + .../img/illustrations/browser-stats.svg | 213 + .../assets/img/illustrations/data-report.svg | 194 + .../img/illustrations/problem-solving.svg | 1 + .../assets/img/illustrations/processing.svg | 577 + .../img/illustrations/profiles/profile-1.png | Bin 0 -> 19617 bytes .../img/illustrations/profiles/profile-2.png | Bin 0 -> 15029 bytes .../img/illustrations/profiles/profile-3.png | Bin 0 -> 20798 bytes .../img/illustrations/profiles/profile-4.png | Bin 0 -> 15186 bytes .../img/illustrations/profiles/profile-5.png | Bin 0 -> 18663 bytes .../img/illustrations/profiles/profile-6.png | Bin 0 -> 14208 bytes .../assets/img/illustrations/statistics.svg | 759 + .../assets/img/illustrations/team-spirit.svg | 720 + public/assets/img/illustrations/windows.svg | 330 + public/css/custom.css | 117 + public/css/styles.css | 19620 ++++++++++++++++ public/favicon.ico | 0 public/index.php | 20 + public/js/custom.js | 38 + .../js/datatables/datatables-simple-demo.js | 9 + public/js/litepicker.js | 56 + public/js/markdown.js | 4 + public/js/scripts.js | 78 + public/js/toasts.js | 26 + public/robots.txt | 2 + resources/css/analytal_index.css | 79 + resources/css/app.css | 12 + resources/js/app.js | 1 + resources/js/bootstrap.js | 34 + resources/lang/pt/attributes.php | 46 + resources/lang/pt/validation.php | 350 + resources/sass/_variables.scss | 7 + resources/sass/app.scss | 8 + resources/views/auth/login.blade.php | 87 + .../views/auth/passwords/confirm.blade.php | 49 + .../views/auth/passwords/email.blade.php | 55 + .../views/auth/passwords/reset.blade.php | 60 + resources/views/auth/register.blade.php | 47 + resources/views/auth/verify.blade.php | 28 + .../views/components/pin-modal.blade.php | 30 + .../views/emails/new_user_welcome.blade.php | 14 + resources/views/emails/test-status.blade.php | 42 + resources/views/errors/503.blade.php | 120 + resources/views/home.blade.php | 89 + resources/views/layouts/app.blade.php | 60 + resources/views/layouts/base/bottom.blade.php | 7 + resources/views/layouts/base/footer.blade.php | 12 + resources/views/layouts/base/head.blade.php | 27 + .../views/layouts/base/sidenav.blade.php | 122 + resources/views/layouts/base/topnav.blade.php | 69 + .../views/web/admin/access/index.blade.php | 93 + .../admin/access/roles_permissions.blade.php | 34 + .../views/web/admin/access/users.blade.php | 38 + resources/views/web/admin/system.blade.php | 27 + .../views/web/admin/user/add_edit.blade.php | 64 + .../views/web/admin/user/index.blade.php | 60 + .../views/web/analytical/index.blade.php | 249 + .../views/web/clients/create/add.blade.php | 24 + .../views/web/clients/create/form.blade.php | 90 + resources/views/web/clients/detail.blade.php | 56 + .../web/clients/detail/contract.blade.php | 36 + .../views/web/clients/detail/info.blade.php | 71 + .../clients/detail/listContracts.blade.php | 73 + .../web/clients/detail/payment.blade.php | 24 + .../web/clients/detail/statistics.blade.php | 110 + .../views/web/clients/filtersList.blade.php | 62 + resources/views/web/clients/list.blade.php | 130 + .../views/web/contract/add_edit.blade.php | 639 + resources/views/web/contract/detail.blade.php | 136 + .../views/web/contract/history.blade.php | 198 + .../web/contract/history_create.blade.php | 133 + .../views/web/contract/history_edit.blade.php | 88 + resources/views/web/contract/list.blade.php | 393 + .../views/web/contract/listFilters.blade.php | 189 + resources/views/web/contract/renew.blade.php | 299 + .../partials/contractsTable.blade.php | 151 + resources/views/web/lead/add_edit.blade.php | 115 + resources/views/web/lead/list.blade.php | 156 + resources/views/web/lead/show.blade.php | 21 + .../contract_status/add_edit.blade.php | 65 + .../resources/contract_status/index.blade.php | 58 + .../contract_types/add_edit.blade.php | 42 + .../resources/contract_types/index.blade.php | 60 + .../resources/cui_tiers/add_edit.blade.php | 28 + .../web/resources/cui_tiers/index.blade.php | 60 + .../payment_methods/add_edit.blade.php | 59 + .../resources/payment_methods/index.blade.php | 62 + .../resources/power_tiers/add_edit.blade.php | 42 + .../web/resources/power_tiers/index.blade.php | 60 + .../resources/suppliers/add_edit.blade.php | 42 + .../web/resources/suppliers/index.blade.php | 68 + .../web/resources/typology/add_edit.blade.php | 45 + .../web/resources/typology/index.blade.php | 60 + resources/views/welcome.blade.php | 163 + routes/api.php | 75 + routes/console.php | 11 + routes/web.php | 151 + storage/app/.gitignore | 4 + storage/app/private/.gitignore | 2 + storage/app/public/.gitignore | 2 + storage/framework/.gitignore | 9 + storage/framework/cache/.gitignore | 3 + storage/framework/cache/data/.gitignore | 2 + storage/framework/sessions/.gitignore | 2 + storage/framework/testing/.gitignore | 2 + storage/framework/views/.gitignore | 2 + storage/logs/.gitignore | 2 + tests/Api/ApiEndpointsTest.php | 222 + tests/Browser/BrowserAuthenticationTest.php | 58 + .../Feature/ContractControllerTotalsTest.php | 102 + tests/Feature/ContractPersistenceTest.php | 98 + tests/Feature/ExampleTest.php | 23 + tests/Feature/RoutesTest.php | 51 + tests/Support/IsolatedDatabaseTestCase.php | 118 + tests/TestCase.php | 10 + tests/Unit/AnalyticalControllerTest.php | 28 + tests/Unit/ClientRequestTest.php | 42 + tests/Unit/ClientsTest.php | 42 + tests/Unit/ContractControllerTest.php | 123 + tests/Unit/ContractHistoryTest.php | 25 + tests/Unit/ContractRequestTest.php | 70 + tests/Unit/ContractScopeTest.php | 33 + tests/Unit/ContractTest.php | 29 + tests/Unit/CpeTest.php | 46 + tests/Unit/ExampleTest.php | 16 + tests/Unit/LeadDetailTest.php | 32 + tests/Unit/LeadRequestTest.php | 23 + tests/Unit/RenewContractRequestTest.php | 58 + vite.config.js | 14 + 375 files changed, 60502 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 SECURITY.md create mode 100644 app/Console/Commands/CleanMinioBackups.php create mode 100644 app/Console/Commands/SendTestEmail.php create mode 100644 app/Exports/ContractsExport.php create mode 100644 app/Http/Controllers/AdminController.php create mode 100644 app/Http/Controllers/AnalyticalController.php create mode 100644 app/Http/Controllers/Api/AccessController.php create mode 100644 app/Http/Controllers/Api/AdminController.php create mode 100644 app/Http/Controllers/Api/AuthController.php create mode 100644 app/Http/Controllers/Api/ClientController.php create mode 100644 app/Http/Controllers/Api/ContractController.php create mode 100644 app/Http/Controllers/Api/DashboardController.php create mode 100644 app/Http/Controllers/Api/LeadController.php create mode 100644 app/Http/Controllers/Api/ResourceController.php create mode 100644 app/Http/Controllers/Api/UserController.php create mode 100644 app/Http/Controllers/Auth/ApiLoginController.php create mode 100644 app/Http/Controllers/Auth/ConfirmPasswordController.php create mode 100644 app/Http/Controllers/Auth/ForgotPasswordController.php create mode 100644 app/Http/Controllers/Auth/LoginController.php create mode 100644 app/Http/Controllers/Auth/RegisterController.php create mode 100644 app/Http/Controllers/Auth/ResetPasswordController.php create mode 100644 app/Http/Controllers/Auth/VerificationController.php create mode 100644 app/Http/Controllers/ClientController.php create mode 100644 app/Http/Controllers/ContractController.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Controllers/EmailTestController.php create mode 100644 app/Http/Controllers/HomeController.php create mode 100644 app/Http/Controllers/LeadController.php create mode 100644 app/Http/Controllers/Resources/ContractStatusController.php create mode 100644 app/Http/Controllers/Resources/ContractTypeController.php create mode 100644 app/Http/Controllers/Resources/CuiTierController.php create mode 100644 app/Http/Controllers/Resources/PaymentMethodController.php create mode 100644 app/Http/Controllers/Resources/PowerTierController.php create mode 100644 app/Http/Controllers/Resources/ResourceController.php create mode 100644 app/Http/Controllers/Resources/SupplierController.php create mode 100644 app/Http/Controllers/Resources/TypologyController.php create mode 100644 app/Http/Controllers/RolePermissionController.php create mode 100644 app/Http/Controllers/UserAccessController.php create mode 100644 app/Http/Controllers/UserController.php create mode 100644 app/Http/Kernel.php create mode 100644 app/Http/Middleware/ApiResponse.php create mode 100644 app/Http/Middleware/AuthSession.php create mode 100644 app/Http/Middleware/EnsureApiUser.php create mode 100644 app/Http/Requests/ContractRequest.php create mode 100644 app/Http/Requests/CreateClientRequest.php create mode 100644 app/Http/Requests/LeadRequest.php create mode 100644 app/Http/Requests/RenewContractRequest.php create mode 100644 app/Http/Requests/UpdateClientRequest.php create mode 100644 app/Mail/NewUserWelcome.php create mode 100644 app/Models/CPE.php create mode 100644 app/Models/ClientType.php create mode 100644 app/Models/Clients.php create mode 100644 app/Models/Contract.php create mode 100644 app/Models/ContractHistory.php create mode 100644 app/Models/ContractInstallment.php create mode 100644 app/Models/ContractStatus.php create mode 100644 app/Models/ContractType.php create mode 100644 app/Models/CpePayment.php create mode 100644 app/Models/CuiTier.php create mode 100644 app/Models/LeadDetail.php create mode 100644 app/Models/LeadStatus.php create mode 100644 app/Models/Payment.php create mode 100644 app/Models/PaymentMethod.php create mode 100644 app/Models/PowerTier.php create mode 100644 app/Models/ReceiveInvoiceTypes.php create mode 100644 app/Models/RenewalType.php create mode 100644 app/Models/Supplier.php create mode 100644 app/Models/Typology.php create mode 100644 app/Models/User.php create mode 100644 app/Providers/AppServiceProvider.php create mode 100644 app/Providers/RouteServiceProvider.php create mode 100644 app/Services/AdminService.php create mode 100644 app/Services/AnalyticalService.php create mode 100644 app/Services/AuthService.php create mode 100644 app/Services/ClientService.php create mode 100644 app/Services/ContractService.php create mode 100644 app/Services/HomeService.php create mode 100644 app/Services/LeadService.php create mode 100644 app/Services/ResourceService.php create mode 100644 app/Services/RolePermissionService.php create mode 100644 app/Services/UserAccessService.php create mode 100644 app/Services/UserService.php create mode 100644 app/Traits/ResourcesCache.php create mode 100644 artisan create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 bootstrap/providers.php create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/backup.php create mode 100644 config/cache.php create mode 100644 config/database.php create mode 100644 config/filesystems.php create mode 100644 config/logging.php create mode 100644 config/mail.php create mode 100644 config/permission.php create mode 100644 config/queue.php create mode 100644 config/sanctum.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 config/telescope.php create mode 100644 database/.gitignore create mode 100644 database/factories/UserFactory.php create mode 100644 database/migrations/0001_01_01_000000_create_users_table.php create mode 100644 database/migrations/0001_01_01_000001_create_cache_table.php create mode 100644 database/migrations/0001_01_01_000002_create_jobs_table.php create mode 100644 database/migrations/2025_03_23_112822_create_clients_table.php create mode 100644 database/migrations/2025_03_23_113932_create_receive_invoice_types_table.php create mode 100644 database/migrations/2025_03_23_114136_create_client_foreignkeys.php create mode 100644 database/migrations/2025_03_26_155735_add_column_status_to_clients.php create mode 100644 database/migrations/2025_03_27_152255_create_c_p_e_s_table.php create mode 100644 database/migrations/2025_04_03_101233_add_client_type_to_clients_table.php create mode 100644 database/migrations/2025_04_03_143359_create_cpe_payments_table.php create mode 100644 database/migrations/2025_04_10_191159_create_telescope_entries_table.php create mode 100644 database/migrations/2025_04_10_192052_add_status_index_to_clients_table.php create mode 100644 database/migrations/2025_04_11_181702_add_notes_and_contact_info_to_clients_table.php create mode 100644 database/migrations/2025_04_19_175820_create_payment_methods_table.php create mode 100644 database/migrations/2025_04_19_175854_add_payment_method_id_to_cpe_table.php create mode 100644 database/migrations/2025_04_19_180919_add_icon_to_payment_methods_table.php create mode 100644 database/migrations/2025_04_23_104031_create_contracts_table.php create mode 100644 database/migrations/2025_04_23_104100_create_payments_table.php create mode 100644 database/migrations/2025_04_23_105408_drop_old_cpe_cpi_tables.php create mode 100644 database/migrations/2025_04_23_105542_drop_telescope_tables.php create mode 100644 database/migrations/2025_04_23_105858_drop_old_cpe.php create mode 100644 database/migrations/2025_04_30_113303_create_permission_tables.php create mode 100644 database/migrations/2025_04_30_134322_add_description_to_permissions_table.php create mode 100644 database/migrations/2025_04_30_153303_add_description_to_roles_table.php create mode 100644 database/migrations/2025_05_28_075006_create_client_types_table.php create mode 100644 database/migrations/2025_05_28_075025_update_clients_table_with_client_type_id.php create mode 100644 database/migrations/2025_05_28_075243_remove_client_type_column_from_clients_table.php create mode 100644 database/migrations/2025_06_02_184902_create_power_tiers_table.php create mode 100644 database/migrations/2025_06_02_185651_update_contracts_table_for_new_fields.php create mode 100644 database/migrations/2025_06_04_080623_add_seller_id_to_contracts_table.php create mode 100644 database/migrations/2025_06_06_083053_add_financial_fields_to_contracts_table.php create mode 100644 database/migrations/2025_06_12_143226_rename_tier_to_code_in_contracts_table.php create mode 100644 database/migrations/2025_06_12_144037_create_typologies_table.php create mode 100644 database/migrations/2025_06_12_144056_add_typology_id_to_contracts_table.php create mode 100644 database/migrations/2025_06_12_144336_drop_code_from_typologies_table.php create mode 100644 database/migrations/2025_06_12_160216_remove_receive_invoice_id_from_clients_table.php create mode 100644 database/migrations/2025_06_20_132113_create_ciu_tiers_table.php create mode 100644 database/migrations/2025_06_20_133448_add_ciu_tier_id_to_contracts_table.php create mode 100644 database/migrations/2025_06_23_192219_add_status_to_resources_tables.php create mode 100644 database/migrations/2025_06_23_192618_add_status_to_suppliers.php create mode 100644 database/migrations/2025_06_25_110317_add_can_login_to_users_table.php create mode 100644 database/migrations/2025_06_25_130953_make_annual_consumption_nullable_in_contracts_table.php create mode 100644 database/migrations/2025_06_25_131956_remove_type_from_contracts_table.php create mode 100644 database/migrations/2025_06_25_151156_add_color_to_suppliers_table.php create mode 100644 database/migrations/2025_08_22_091214_add_color_to_contract_status_table.php create mode 100644 database/migrations/2025_08_25_141236_add_go_ki_to_contracts_table.php create mode 100644 database/migrations/2025_08_26_091926_create_lead_status_table.php create mode 100644 database/migrations/2025_08_26_092040_add_type_and_lead_status_to_clients_table.php create mode 100644 database/migrations/2025_08_26_101929_alter_clients_nullable_fields.php create mode 100644 database/migrations/2025_08_27_142641_create_lead_details_table.php create mode 100644 database/migrations/2025_09_03_171449_add_delivery_point_code_to_lead_details_table.php create mode 100644 database/migrations/2025_09_04_135532_add_paid_to_contracts_table.php create mode 100644 database/migrations/2025_09_08_110610_add_pin_to_users_table.php create mode 100644 database/migrations/2025_09_08_175045_move_timestamps_to_end_in_contracts_table.php create mode 100644 database/migrations/2025_09_15_100622_create_contract_histories_table.php create mode 100644 database/migrations/2025_09_15_104231_add_annual_consumption_to_contract_histories_table.php create mode 100644 database/migrations/2025_09_15_105109_del_renewal_date_contract_histories_table.php create mode 100644 database/migrations/2025_09_19_143217_add_installment_count_to_contracts_table.php create mode 100644 database/migrations/2025_09_19_143222_create_contract_installments_table.php create mode 100644 database/migrations/2025_11_12_140812_create_personal_access_tokens_table.php create mode 100644 database/migrations/2026_01_12_174505_add_locality_to_clients_table.php create mode 100644 database/migrations/2026_09_15_000000_add_previous_supplier_id_to_contract_histories_table.php create mode 100644 database/migrations/2026_09_22_000000_add_chargeback_fields_to_contracts_table.php create mode 100644 database/migrations/2026_09_24_000001_add_contract_end_date_to_contracts_table.php create mode 100644 database/migrations/2026_09_25_000000_add_installment_counts_to_contract_histories_table.php create mode 100644 database/migrations/2026_09_25_000001_reorder_installment_counts_on_contract_histories_table.php create mode 100644 database/migrations/2026_09_25_000002_add_contract_details_to_contract_histories_table.php create mode 100644 database/migrations/2026_09_28_000000_create_renewal_types_table.php create mode 100644 database/migrations/2026_09_30_000000_add_typology_id_to_contract_histories_table.php create mode 100644 database/migrations/2026_10_02_000000_add_chargeback_fields_to_contract_histories_table.php create mode 100644 database/seeders/ClientTypesSeeder.php create mode 100644 database/seeders/ClientsTableSeeder.php create mode 100644 database/seeders/ContractStatusSeeder.php create mode 100644 database/seeders/ContractTypesSeeder.php create mode 100644 database/seeders/ContractsTableSeeder.php create mode 100644 database/seeders/CuiTiersSeeder.php create mode 100644 database/seeders/DatabaseSeeder.php create mode 100644 database/seeders/LeadStatusSeeder.php create mode 100644 database/seeders/PaymentMethodsSeeder.php create mode 100644 database/seeders/PermissionSeeder.php create mode 100644 database/seeders/PowerTiersTableSeeder.php create mode 100644 database/seeders/ReceiveInvoiceTypesSeeder.php create mode 100644 database/seeders/RenewalTypesSeeder.php create mode 100644 database/seeders/ResetPermissionsSeeder.php create mode 100644 database/seeders/SuppliersSeeder.php create mode 100644 database/seeders/TypologySeeder.php create mode 100644 database/seeders/UserSeeder.php create mode 100644 docs/API.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 phpunit.xml create mode 100644 public/.htaccess create mode 100644 public/assets/demo/chart-area-demo.js create mode 100644 public/assets/demo/chart-bar-demo.js create mode 100644 public/assets/demo/chart-pie-demo.js create mode 100644 public/assets/fonts/metropolis/Metropolis-Black.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-BlackItalic.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-Bold.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-BoldItalic.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-ExtraBold.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-ExtraBoldItalic.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-ExtraLight.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-ExtraLightItalic.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-Light.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-LightItalic.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-Medium.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-MediumItalic.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-Regular.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-RegularItalic.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-SemiBold.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-SemiBoldItalic.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-Thin.otf create mode 100644 public/assets/fonts/metropolis/Metropolis-ThinItalic.otf create mode 100644 public/assets/fonts/metropolis/SIL Open Font License.txt create mode 100644 public/assets/img/backgrounds/bg-angles.svg create mode 100644 public/assets/img/backgrounds/bg-pattern-shapes.png create mode 100644 public/assets/img/backgrounds/bg-waves.svg create mode 100644 public/assets/img/demo/cards/card-img-bottom.jpg create mode 100644 public/assets/img/demo/cards/card-img-left.jpg create mode 100644 public/assets/img/demo/cards/card-img-overlay.jpg create mode 100644 public/assets/img/demo/cards/card-img-right.jpg create mode 100644 public/assets/img/demo/cards/card-img-top.jpg create mode 100644 public/assets/img/demo/demo-logo.svg create mode 100644 public/assets/img/demo/demo-ocean-lg.jpg create mode 100644 public/assets/img/demo/demo-ocean-sm.jpg create mode 100644 public/assets/img/demo/pug.svg create mode 100644 public/assets/img/demo/user-placeholder.svg create mode 100644 public/assets/img/favicon.png create mode 100644 public/assets/img/illustrations/400-error-bad-request.svg create mode 100644 public/assets/img/illustrations/401-error-unauthorized.svg create mode 100644 public/assets/img/illustrations/403-error-forbidden.svg create mode 100644 public/assets/img/illustrations/404-error-with-a-cute-animal.svg create mode 100644 public/assets/img/illustrations/404-error.svg create mode 100644 public/assets/img/illustrations/500-internal-server-error.svg create mode 100644 public/assets/img/illustrations/503-error-service-unavailable.svg create mode 100644 public/assets/img/illustrations/504-error-gateway-timeout.svg create mode 100644 public/assets/img/illustrations/CREDITS.md create mode 100644 public/assets/img/illustrations/at-work.svg create mode 100644 public/assets/img/illustrations/browser-stats.svg create mode 100644 public/assets/img/illustrations/data-report.svg create mode 100644 public/assets/img/illustrations/problem-solving.svg create mode 100644 public/assets/img/illustrations/processing.svg create mode 100644 public/assets/img/illustrations/profiles/profile-1.png create mode 100644 public/assets/img/illustrations/profiles/profile-2.png create mode 100644 public/assets/img/illustrations/profiles/profile-3.png create mode 100644 public/assets/img/illustrations/profiles/profile-4.png create mode 100644 public/assets/img/illustrations/profiles/profile-5.png create mode 100644 public/assets/img/illustrations/profiles/profile-6.png create mode 100644 public/assets/img/illustrations/statistics.svg create mode 100644 public/assets/img/illustrations/team-spirit.svg create mode 100644 public/assets/img/illustrations/windows.svg create mode 100644 public/css/custom.css create mode 100644 public/css/styles.css create mode 100644 public/favicon.ico create mode 100644 public/index.php create mode 100644 public/js/custom.js create mode 100644 public/js/datatables/datatables-simple-demo.js create mode 100644 public/js/litepicker.js create mode 100644 public/js/markdown.js create mode 100644 public/js/scripts.js create mode 100644 public/js/toasts.js create mode 100644 public/robots.txt create mode 100644 resources/css/analytal_index.css create mode 100644 resources/css/app.css create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/lang/pt/attributes.php create mode 100644 resources/lang/pt/validation.php create mode 100644 resources/sass/_variables.scss create mode 100644 resources/sass/app.scss create mode 100644 resources/views/auth/login.blade.php create mode 100644 resources/views/auth/passwords/confirm.blade.php create mode 100644 resources/views/auth/passwords/email.blade.php create mode 100644 resources/views/auth/passwords/reset.blade.php create mode 100644 resources/views/auth/register.blade.php create mode 100644 resources/views/auth/verify.blade.php create mode 100644 resources/views/components/pin-modal.blade.php create mode 100644 resources/views/emails/new_user_welcome.blade.php create mode 100644 resources/views/emails/test-status.blade.php create mode 100644 resources/views/errors/503.blade.php create mode 100644 resources/views/home.blade.php create mode 100644 resources/views/layouts/app.blade.php create mode 100644 resources/views/layouts/base/bottom.blade.php create mode 100644 resources/views/layouts/base/footer.blade.php create mode 100644 resources/views/layouts/base/head.blade.php create mode 100644 resources/views/layouts/base/sidenav.blade.php create mode 100644 resources/views/layouts/base/topnav.blade.php create mode 100644 resources/views/web/admin/access/index.blade.php create mode 100644 resources/views/web/admin/access/roles_permissions.blade.php create mode 100644 resources/views/web/admin/access/users.blade.php create mode 100644 resources/views/web/admin/system.blade.php create mode 100644 resources/views/web/admin/user/add_edit.blade.php create mode 100644 resources/views/web/admin/user/index.blade.php create mode 100644 resources/views/web/analytical/index.blade.php create mode 100644 resources/views/web/clients/create/add.blade.php create mode 100644 resources/views/web/clients/create/form.blade.php create mode 100644 resources/views/web/clients/detail.blade.php create mode 100644 resources/views/web/clients/detail/contract.blade.php create mode 100644 resources/views/web/clients/detail/info.blade.php create mode 100644 resources/views/web/clients/detail/listContracts.blade.php create mode 100644 resources/views/web/clients/detail/payment.blade.php create mode 100644 resources/views/web/clients/detail/statistics.blade.php create mode 100644 resources/views/web/clients/filtersList.blade.php create mode 100644 resources/views/web/clients/list.blade.php create mode 100644 resources/views/web/contract/add_edit.blade.php create mode 100644 resources/views/web/contract/detail.blade.php create mode 100644 resources/views/web/contract/history.blade.php create mode 100644 resources/views/web/contract/history_create.blade.php create mode 100644 resources/views/web/contract/history_edit.blade.php create mode 100644 resources/views/web/contract/list.blade.php create mode 100644 resources/views/web/contract/listFilters.blade.php create mode 100644 resources/views/web/contract/renew.blade.php create mode 100644 resources/views/web/dashboard/partials/contractsTable.blade.php create mode 100644 resources/views/web/lead/add_edit.blade.php create mode 100644 resources/views/web/lead/list.blade.php create mode 100644 resources/views/web/lead/show.blade.php create mode 100644 resources/views/web/resources/contract_status/add_edit.blade.php create mode 100644 resources/views/web/resources/contract_status/index.blade.php create mode 100644 resources/views/web/resources/contract_types/add_edit.blade.php create mode 100644 resources/views/web/resources/contract_types/index.blade.php create mode 100644 resources/views/web/resources/cui_tiers/add_edit.blade.php create mode 100644 resources/views/web/resources/cui_tiers/index.blade.php create mode 100644 resources/views/web/resources/payment_methods/add_edit.blade.php create mode 100644 resources/views/web/resources/payment_methods/index.blade.php create mode 100644 resources/views/web/resources/power_tiers/add_edit.blade.php create mode 100644 resources/views/web/resources/power_tiers/index.blade.php create mode 100644 resources/views/web/resources/suppliers/add_edit.blade.php create mode 100644 resources/views/web/resources/suppliers/index.blade.php create mode 100644 resources/views/web/resources/typology/add_edit.blade.php create mode 100644 resources/views/web/resources/typology/index.blade.php create mode 100644 resources/views/welcome.blade.php create mode 100644 routes/api.php create mode 100644 routes/console.php create mode 100644 routes/web.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/private/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/framework/.gitignore create mode 100644 storage/framework/cache/.gitignore create mode 100644 storage/framework/cache/data/.gitignore create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/testing/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 storage/logs/.gitignore create mode 100644 tests/Api/ApiEndpointsTest.php create mode 100644 tests/Browser/BrowserAuthenticationTest.php create mode 100644 tests/Feature/ContractControllerTotalsTest.php create mode 100644 tests/Feature/ContractPersistenceTest.php create mode 100644 tests/Feature/ExampleTest.php create mode 100644 tests/Feature/RoutesTest.php create mode 100644 tests/Support/IsolatedDatabaseTestCase.php create mode 100644 tests/TestCase.php create mode 100644 tests/Unit/AnalyticalControllerTest.php create mode 100644 tests/Unit/ClientRequestTest.php create mode 100644 tests/Unit/ClientsTest.php create mode 100644 tests/Unit/ContractControllerTest.php create mode 100644 tests/Unit/ContractHistoryTest.php create mode 100644 tests/Unit/ContractRequestTest.php create mode 100644 tests/Unit/ContractScopeTest.php create mode 100644 tests/Unit/ContractTest.php create mode 100644 tests/Unit/CpeTest.php create mode 100644 tests/Unit/ExampleTest.php create mode 100644 tests/Unit/LeadDetailTest.php create mode 100644 tests/Unit/LeadRequestTest.php create mode 100644 tests/Unit/RenewContractRequestTest.php create mode 100644 vite.config.js 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..515b909 --- /dev/null +++ b/.env.example @@ -0,0 +1,66 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost +API_URL=http://localhost/api + +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=mariadb +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=volcerto +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..fcb21d3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore +.styleci.yml export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b96b021 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/storage/pail +/vendor +.env +.env.backup +.env.production +.env.testing +.phpactor.json +.phpunit.result.cache +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +/auth.json +/.fleet +/.idea +/.nova +/.vscode +/.zed +lang/vendor/backup/ diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..034e848 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,21 @@ +# Security Policy + +## Supported Versions + +Use this section to tell people about which versions of your project are +currently being supported with security updates. + +| Version | Supported | +| ------- | ------------------ | +| 5.1.x | :white_check_mark: | +| 5.0.x | :x: | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +Use this section to tell people how to report a vulnerability. + +Tell them where to go, how often they can expect to get an update on a +reported vulnerability, what to expect if the vulnerability is accepted or +declined, etc. diff --git a/app/Console/Commands/CleanMinioBackups.php b/app/Console/Commands/CleanMinioBackups.php new file mode 100644 index 0000000..2bce4b6 --- /dev/null +++ b/app/Console/Commands/CleanMinioBackups.php @@ -0,0 +1,111 @@ +info('Connecting to MinIO bucket...'); + + $allFiles = $disk->allFiles($folder); + + if (empty($allFiles)) { + $this->info('No backup files found in the directory.'); + return 0; + } + + $this->info('Found ' . count($allFiles) . ' files. Processing...'); + + $zipFiles = collect($allFiles) + ->filter(fn($file) => str_ends_with($file, '.zip')) + ->values(); + + if ($zipFiles->isEmpty()) { + $this->info('No ZIP backup files found.'); + return 0; + } + + $this->info('Found ' . $zipFiles->count() . ' ZIP files.'); + + $backups = $zipFiles->map(function ($file) use ($disk) { + try { + $lastModified = (int) $disk->lastModified($file); + return [ + 'file' => $file, + 'lastModified' => $lastModified, + 'date' => date('Y-m-d H:i:s', $lastModified), + 'estimated' => false + ]; + } catch (\Exception $e) { + $this->warn("Cannot read metadata for {$file}, using filename for sorting"); + + preg_match('/(\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2})/', $file, $matches); + + $timestamp = isset($matches[1]) + ? \DateTime::createFromFormat('Y-m-d-H-i-s', $matches[1])->getTimestamp() + : time(); + + return [ + 'file' => $file, + 'lastModified' => $timestamp, + 'date' => date('Y-m-d H:i:s', $timestamp), + 'estimated' => true + ]; + } + }); + + $backups = $backups->sortByDesc('lastModified')->values(); + + $totalBackups = $backups->count(); + $toDelete = $backups->slice($keep); + + $this->info("Valid backups found: {$totalBackups}"); + if ($toDelete->isEmpty()) { + $this->info("Only {$totalBackups} backup(s) found (less than {$keep}), nothing to delete."); + return 0; + } + + $this->info("Keeping the latest {$keep}, deleting {$toDelete->count()} old backups."); + + $this->info("Backups scheduled for deletion:"); + foreach ($toDelete as $item) { + $this->info(" - {$item['file']} ({$item['date']})" . ($item['estimated'] ? ' [estimated]' : '')); + } + + $deletedCount = 0; + foreach ($toDelete as $item) { + try { + $disk->delete($item['file']); + $this->info("✓ Deleted: {$item['file']}" . ($item['estimated'] ? ' [estimated]' : '')); + $deletedCount++; + } catch (\Exception $e) { + $this->error("✗ Failed to delete {$item['file']}: {$e->getMessage()}"); + } + } + + $this->info("Cleanup finished. Deleted {$deletedCount} files. Kept the last {$keep} backups."); + + } catch (\Exception $e) { + $this->error("Failed to access backup directory: {$e->getMessage()}"); + $this->error('Debug info:'); + $this->error('Bucket: ' . env('AWS_BUCKET')); + $this->error('Endpoint: ' . env('AWS_ENDPOINT')); + $this->error('Key: ' . substr(env('AWS_ACCESS_KEY_ID', ''), 0, 5) . '...'); + return 1; + } + + return 0; + } +} diff --git a/app/Console/Commands/SendTestEmail.php b/app/Console/Commands/SendTestEmail.php new file mode 100644 index 0000000..cc2f016 --- /dev/null +++ b/app/Console/Commands/SendTestEmail.php @@ -0,0 +1,31 @@ +sendTestEmail(); + } catch (\Throwable $e) { + $this->error('Erro ao enviar e-mail: ' . $e->getMessage()); + } + } +} diff --git a/app/Exports/ContractsExport.php b/app/Exports/ContractsExport.php new file mode 100644 index 0000000..71bbcfc --- /dev/null +++ b/app/Exports/ContractsExport.php @@ -0,0 +1,52 @@ +get()->map(function ($contract) { + return [ + 'Client' => $contract->client->name ?? '', + 'Seller' => $contract->seller->name ?? '', + 'Code' => $contract->code, + 'Supply Type' => strtoupper($contract->supply_type), + 'Power/CUI' => $contract->supply_type === 'cpe' + ? ($contract->powerTier->name ?? '') + : ($contract->cuiTier->name ?? ''), + 'Consumption' => $contract->annual_consumption ?? '', + 'Contract Type'=> $contract->contractType->description ?? '', + 'PVP' => $contract->contract_value, + 'Commission' => $contract->commission_value, + 'Status' => $contract->status->description ?? '', + 'Activation' => optional($contract->activation_date)->format('d/m/Y'), + 'Validity' => optional($contract->validity)->format('d/m/Y'), + 'Contract End' => optional($contract->contract_end_date)->format('d/m/Y'), + ]; + }); + } + + public function headings(): array + { + return [ + 'Cliente', + 'Vendedor', + 'Código', + 'Tipo Fornecimento', + 'Potência / Escalão', + 'Consumo Anual', + 'Tipo Contrato', + 'PVP', + 'Comissão', + 'Estado', + 'Data Ativação', + 'Validade', + 'Fim de Contrato', + ]; + } +} diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php new file mode 100644 index 0000000..b1186d4 --- /dev/null +++ b/app/Http/Controllers/AdminController.php @@ -0,0 +1,17 @@ +info()); + } + + public function phpInfo(AdminService $admin) + { + return response($admin->phpInfo())->header('Content-Type', 'text/html'); + } +} diff --git a/app/Http/Controllers/AnalyticalController.php b/app/Http/Controllers/AnalyticalController.php new file mode 100644 index 0000000..23f0088 --- /dev/null +++ b/app/Http/Controllers/AnalyticalController.php @@ -0,0 +1,18 @@ +analytics->index($request)); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Api/AccessController.php b/app/Http/Controllers/Api/AccessController.php new file mode 100644 index 0000000..6198d63 --- /dev/null +++ b/app/Http/Controllers/Api/AccessController.php @@ -0,0 +1,33 @@ +json($access->index()); + } + + public function users(UserAccessService $access) + { + return response()->json($access->index()); + } + + public function updatePermissions(Request $request, Role $role, RolePermissionService $access) + { + return response()->json(['role' => $access->updatePermissions($request, $role)]); + } + + public function updateRoles(Request $request, User $user, UserAccessService $access) + { + return response()->json(['user' => $access->updateRoles($request, $user)]); + } +} diff --git a/app/Http/Controllers/Api/AdminController.php b/app/Http/Controllers/Api/AdminController.php new file mode 100644 index 0000000..115834b --- /dev/null +++ b/app/Http/Controllers/Api/AdminController.php @@ -0,0 +1,36 @@ +json($this->admin->info()); + } + + public function phpInfo() + { + return response($this->admin->phpInfo())->header('Content-Type', 'text/html'); + } + + public function runMigrations() + { + $result = $this->admin->runMigrations(); + return response()->json($result, $result['success'] ? 200 : 500); + } + + public function testEmail(Request $request) + { + $data = $request->validate(['email' => 'required|email']); + return response()->json($this->admin->testEmail($data['email'])); + } +} diff --git a/app/Http/Controllers/Api/AuthController.php b/app/Http/Controllers/Api/AuthController.php new file mode 100644 index 0000000..87e4e29 --- /dev/null +++ b/app/Http/Controllers/Api/AuthController.php @@ -0,0 +1,66 @@ +validate(['email' => 'required|email', 'password' => 'required|string']); + return response()->json($this->authentication->issueToken($this->authentication->authenticate($credentials))); + } + + private function token(Request $request): PersonalAccessToken + { + $token = $request->user()->currentAccessToken(); + abort_unless($token instanceof PersonalAccessToken, 401, 'Token necessario.'); + return $token; + } + + public function refresh(Request $request) + { + return response()->json($this->authentication->refresh($this->token($request))); + } + + public function checkToken(Request $request) + { + return response()->json($this->authentication->check($this->token($request))); + } + + public function logout(Request $request) + { + $this->authentication->revoke($this->token($request)); + return response()->json(['message' => 'Logout realizado com sucesso', 'revoked' => true]); + } + + public function user(Request $request) + { + return response()->json($request->user()->load('roles.permissions')); + } + + public function sendResetLink(Request $request) + { + $credentials = $request->validate(['email' => 'required|email']); + $status = $this->authentication->sendResetLink($credentials); + return response()->json(['message' => __($status)], $status === Password::RESET_LINK_SENT ? 200 : 422); + } + + public function resetPassword(Request $request) + { + $credentials = $request->validate([ + 'token' => 'required|string', 'email' => 'required|email', 'password' => 'required|string|min:3|confirmed', + ]); + $status = $this->authentication->resetPassword($credentials); + return response()->json(['message' => __($status)], $status === Password::PASSWORD_RESET ? 200 : 422); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Api/ClientController.php b/app/Http/Controllers/Api/ClientController.php new file mode 100644 index 0000000..5ed7a61 --- /dev/null +++ b/app/Http/Controllers/Api/ClientController.php @@ -0,0 +1,140 @@ + + * @since 2025/11 + * @version 2025/11 + */ + public function index(Request $request) + { + if ($request->has('per_page')) { + return response()->json(['clients' => $this->clients->listing($request, true)]); + } + $clients = $this->clients->listing($request)->map(function ($client) { + return [ + 'id' => $client->id, + 'type' => $client->type, + 'lead_status_id' => $client->lead_status_id, + 'client_type_id' => $client->client_type_id, + 'name' => $client->name, + 'tax_number' => $client->tax_number, + 'address' => $client->address, + 'phone' => $client->phone, + 'email' => $client->email, + 'seller_id' => $client->seller_id, + 'status' => $client->status, + 'notes' => $client->notes, + 'contact_info' => $client->contact_info, + 'created_at' => $client->created_at, + 'updated_at' => $client->updated_at, + ]; + }); + + return response()->json(['clients' => $clients]); + } + + /** + * Apply filters to the clients query + * + * @author Luis Medon + * @since 2025/11 + * @version 2025/11 + */ + /** + * Show a single client + * + * @author Luis Medon + * @since 2025/11 + * @version 2025/11 + */ + public function show($id) + { + return response()->json($this->clients->find($id)); + } + + /** + * Store a new client + * + * @author Luis Medon + * @since 2025/11 + * @version 2025/11 + */ + public function store(CreateClientRequest $request) + { + $client = $this->clients->create($request->validated()); + + return response()->json([ + 'message' => 'Client created successfully', + 'client' => $client + ], 201); + } + + /** + * Update an existing client + * + * @author Luis Medon + * @since 2025/11 + * @version 2025/11 + */ + public function update(UpdateClientRequest $request, $id) + { + $client = $this->clients->update($id, $request->validated()); + + return response()->json([ + 'message' => 'Client updated successfully', + 'client' => $client + ]); + } + + /** + * Delete a client (soft delete by changing status) + * + * @author Luis Medon + * @since 2025/11 + * @version 2025/11 + */ + public function destroy($id) + { + $this->clients->delete($id); + + return response()->json(['message' => 'Client deleted successfully']); + } + + public function options(Request $request) + { + return response()->json($request->filled('type') + ? $this->clients->form($request->input('type'), $request->user()) + : ['clientTypes' => $this->clients->types()]); + } + + public function detail($id) + { + return response()->json($this->clients->detail($id)); + } + + public function searchName(Request $request) + { + return response()->json($this->clients->searchName($request->input('term', ''))); + } + + public function searchID(Request $request) + { + return response()->json($this->clients->searchID($request->input('id'))); + } +} diff --git a/app/Http/Controllers/Api/ContractController.php b/app/Http/Controllers/Api/ContractController.php new file mode 100644 index 0000000..6189b86 --- /dev/null +++ b/app/Http/Controllers/Api/ContractController.php @@ -0,0 +1,92 @@ +json($this->contracts->index($request)); + } + + public function options(Request $request) + { + return response()->json($this->contracts->create($request)); + } + + public function show(string $id) + { + return response()->json($this->contracts->show($id)); + } + + public function edit(string $id) + { + return response()->json($this->contracts->edit($id)); + } + + public function store(ContractRequest $request) + { + return response()->json(['contract' => $this->contracts->store($request)], 201); + } + + public function update(ContractRequest $request, string $id) + { + return response()->json(['contract' => $this->contracts->update($request, $id)]); + } + + public function renewalOptions(string $id) + { + return response()->json($this->contracts->renewForm($id)); + } + + public function renew(RenewContractRequest $request, $id) + { + return response()->json(['contract' => $this->contracts->renew($request, $id)]); + } + + public function history($id) + { + return response()->json($this->contracts->history($id)); + } + + public function showHistory($id, $historyId) + { + return response()->json($this->contracts->editHistory($id, $historyId)); + } + + public function updateHistory(Request $request, $id, $historyId) + { + return response()->json(['history' => $this->contracts->updateHistory($request, $id, $historyId)]); + } + + public function destroyHistory($id, $historyId) + { + $this->contracts->destroyHistory($id, $historyId); + return response()->json(['message' => 'Registo eliminado com sucesso.']); + } + + public function destroy(string $id) + { + return response()->json($this->contracts->destroy($id)); + } + + public function bulkDestroy(Request $request) + { + return response()->json($this->contracts->bulkDestroy($request)); + } + + public function export(Request $request) + { + return $this->contracts->export($request); + } +} diff --git a/app/Http/Controllers/Api/DashboardController.php b/app/Http/Controllers/Api/DashboardController.php new file mode 100644 index 0000000..7ac0141 --- /dev/null +++ b/app/Http/Controllers/Api/DashboardController.php @@ -0,0 +1,21 @@ +json($dashboard->index()); + } + + public function analytics(Request $request, AnalyticalService $analytics) + { + return response()->json($analytics->index($request)); + } +} diff --git a/app/Http/Controllers/Api/LeadController.php b/app/Http/Controllers/Api/LeadController.php new file mode 100644 index 0000000..1279b56 --- /dev/null +++ b/app/Http/Controllers/Api/LeadController.php @@ -0,0 +1,49 @@ +json($this->leads->list()); + } + + public function options() + { + return response()->json($this->leads->create()); + } + + public function show($id) + { + return response()->json($this->leads->show($id)); + } + + public function store(LeadRequest $request) + { + return response()->json(['lead' => $this->leads->store($request)], 201); + } + + public function update(LeadRequest $request, $id) + { + return response()->json(['lead' => $this->leads->update($request, $id)]); + } + + public function convert($id) + { + return response()->json(['client' => $this->leads->convert($id)]); + } + + public function destroy($id) + { + return response()->json($this->leads->destroy($id)); + } +} diff --git a/app/Http/Controllers/Api/ResourceController.php b/app/Http/Controllers/Api/ResourceController.php new file mode 100644 index 0000000..95019c5 --- /dev/null +++ b/app/Http/Controllers/Api/ResourceController.php @@ -0,0 +1,40 @@ +json(['data' => $this->resources->all($resource)]); + } + + public function show(string $resource, $id) + { + return response()->json(['data' => $this->resources->find($resource, $id)]); + } + + public function store(Request $request, string $resource) + { + return response()->json(['data' => $this->resources->save($resource, $request)], 201); + } + + public function update(Request $request, string $resource, $id) + { + return response()->json(['data' => $this->resources->save($resource, $request, $id)]); + } + + public function destroy(string $resource, $id) + { + $this->resources->delete($resource, $id); + return response()->json(['message' => 'Registo eliminado com sucesso.']); + } +} diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php new file mode 100644 index 0000000..fbe47bb --- /dev/null +++ b/app/Http/Controllers/Api/UserController.php @@ -0,0 +1,63 @@ +json($this->users->index()); + } + + public function options() + { + return response()->json($this->users->create()); + } + + public function show(User $user) + { + return response()->json($this->users->edit($user)); + } + + public function store(Request $request) + { + return response()->json(['user' => $this->users->store($request)], 201); + } + + public function update(Request $request, User $user) + { + return response()->json(['user' => $this->users->update($request, $user)]); + } + + public function destroy(User $user) + { + $this->users->destroy($user); + return response()->json(['message' => 'Utilizador removido com sucesso.']); + } + + public function sendPasswordResetLink(User $user) + { + $status = $this->users->sendPasswordResetLink($user); + return response()->json(['message' => __($status)], $status === Password::RESET_LINK_SENT ? 200 : 422); + } + + public function savePin(Request $request) + { + return response()->json($this->users->savePin($request)); + } + + public function checkPin(Request $request) + { + return response()->json($this->users->checkPin($request)); + } +} diff --git a/app/Http/Controllers/Auth/ApiLoginController.php b/app/Http/Controllers/Auth/ApiLoginController.php new file mode 100644 index 0000000..b7a3ac7 --- /dev/null +++ b/app/Http/Controllers/Auth/ApiLoginController.php @@ -0,0 +1,77 @@ + + * @since 2025/11 + * @version 2025/11 + */ + public function showLoginForm() + { + // Prevent proxies/CDN from caching a page with a CSRF token tied to another visitor's session + return response()->view('auth.login') + ->header('Cache-Control', 'no-store, no-cache, must-revalidate, private') + ->header('Pragma', 'no-cache'); + } + + /** + * @author Luis Medon + * @since 2025/11 + * @version 2025/11 + */ + public function login(Request $request) + { + $request->validate([ + 'email' => 'required|email', + 'password' => 'required', + ]); + + try { + $user = $this->authentication->authenticate($request->only('email', 'password')); + } catch (HttpException $exception) { + return back()->withInput($request->only('email'))->with('error', 'Credenciais invalidas.'); + } + + $data = $this->authentication->issueToken($user); + + Auth::login($user); + $request->session()->regenerate(); + + session([ + 'api_token' => $data['token'], + ]); + + return redirect()->route('home'); + } + + + /** + * @author Luis Medon + * @since 2025/11 + * @version 2025/11 + */ + public function logout(Request $request) + { + if ($request->user() && session('api_token')) { + $this->authentication->revoke($this->authentication->sessionToken($request->user(), session('api_token'))); + } + + Auth::logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + return redirect()->route('login'); + } +} diff --git a/app/Http/Controllers/Auth/ConfirmPasswordController.php b/app/Http/Controllers/Auth/ConfirmPasswordController.php new file mode 100644 index 0000000..3559954 --- /dev/null +++ b/app/Http/Controllers/Auth/ConfirmPasswordController.php @@ -0,0 +1,39 @@ +middleware('auth'); + } +} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php new file mode 100644 index 0000000..b5d0fc6 --- /dev/null +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -0,0 +1,34 @@ +validate(['email' => 'required|email']); + $status = $authentication->sendResetLink($credentials); + return $status === Password::RESET_LINK_SENT + ? back()->with('status', __($status)) + : back()->withErrors(['email' => __($status)]); + } +} diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php new file mode 100644 index 0000000..4e49546 --- /dev/null +++ b/app/Http/Controllers/Auth/LoginController.php @@ -0,0 +1,40 @@ +middleware('guest')->except('logout'); + $this->middleware('auth')->only('logout'); + } +} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..ab7ef63 --- /dev/null +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -0,0 +1,72 @@ +middleware('guest'); + } + + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + return Validator::make($data, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return \App\Models\User + */ + protected function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + ]); + } +} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100644 index 0000000..1a8243a --- /dev/null +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,50 @@ +validate($this->rules()); + $status = $authentication->resetPassword($credentials); + return $status === Password::PASSWORD_RESET + ? redirect()->route('login')->with('status', __($status)) + : back()->withErrors(['email' => __($status)])->withInput($request->only('email')); + } + + protected function rules() + { + return [ + 'token' => 'required', + 'email' => 'required|email', + 'password' => ['required', 'string', 'min:3', 'confirmed'], + ]; + } +} diff --git a/app/Http/Controllers/Auth/VerificationController.php b/app/Http/Controllers/Auth/VerificationController.php new file mode 100644 index 0000000..23a43a8 --- /dev/null +++ b/app/Http/Controllers/Auth/VerificationController.php @@ -0,0 +1,41 @@ +middleware('auth'); + $this->middleware('signed')->only('verify'); + $this->middleware('throttle:6,1')->only('verify', 'resend'); + } +} diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php new file mode 100644 index 0000000..26f2c8e --- /dev/null +++ b/app/Http/Controllers/ClientController.php @@ -0,0 +1,79 @@ +clients->listing($request, true); + $clientTypes = $this->clients->types(); + + return view('web.clients.list', compact('clients', 'clientTypes')); + } + + public function destroy($id) + { + $this->clients->delete($id); + + return response()->json([ + 'description' => 'Cliente eliminado com sucesso', + 'status' => 'success' + ], 200); + } + + public function add() + { + $clientTypes = $this->clients->types(); + + return view('web.clients.create.add', compact('clientTypes')); + } + + public function add2step(Request $request, $type) + { + return view('web.clients.create.form', $this->clients->form($type, $request->user())); + } + + public function store(CreateClientRequest $request) + { + $client = $this->clients->create($request->validated()); + + return redirect()->route('client.detail', ['id' => $client->id]) + ->with('success', 'Cliente criado com sucesso!'); + } + + public function detail($clientId) + { + return view('web.clients.detail', $this->clients->detail($clientId)); + } + + + public function update(UpdateClientRequest $request, $id) + { + $this->clients->update($id, $request->validated()); + + return redirect()->back()->with('success', 'Cliente atualizado com sucesso!'); + } + + public function searchName(Request $request) + { + return response()->json($this->clients->searchName($request->input('term', ''))); + } + + public function searchID(Request $request) + { + return response()->json($this->clients->searchID($request->input('id'))); + } + + + +} diff --git a/app/Http/Controllers/ContractController.php b/app/Http/Controllers/ContractController.php new file mode 100644 index 0000000..e5a5256 --- /dev/null +++ b/app/Http/Controllers/ContractController.php @@ -0,0 +1,107 @@ +contracts->index($request)); + } + + public function create(Request $request) + { + return view('web.contract.add_edit', $this->contracts->create($request)); + } + + public function store(ContractRequest $request) + { + $contract = $this->contracts->store($request); + return redirect()->route('client.detail', ['id' => $contract->client_id])->with('success', 'Contrato criado com sucesso!'); + } + + public function edit(string $id) + { + return view('web.contract.add_edit', $this->contracts->edit($id)); + } + + public function update(ContractRequest $request, string $id) + { + $this->contracts->update($request, $id); + return redirect()->route('contract.list')->with('success', 'Contrato atualizado com sucesso!'); + } + + public function show(string $id) + { + return view('web.contract.detail', $this->contracts->show($id)); + } + + public function renewForm(string $id) + { + return view('web.contract.renew', $this->contracts->renewForm($id)); + } + + public function renew(RenewContractRequest $request, $id) + { + $contract = $this->contracts->renew($request, $id); + return redirect()->route('contract.edit', ['id' => $contract->id])->with('success', 'Contrato renovado com sucesso!'); + } + + public function history($id) + { + return view('web.contract.history', $this->contracts->history($id)); + } + + public function createHistory($id) + { + return view('web.contract.history_create', $this->contracts->createHistory($id)); + } + + public function storeHistory(Request $request, $id) + { + $this->contracts->storeHistory($request, $id); + return redirect()->route('contract.history', $id)->with('success', 'Registo do histórico criado com sucesso.'); + } + + public function editHistory($id, $historyId) + { + return view('web.contract.history_edit', $this->contracts->editHistory($id, $historyId)); + } + + public function updateHistory(Request $request, $id, $historyId) + { + $this->contracts->updateHistory($request, $id, $historyId); + return redirect()->route('contract.history', $id)->with('success', 'Registo do histórico atualizado com sucesso.'); + } + + public function destroyHistory($id, $historyId) + { + $this->contracts->destroyHistory($id, $historyId); + return redirect()->route('contract.history', $id)->with('success', 'Registo do histórico eliminado com sucesso.'); + } + + public function export(Request $request) + { + return $this->contracts->export($request); + } + + public function destroy(Request $request, string $id) + { + $result = $this->contracts->destroy($id); + return $request->ajax() ? response()->json($result) : back()->with('success', $result['message']); + } + + public function bulkDestroy(Request $request) + { + return response()->json($this->contracts->bulkDestroy($request)); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..77ec359 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ + 'luismedon@gmail.com', + 'subject' => 'Teste Completo de Envio de E-mail', + 'body' => 'Este é um e-mail de teste completo enviado via Laravel.', + 'status' => 'pendente', + 'error' => null, + 'sent_at' => now()->toDateTimeString(), + ]; + + try { + Mail::raw($emailData['body'], function ($message) use (&$emailData) { + $message->to($emailData['to']) + ->subject($emailData['subject']); + }); + + $emailData['status'] = 'enviado com sucesso'; + } catch (\Exception $e) { + $emailData['status'] = 'falha ao enviar'; + $emailData['error'] = $e->getMessage(); + Log::error('Erro ao enviar e-mail de teste: ' . $e->getMessage()); + } + + $emailData['execution_time'] = round(microtime(true) - $start, 4); + + $emailData['mail_config'] = [ + 'driver' => config('mail.default'), + 'host' => config('mail.mailers.smtp.host'), + 'port' => config('mail.mailers.smtp.port'), + 'encryption' => config('mail.mailers.smtp.encryption'), + 'username' => config('mail.mailers.smtp.username'), + 'from' => config('mail.from.address'), + 'from_name' => config('mail.from.name'), + 'timeout' => config('mail.mailers.smtp.timeout') ?? 'padrão', + ]; + + $emailData['laravel_info'] = [ + 'laravel_version' => app()->version(), + 'php_version' => phpversion(), + 'env' => App::environment(), + 'mailer_class' => get_class(app()->make('mailer')->getSymfonyTransport()), + ]; + + return view('emails.test-status', compact('emailData')); + } +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000..0e531dc --- /dev/null +++ b/app/Http/Controllers/HomeController.php @@ -0,0 +1,17 @@ +dashboard->index()); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/LeadController.php b/app/Http/Controllers/LeadController.php new file mode 100644 index 0000000..9918415 --- /dev/null +++ b/app/Http/Controllers/LeadController.php @@ -0,0 +1,56 @@ +leads->list()); + } + + public function show($id) + { + return view('web.lead.show', $this->leads->show($id)); + } + + public function create() + { + return view('web.lead.add_edit', $this->leads->create()); + } + + public function edit($id) + { + return view('web.lead.add_edit', $this->leads->edit($id)); + } + + public function store(LeadRequest $request) + { + $this->leads->store($request); + return redirect()->route('lead.list')->with('success', 'Lead criado com sucesso!'); + } + + public function update(LeadRequest $request, $id) + { + $this->leads->update($request, $id); + return redirect()->route('lead.list')->with('success', 'Lead atualizado com sucesso!'); + } + + public function convert($id) + { + $this->leads->convert($id); + return redirect()->route('lead.list')->with('success', 'Lead successfully converted to client!'); + } + + public function destroy($id) + { + return response()->json($this->leads->destroy($id)); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Resources/ContractStatusController.php b/app/Http/Controllers/Resources/ContractStatusController.php new file mode 100644 index 0000000..2e92aa3 --- /dev/null +++ b/app/Http/Controllers/Resources/ContractStatusController.php @@ -0,0 +1,11 @@ +viewPath . '.index', [$this->collectionName => $this->resources->all($this->resource)]); + } + + public function create() + { + return view($this->viewPath . '.add_edit'); + } + + public function show($id) + { + return $this->edit($id); + } + + public function edit($id) + { + return view($this->viewPath . '.add_edit', [$this->itemName => $this->resources->find($this->resource, $id)]); + } + + public function store(Request $request) + { + $this->resources->save($this->resource, $request); + return redirect()->route($this->resource . '.index')->with('success', 'Registo criado com sucesso.'); + } + + public function update(Request $request, $id) + { + $this->resources->save($this->resource, $request, $id); + return redirect()->route($this->resource . '.index')->with('success', 'Registo atualizado com sucesso.'); + } + + public function destroy($id) + { + $this->resources->delete($this->resource, $id); + return redirect()->route($this->resource . '.index')->with('success', 'Registo eliminado com sucesso.'); + } +} diff --git a/app/Http/Controllers/Resources/SupplierController.php b/app/Http/Controllers/Resources/SupplierController.php new file mode 100644 index 0000000..5a2d1c7 --- /dev/null +++ b/app/Http/Controllers/Resources/SupplierController.php @@ -0,0 +1,11 @@ +access->index()); + } + + public function updatePermissions(Request $request, Role $role) + { + $this->access->updatePermissions($request, $role); + return back()->with('success', 'Permissoes atualizadas.'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/UserAccessController.php b/app/Http/Controllers/UserAccessController.php new file mode 100644 index 0000000..c744e9c --- /dev/null +++ b/app/Http/Controllers/UserAccessController.php @@ -0,0 +1,25 @@ +access->index()); + } + + public function updateRoles(Request $request, User $user) + { + $this->access->updateRoles($request, $user); + return back()->with('success', 'Roles atualizadas.'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 0000000..8b216e4 --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,65 @@ +users->index()); + } + + public function create() + { + return view('auth.register', $this->users->create()); + } + + public function store(Request $request) + { + $this->users->store($request); + return redirect()->route('users.index')->with('success', 'Utilizador criado com sucesso.'); + } + + public function edit(User $user) + { + return view('web.admin.user.add_edit', $this->users->edit($user)); + } + + public function update(Request $request, User $user) + { + $this->users->update($request, $user); + return redirect()->route('users.index')->with('success', 'Utilizador atualizado com sucesso.'); + } + + public function destroy(User $user) + { + $this->users->destroy($user); + return redirect()->route('users.index')->with('success', 'Utilizador removido com sucesso.'); + } + + public function sendPasswordResetLink(User $user) + { + $status = $this->users->sendPasswordResetLink($user); + return redirect()->route('users.edit', $user)->with($status === Password::RESET_LINK_SENT ? 'success' : 'error', __($status)); + } + + public function savePin(Request $request) + { + $result = $this->users->savePin($request); + return back()->with('success', $result['message']); + } + + public function checkPin(Request $request) + { + return response()->json($this->users->checkPin($request)); + } +} \ No newline at end of file diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 0000000..28bda63 --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,40 @@ + [ + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class + ], + + + 'api' => [ + \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + protected $middlewareAliases = [ + 'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class, + 'role' => \Spatie\Permission\Middleware\RoleMiddleware::class, + 'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'auth.session' => \App\Http\Middleware\AuthSession::class + ]; +} diff --git a/app/Http/Middleware/ApiResponse.php b/app/Http/Middleware/ApiResponse.php new file mode 100644 index 0000000..9b8e4b1 --- /dev/null +++ b/app/Http/Middleware/ApiResponse.php @@ -0,0 +1,45 @@ +headers->set('Accept', 'application/json'); + $response = $next($request); + if ($response instanceof JsonResponse && $request->is('api/contracts*', 'api/clients*', 'api/dashboard', 'api/analytics', 'api/leads*') + && $request->user() && !$request->user()->can('view_contract_summary')) { + $response->setData($this->withoutFinancials($response->getData(true))); + } + $response->headers->set('Cache-Control', 'no-store, private'); + return $response; + } + + private function withoutFinancials($data) + { + if (!is_array($data)) { + return $data; + } + foreach ($data as $key => $value) { + if (in_array($key, self::FINANCIAL_FIELDS, true)) { + unset($data[$key]); + } else { + $data[$key] = $this->withoutFinancials($value); + } + } + return $data; + } +} diff --git a/app/Http/Middleware/AuthSession.php b/app/Http/Middleware/AuthSession.php new file mode 100644 index 0000000..d9c52ab --- /dev/null +++ b/app/Http/Middleware/AuthSession.php @@ -0,0 +1,31 @@ +user(); + $plainText = $request->session()->get('api_token'); + $token = $user && $plainText ? $this->authentication->sessionToken($user, $plainText) : null; + if (!$token) { + Auth::logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + return redirect()->route('login'); + } + $result = $this->authentication->refresh($token); + $request->session()->put('token_expires_at', $result['expires_at']); + return $next($request); + } +} \ No newline at end of file diff --git a/app/Http/Middleware/EnsureApiUser.php b/app/Http/Middleware/EnsureApiUser.php new file mode 100644 index 0000000..3d12cf6 --- /dev/null +++ b/app/Http/Middleware/EnsureApiUser.php @@ -0,0 +1,15 @@ +user()->can_login === false, 401, 'Conta desativada.'); + return $next($request); + } +} diff --git a/app/Http/Requests/ContractRequest.php b/app/Http/Requests/ContractRequest.php new file mode 100644 index 0000000..4af543f --- /dev/null +++ b/app/Http/Requests/ContractRequest.php @@ -0,0 +1,196 @@ +bound('translator')) { + return __($key, [], app()->getLocale()) ?: $fallback; + } + + return $fallback; + } + + public function authorize(): bool + { + return true; + } + + protected function prepareForValidation(): void + { + foreach (['validity', 'contract_end_date', 'contract_date', 'activation_date', 'chargeback_date', 'payment_date', 'renewal_date'] as $field) { + $value = $this->input($field); + + if ($value) { + try { + $date = str_contains((string) $value, '/') + ? Carbon::createFromFormat('d/m/Y', $value) + : Carbon::parse($value); + $this->merge([$field => $date->format('Y-m-d')]); + } catch (\Throwable) { + // Mantém o valor original para o validador apresentar a mensagem adequada. + } + } + } + + if ($this->filled('chargeback_value')) { + $this->merge(['chargeback' => true]); + } + } + + public function rules(): array + { + $rules = [ + 'client_id' => ['required', 'exists:clients,id'], + 'contract_value' => ['nullable', 'numeric', 'min:0'], + 'commission_value' => ['nullable', 'numeric',], + 'profit_value' => ['nullable', 'numeric'], + 'seller_id' => ['nullable', 'exists:users,id'], + 'supply_type' => ['required', 'in:cpe,cui'], + 'supply_address' => ['nullable', 'string', 'max:255'], + 'annual_consumption' => ['nullable', 'numeric', 'min:0'], + 'code' => ['required', 'string', 'max:255'], + 'contract_type_id' => ['required', 'exists:contract_types,id'], + 'validity' => ['nullable', 'date'], + 'contract_end_date' => ['nullable', 'date'], + 'contract_date' => ['nullable', 'date'], + 'activation_date' => ['nullable', 'date'], + 'status_id' => ['required', 'exists:contract_status,id'], + 'commission_rate' => ['nullable', 'numeric', 'between:0,100'], + 'notes' => ['nullable', 'string'], + 'power_tier_id' => ['nullable', 'exists:power_tiers,id'], + 'payment_method_id' => ['required', 'exists:payment_methods,id'], + 'delivery_method' => ['required', 'in:correio,email'], + 'delivery_email' => ['nullable', 'email', 'max:255'], + 'previous_supplier_id' => ['nullable', 'exists:suppliers,id'], + 'new_supplier_id' => ['nullable', 'exists:suppliers,id'], + 'typology_id' => ['nullable', 'exists:typologies,id'], + 'cui_tier_id' => ['nullable', 'exists:cui_tiers,id'], + 'go_ki' => ['required', 'numeric'], + 'paid' => ['nullable', 'boolean'], + 'chargeback' => ['nullable', 'boolean'], + 'chargeback_value' => ['required_if:chargeback,1', 'nullable', 'numeric', 'max:-0.01'], + 'chargeback_date' => ['required_if:chargeback,1', 'nullable', 'date'], + + // Parcelas + 'installments.*.due_date' => ['nullable', 'date'], + 'installments.*.amount' => ['nullable', 'numeric', 'min:0'], + 'installments.*.paid' => ['nullable', 'boolean'], + ]; + + if (! $this->user()?->can('view_contract_summary')) { + foreach (['contract_value', 'commission_value', 'profit_value', 'paid', 'chargeback', 'chargeback_value', 'chargeback_date', 'installments.*.due_date', 'installments.*.amount', 'installments.*.paid'] as $field) { + unset($rules[$field]); + } + } + + return $rules; + } + + public function withValidator(Validator $validator) + { + $validator->after(function ($validator) { + if (! $this->user()?->can('view_contract_summary')) { + return; + } + + $installments = $this->input('installments', []); + $validity = $this->input('validity'); + + $previousDate = null; + foreach ($installments as $index => $installment) { + if (!empty($installment['due_date'])) { + $dueDate = Carbon::parse($installment['due_date']); + + // Data da parcela não pode ser superior à validade do contrato + // if (!empty($validity)) { + // $validityDate = Carbon::createFromFormat('d/m/Y', $validity); + // if ($dueDate->gt($validityDate)) { + // $validator->errors()->add( + // "installments.$index.due_date", + // "A data da parcela $index não pode ser superior à data de renovação do contrato." + // ); + // } + // } + + // Data da parcela deve ser superior à anterior + if ($previousDate && $dueDate->lte($previousDate)) { + $validator->errors()->add( + "installments.$index.due_date", + "A data da parcela $index deve ser superior à parcela anterior." + ); + } + + $previousDate = $dueDate; + } + } + }); + } + + public function messages(): array + { + return [ + 'cui_tier_id.exists' => $this->localizedMessage('validation.custom.cui_tier_id.exists', 'O escalão CUI selecionado não é válido.'), + 'client_id.required' => $this->localizedMessage('validation.custom.client_id.required', 'O cliente é obrigatório.'), + 'client_id.exists' => $this->localizedMessage('validation.custom.client_id.exists', 'O cliente selecionado não é válido.'), + 'contract_value.numeric' => $this->localizedMessage('validation.custom.contract_value.numeric', 'O valor do contrato deve ser um número.'), + 'contract_value.min' => $this->localizedMessage('validation.custom.contract_value.min', 'O valor do contrato não pode ser negativo.'), + 'go_ki.required' => $this->localizedMessage('validation.custom.go_ki.required', 'O campo GO/KI é obrigatório.'), + 'go_ki.numeric' => $this->localizedMessage('validation.custom.go_ki.numeric', 'O campo GO/KI deve ser numérico.'), + 'commission_value.numeric' => $this->localizedMessage('validation.custom.commission_value.numeric', 'O valor da comissão deve ser um número.'), + 'profit_value.numeric' => $this->localizedMessage('validation.custom.profit_value.numeric', 'O lucro deve ser um número.'), + 'seller_id.exists' => $this->localizedMessage('validation.custom.seller_id.exists', 'O vendedor selecionado não é válido.'), + 'supply_type.required' => $this->localizedMessage('validation.custom.supply_type.required', 'O tipo de fornecimento é obrigatório.'), + 'supply_type.in' => $this->localizedMessage('validation.custom.supply_type.in', 'O tipo de fornecimento deve ser CPE ou cui.'), + 'supply_address.string' => $this->localizedMessage('validation.custom.supply_address.string', 'O endereço de fornecimento deve ser texto.'), + 'supply_address.max' => $this->localizedMessage('validation.custom.supply_address.max', 'O endereço de fornecimento não pode exceder 255 caracteres.'), + 'annual_consumption.numeric' => $this->localizedMessage('validation.custom.annual_consumption.numeric', 'O consumo anual deve ser numérico.'), + 'annual_consumption.min' => $this->localizedMessage('validation.custom.annual_consumption.min', 'O consumo anual não pode ser negativo.'), + 'contract_type_id.required' => $this->localizedMessage('validation.custom.contract_type_id.required', 'O tipo de contrato é obrigatório.'), + 'contract_type_id.exists' => $this->localizedMessage('validation.custom.contract_type_id.exists', 'O tipo de contrato selecionado não é válido.'), + 'validity.date' => $this->localizedMessage('validation.custom.validity.date', 'A validade deve ser uma data válida.'), + 'validity.date_format' => $this->localizedMessage('validation.custom.validity.date_format', 'A validade deve estar no formato DD/MM/AAAA.'), + 'contract_end_date.date' => $this->localizedMessage('validation.custom.contract_end_date.date', 'A data de fim do contrato deve ser válida.'), + 'contract_end_date.date_format' => $this->localizedMessage('validation.custom.contract_end_date.date_format', 'A data de fim de contrato deve estar no formato DD/MM/AAAA.'), + 'contract_date.date' => $this->localizedMessage('validation.custom.contract_date.date', 'A data do contrato deve ser válida.'), + 'contract_date.date_format' => $this->localizedMessage('validation.custom.contract_date.date_format', 'A data do contrato deve estar no formato DD/MM/AAAA.'), + 'activation_date.date' => $this->localizedMessage('validation.custom.activation_date.date', 'A data de ativação deve ser válida.'), + 'activation_date.date_format' => $this->localizedMessage('validation.custom.activation_date.date_format', 'A data de ativação deve estar no formato DD/MM/AAAA.'), + 'status_id.required' => $this->localizedMessage('validation.custom.status_id.required', 'O estado do contrato é obrigatório.'), + 'status_id.exists' => $this->localizedMessage('validation.custom.status_id.exists', 'O estado do contrato selecionado não é válido.'), + 'commission_rate.numeric' => $this->localizedMessage('validation.custom.commission_rate.numeric', 'A percentagem da comissão deve ser um número.'), + 'commission_rate.between' => $this->localizedMessage('validation.custom.commission_rate.between', 'A percentagem da comissão deve estar entre 0 e 100.'), + 'notes.string' => $this->localizedMessage('validation.custom.notes.string', 'As notas devem ser texto.'), + 'power_tier_id.exists' => $this->localizedMessage('validation.custom.power_tier_id.exists', 'O escalão de potência selecionado não é válido.'), + 'payment_method_id.required' => $this->localizedMessage('validation.custom.payment_method_id.required', 'O método de pagamento é obrigatório.'), + 'payment_method_id.exists' => $this->localizedMessage('validation.custom.payment_method_id.exists', 'O método de pagamento selecionado não é válido.'), + 'delivery_method.required' => $this->localizedMessage('validation.custom.delivery_method.required', 'O método de envio é obrigatório.'), + 'delivery_method.in' => $this->localizedMessage('validation.custom.delivery_method.in', 'O método de envio deve ser "correio" ou "email".'), + 'delivery_email.email' => $this->localizedMessage('validation.custom.delivery_email.email', 'O e-mail de envio deve ser válido.'), + 'delivery_email.max' => $this->localizedMessage('validation.custom.delivery_email.max', 'O e-mail de envio não pode exceder 255 caracteres.'), + 'previous_supplier_id.exists' => $this->localizedMessage('validation.custom.previous_supplier_id.exists', 'O fornecedor anterior selecionado não é válido.'), + 'new_supplier_id.exists' => $this->localizedMessage('validation.custom.new_supplier_id.exists', 'O novo fornecedor selecionado não é válido.'), + 'paid.required' => $this->localizedMessage('validation.custom.paid.required', 'O campo "Pago" é obrigatório.'), + 'paid.boolean' => $this->localizedMessage('validation.custom.paid.boolean', 'O campo "Pago" deve ser verdadeiro ou falso.'), + 'chargeback.boolean' => $this->localizedMessage('validation.custom.chargeback.boolean', 'O campo "Chargeback" deve ser verdadeiro ou falso.'), + 'chargeback_value.required_if' => $this->localizedMessage('validation.custom.chargeback_value.required_if', 'O valor do chargeback é obrigatório.'), + 'chargeback_value.numeric' => $this->localizedMessage('validation.custom.chargeback_value.numeric', 'O valor do chargeback deve ser numérico.'), + 'chargeback_value.max' => $this->localizedMessage('validation.custom.chargeback_value.max', 'O valor do chargeback deve ser negativo.'), + 'chargeback_date.required_if' => $this->localizedMessage('validation.custom.chargeback_date.required_if', 'A data de chargeback é obrigatória.'), + 'chargeback_date.date' => $this->localizedMessage('validation.custom.chargeback_date.date', 'A data de chargeback deve ser uma data válida.'), + 'chargeback_date.date_format' => $this->localizedMessage('validation.custom.chargeback_date.date_format', 'A data de chargeback deve estar no formato DD/MM/AAAA.'), + 'installments.*.due_date.required_with' => $this->localizedMessage('validation.custom.installments_due_date.required_with', 'A data da parcela é obrigatória quando o valor está preenchido.'), + 'installments.*.due_date.date' => $this->localizedMessage('validation.custom.installments_due_date.date', 'A data da parcela deve ser uma data válida.'), + 'installments.*.due_date.date_format' => $this->localizedMessage('validation.custom.installments_due_date.date_format', 'A data da parcela deve estar no formato DD/MM/AAAA.'), + 'installments.*.amount.required_with' => $this->localizedMessage('validation.custom.installments_amount.required_with', 'O valor da parcela é obrigatório quando a data está preenchida.'), + 'installments.*.amount.numeric' => $this->localizedMessage('validation.custom.installments_amount.numeric', 'O valor da parcela deve ser numérico.'), + 'installments.*.amount.min' => $this->localizedMessage('validation.custom.installments_amount.min', 'O valor da parcela não pode ser negativo.'), + ]; + } +} diff --git a/app/Http/Requests/CreateClientRequest.php b/app/Http/Requests/CreateClientRequest.php new file mode 100644 index 0000000..031c1b5 --- /dev/null +++ b/app/Http/Requests/CreateClientRequest.php @@ -0,0 +1,81 @@ +bound('translator')) { + return __($key, [], app()->getLocale()) ?: $fallback; + } + + return $fallback; + } + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + return true; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'name' => 'required|string|max:255', + 'tax_number' => 'required|digits:9|unique:clients,tax_number', + 'email' => 'required|email', + 'phone' => 'required|string|max:20', + 'address' => 'required|string|max:255', + 'contact_info' => 'nullable|string|max:255', + 'notes' => 'nullable|string|max:500', + 'client_type_id' => 'required|exists:client_types,id', + 'seller_id' => 'required|exists:users,id', + 'locality' => 'nullable|string|max:255' + ]; + } + + /** + * Get custom error messages for validation rules. + * + * @return array + */ + public function messages(): array + { + return [ + 'name.required' => $this->localizedMessage('validation.custom.name.required', 'O nome é obrigatório.'), + 'name.string' => $this->localizedMessage('validation.custom.name.string', 'O nome deve ser texto.'), + 'name.max' => $this->localizedMessage('validation.custom.name.max', 'O nome não pode ter mais de 255 caracteres.'), + 'tax_number.required' => $this->localizedMessage('validation.custom.tax_number.required', 'O NIF é obrigatório.'), + 'tax_number.digits' => $this->localizedMessage('validation.custom.tax_number.digits', 'O NIF deve ter 9 dígitos.'), + 'tax_number.unique' => $this->localizedMessage('validation.custom.tax_number.unique', 'Já existe um cliente com este NIF.'), + 'email.required' => $this->localizedMessage('validation.custom.email.required', 'O e-mail é obrigatório.'), + 'email.email' => $this->localizedMessage('validation.custom.email.email', 'O e-mail deve ser válido.'), + 'phone.required' => $this->localizedMessage('validation.custom.phone.required', 'O telefone é obrigatório.'), + 'phone.string' => $this->localizedMessage('validation.custom.phone.string', 'O telefone deve ser texto.'), + 'phone.max' => $this->localizedMessage('validation.custom.phone.max', 'O telefone não pode ter mais de 20 caracteres.'), + 'address.required' => $this->localizedMessage('validation.custom.address.required', 'A morada é obrigatória.'), + 'address.string' => $this->localizedMessage('validation.custom.address.string', 'A morada deve ser texto.'), + 'address.max' => $this->localizedMessage('validation.custom.address.max', 'A morada não pode ter mais de 255 caracteres.'), + 'contact_info.string' => $this->localizedMessage('validation.custom.contact_info.string', 'As informações de contacto devem ser texto.'), + 'contact_info.max' => $this->localizedMessage('validation.custom.contact_info.max', 'As informações de contacto não podem exceder 255 caracteres.'), + 'notes.string' => $this->localizedMessage('validation.custom.notes.string', 'As notas devem ser texto.'), + 'notes.max' => $this->localizedMessage('validation.custom.notes.max', 'As notas não podem exceder 500 caracteres.'), + 'client_type_id.required' => $this->localizedMessage('validation.custom.client_type_id.required', 'O tipo de cliente é obrigatório.'), + 'client_type_id.exists' => $this->localizedMessage('validation.custom.client_type_id.exists', 'O tipo de cliente selecionado não é válido.'), + 'seller_id.required' => $this->localizedMessage('validation.custom.seller_id.required', 'O vendedor é obrigatório.'), + 'seller_id.exists' => $this->localizedMessage('validation.custom.seller_id.exists', 'O vendedor selecionado não é válido.'), + 'locality.string' => $this->localizedMessage('validation.custom.locality.string', 'A localidade deve ser texto.'), + 'locality.max' => $this->localizedMessage('validation.custom.locality.max', 'A localidade não pode ter mais de 255 caracteres.'), + ]; + } +} diff --git a/app/Http/Requests/LeadRequest.php b/app/Http/Requests/LeadRequest.php new file mode 100644 index 0000000..f9e77f5 --- /dev/null +++ b/app/Http/Requests/LeadRequest.php @@ -0,0 +1,72 @@ +bound('translator')) { + return __($key, [], app()->getLocale()) ?: $fallback; + } + + return $fallback; + } + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + return true; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'name' => 'required|string|max:255', + 'email' => 'nullable|email|max:255', + 'phone' => 'nullable|string|max:20', + 'lead_status_id' => 'nullable|exists:lead_status,id', + 'notes' => 'nullable|string', + 'contact_info' => 'nullable|string', + 'address' => 'nullable|string|max:255', + 'contact_date' => 'nullable|date_format:d/m/Y', + 'contract_end_date' => 'nullable|date_format:d/m/Y|after_or_equal:contact_date', + 'contract_type' => 'nullable|in:CPE,CUI', + 'delivery_point_code' => 'nullable' + ]; + } + + public function messages(): array + { + return [ + 'name.required' => $this->localizedMessage('validation.custom.name.required', 'O nome é obrigatório.'), + 'name.string' => $this->localizedMessage('validation.custom.name.string', 'O nome deve ser texto.'), + 'name.max' => $this->localizedMessage('validation.custom.name.max', 'O nome não pode ter mais de 255 caracteres.'), + 'email.email' => $this->localizedMessage('validation.custom.email.email', 'O e-mail deve ser válido.'), + 'email.max' => $this->localizedMessage('validation.custom.email.max', 'O e-mail não pode ter mais de 255 caracteres.'), + 'phone.string' => $this->localizedMessage('validation.custom.phone.string', 'O telefone deve ser texto.'), + 'phone.max' => $this->localizedMessage('validation.custom.phone.max', 'O telefone não pode ter mais de 20 caracteres.'), + 'lead_status_id.exists' => $this->localizedMessage('validation.custom.lead_status_id.exists', 'O estado do lead selecionado não é válido.'), + 'notes.string' => $this->localizedMessage('validation.custom.notes.string', 'As notas devem ser texto.'), + 'contact_info.string' => $this->localizedMessage('validation.custom.contact_info.string', 'As informações de contacto devem ser texto.'), + 'contact_info.max' => $this->localizedMessage('validation.custom.contact_info.max', 'As informações de contacto não podem exceder 255 caracteres.'), + 'address.string' => $this->localizedMessage('validation.custom.address.string', 'A morada deve ser texto.'), + 'address.max' => $this->localizedMessage('validation.custom.address.max', 'A morada não pode ter mais de 255 caracteres.'), + 'contact_date.date' => $this->localizedMessage('validation.custom.contact_date.date', 'A data de contacto deve ser válida.'), + 'contact_date.date_format' => $this->localizedMessage('validation.custom.contact_date.date_format', 'A data de contacto deve estar no formato DD/MM/AAAA.'), + 'contract_end_date.date' => $this->localizedMessage('validation.custom.contract_end_date.date', 'A data de fim do contrato deve ser válida.'), + 'contract_end_date.after_or_equal' => $this->localizedMessage('validation.custom.contract_end_date.after_or_equal', 'A data de fim de contrato deve ser igual ou posterior à data de contacto.'), + 'contract_end_date.date_format' => $this->localizedMessage('validation.custom.contract_end_date.date_format', 'A data de fim de contrato deve estar no formato DD/MM/AAAA.'), + 'contract_type.in' => $this->localizedMessage('validation.custom.contract_type.in', 'O tipo de contrato deve ser CPE ou CUI.'), + ]; + } +} diff --git a/app/Http/Requests/RenewContractRequest.php b/app/Http/Requests/RenewContractRequest.php new file mode 100644 index 0000000..2b734fd --- /dev/null +++ b/app/Http/Requests/RenewContractRequest.php @@ -0,0 +1,83 @@ +bound('translator')) { + return __($key, [], app()->getLocale()) ?: $fallback; + } + + return $fallback; + } + + public function authorize(): bool + { + return true; + } + + protected function prepareForValidation(): void + { + foreach (['next_due_date', 'contract_date', 'activation_date'] as $field) { + $value = $this->input($field); + + if ($value && str_contains($value, '/')) { + try { + $this->merge([ + $field => Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d'), + ]); + } catch (\Throwable) { + // Mantém o valor original para o validator apresentar a mensagem adequada. + } + } + } + } + + public function rules(): array + { + $rules = [ + 'next_due_date' => ['required', 'date_format:Y-m-d'], + 'annual_consumption' => ['nullable', 'numeric'], + 'contract_type_id' => ['required', 'exists:contract_types,id'], + 'typology_id' => ['nullable', 'exists:typologies,id'], + 'contract_date' => ['nullable', 'date_format:Y-m-d'], + 'activation_date' => ['nullable', 'date_format:Y-m-d'], + 'renewal_type' => ['required', Rule::exists('renewal_types', 'value')], + 'new_supplier_id' => ['required_if:change_supplier,1', 'nullable', 'exists:suppliers,id'], + ]; + + if ($this->user()?->can('view_contract_summary')) { + $rules['amount_paid'] = ['required', 'numeric']; + $rules['commission_value'] = ['nullable', 'numeric']; + } + + return $rules; + } + + public function messages(): array + { + return [ + 'amount_paid.required' => $this->localizedMessage('validation.custom.amount_paid.required', 'O valor do contrato é obrigatório.'), + 'amount_paid.numeric' => $this->localizedMessage('validation.custom.amount_paid.numeric', 'O valor do contrato deve ser um número.'), + 'commission_value.numeric' => $this->localizedMessage('validation.custom.commission_value.numeric', 'A comissão deve ser um número.'), + 'next_due_date.required' => $this->localizedMessage('validation.custom.next_due_date.required', 'A próxima renovação é obrigatória.'), + 'next_due_date.date_format' => $this->localizedMessage('validation.custom.next_due_date.date_format', 'A próxima renovação deve estar no formato DD/MM/AAAA.'), + 'renewal_type.required' => $this->localizedMessage('validation.custom.renewal_type.required', 'O tipo de renovação é obrigatório.'), + 'renewal_type.exists' => $this->localizedMessage('validation.custom.renewal_type.exists', 'O tipo de renovação selecionado não é válido.'), + 'annual_consumption.numeric' => $this->localizedMessage('validation.custom.annual_consumption.numeric', 'O consumo anual deve ser numérico.'), + 'contract_type_id.required' => $this->localizedMessage('validation.custom.contract_type_id.required', 'O tipo de contrato é obrigatório.'), + 'contract_type_id.exists' => $this->localizedMessage('validation.custom.contract_type_id.exists', 'O tipo de contrato selecionado não é válido.'), + 'typology_id.exists' => $this->localizedMessage('validation.custom.typology_id.exists', 'A tipologia selecionada não é válida.'), + 'contract_date.date_format' => $this->localizedMessage('validation.custom.contract_date.date_format', 'A data do contrato deve estar no formato DD/MM/AAAA.'), + 'activation_date.date_format' => $this->localizedMessage('validation.custom.activation_date.date_format', 'A data de ativação deve estar no formato DD/MM/AAAA.'), + 'new_supplier_id.required_if' => $this->localizedMessage('validation.custom.new_supplier_id.required_if', 'O novo fornecedor é obrigatório quando a alteração está ativa.'), + 'new_supplier_id.exists' => $this->localizedMessage('validation.custom.new_supplier_id.exists', 'O novo fornecedor selecionado não é válido.'), + ]; + } +} diff --git a/app/Http/Requests/UpdateClientRequest.php b/app/Http/Requests/UpdateClientRequest.php new file mode 100644 index 0000000..e52186f --- /dev/null +++ b/app/Http/Requests/UpdateClientRequest.php @@ -0,0 +1,83 @@ +bound('translator')) { + return __($key, [], app()->getLocale()) ?: $fallback; + } + + return $fallback; + } + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize(): bool + { + return true; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'name' => 'required|string|max:255', + 'tax_number' => 'required|digits:9|unique:clients,tax_number,' . $this->route('id'), + 'email' => 'required|email', + 'phone' => 'required|string|max:20', + 'address' => 'required|string|max:255', + 'contact_info' => 'nullable|string|max:255', + 'notes' => 'nullable|string|max:500', + 'seller_id' => 'required|exists:users,id', + 'client_type_id' => 'required|exists:client_types,id', + 'locality' => 'nullable|string|max:255' + ]; + } + + /** + * Get custom error messages for validation rules. + * + * @return array + */ + public function messages(): array + { + return [ + 'name.required' => $this->localizedMessage('validation.custom.name.required', 'O nome é obrigatório.'), + 'name.string' => $this->localizedMessage('validation.custom.name.string', 'O nome deve ser texto.'), + 'name.max' => $this->localizedMessage('validation.custom.name.max', 'O nome não pode ter mais de 255 caracteres.'), + 'tax_number.required' => $this->localizedMessage('validation.custom.tax_number.required', 'O NIF é obrigatório.'), + 'tax_number.digits' => $this->localizedMessage('validation.custom.tax_number.digits', 'O NIF deve ter 9 dígitos.'), + 'tax_number.unique' => $this->localizedMessage('validation.custom.tax_number.unique', 'Já existe um cliente com este NIF.'), + 'email.required' => $this->localizedMessage('validation.custom.email.required', 'O e-mail é obrigatório.'), + 'email.email' => $this->localizedMessage('validation.custom.email.email', 'O e-mail deve ser válido.'), + 'phone.required' => $this->localizedMessage('validation.custom.phone.required', 'O telefone é obrigatório.'), + 'phone.string' => $this->localizedMessage('validation.custom.phone.string', 'O telefone deve ser texto.'), + 'phone.max' => $this->localizedMessage('validation.custom.phone.max', 'O telefone não pode ter mais de 20 caracteres.'), + 'address.required' => $this->localizedMessage('validation.custom.address.required', 'A morada é obrigatória.'), + 'address.string' => $this->localizedMessage('validation.custom.address.string', 'A morada deve ser texto.'), + 'address.max' => $this->localizedMessage('validation.custom.address.max', 'A morada não pode ter mais de 255 caracteres.'), + 'contact_info.string' => $this->localizedMessage('validation.custom.contact_info.string', 'As informações de contacto devem ser texto.'), + 'contact_info.max' => $this->localizedMessage('validation.custom.contact_info.max', 'As informações de contacto não podem exceder 255 caracteres.'), + 'notes.string' => $this->localizedMessage('validation.custom.notes.string', 'As notas devem ser texto.'), + 'notes.max' => $this->localizedMessage('validation.custom.notes.max', 'As notas não podem exceder 500 caracteres.'), + 'seller_id.required' => $this->localizedMessage('validation.custom.seller_id.required', 'O vendedor é obrigatório.'), + 'seller_id.exists' => $this->localizedMessage('validation.custom.seller_id.exists', 'O vendedor selecionado não é válido.'), + 'client_type_id.required' => $this->localizedMessage('validation.custom.client_type_id.required', 'O tipo de cliente é obrigatório.'), + 'client_type_id.exists' => $this->localizedMessage('validation.custom.client_type_id.exists', 'O tipo de cliente selecionado não é válido.'), + 'locality.string' => $this->localizedMessage('validation.custom.locality.string', 'A localidade deve ser texto.'), + 'locality.max' => $this->localizedMessage('validation.custom.locality.max', 'A localidade não pode ter mais de 255 caracteres.'), + ]; + } +} diff --git a/app/Mail/NewUserWelcome.php b/app/Mail/NewUserWelcome.php new file mode 100644 index 0000000..4f5662e --- /dev/null +++ b/app/Mail/NewUserWelcome.php @@ -0,0 +1,28 @@ +user = $user; + $this->password = $password; + } + + public function build() + { + return $this->subject('Conta criada com sucesso') + ->view('emails.new_user_welcome'); + } +} diff --git a/app/Models/CPE.php b/app/Models/CPE.php new file mode 100644 index 0000000..d6626b6 --- /dev/null +++ b/app/Models/CPE.php @@ -0,0 +1,87 @@ + + */ + protected $hidden = [ + 'id' + ]; + + public function client() + { + return $this->belongsTo(Clients::class, 'client_id'); + } + + public function contractType() + { + return $this->belongsTo(ContractType::class, 'contract_type_id'); + } + + public function status() + { + return $this->belongsTo(ContractStatus::class, 'status_id'); + } + + public function payments() + { + return $this->hasMany(CpePayment::class, 'cpe_id'); + } + + + public function totalPaid() + { + return $this->payments()->where('status', 'paid')->sum('amount'); + } + + public function isPaid() + { + return $this->totalPaid() >= $this->pvp; + } + + public function isCurrentRenewalPaid() + { + return $this->payments() + ->where('reference_period', $this->renewal_date?->format('Y-m-d')) + ->where('status', 'paid') + ->exists(); + } + + +} diff --git a/app/Models/ClientType.php b/app/Models/ClientType.php new file mode 100644 index 0000000..ab1ff8c --- /dev/null +++ b/app/Models/ClientType.php @@ -0,0 +1,15 @@ +hasMany(Clients::class); + } +} diff --git a/app/Models/Clients.php b/app/Models/Clients.php new file mode 100644 index 0000000..433e88f --- /dev/null +++ b/app/Models/Clients.php @@ -0,0 +1,71 @@ + + */ + protected $hidden = [ + ]; + + + public function contracts() + { + return $this->hasMany(Contract::class, 'client_id'); + } + + + public function seller(): BelongsTo { + return $this->belongsTo(User::class, 'seller_id'); + } + + public function cpes() + { + return $this->hasMany(Cpe::class); + } + + public function hasUnpaidCpes() + { + return $this->cpes->contains(function ($cpe) { + return !$cpe->isPaid(); + }); + } + + public function clientType() + { + return $this->belongsTo(ClientType::class, 'client_type_id'); + } + + public function leadStatus() + { + return $this->belongsTo(LeadStatus::class, 'lead_status_id'); + } + + public function leadDetail() + { + return $this->hasOne(LeadDetail::class, 'client_id', 'id'); + } +} diff --git a/app/Models/Contract.php b/app/Models/Contract.php new file mode 100644 index 0000000..7dc3f66 --- /dev/null +++ b/app/Models/Contract.php @@ -0,0 +1,224 @@ +hasMany(ContractHistory::class)->orderBy('created_at', 'desc'); + } + + public function client(): BelongsTo + { + return $this->belongsTo(Clients::class); + } + + public function contractType(): BelongsTo + { + return $this->belongsTo(ContractType::class); + } + + public function status(): BelongsTo + { + return $this->belongsTo(ContractStatus::class); + } + + public function payments(): HasMany + { + return $this->hasMany(Payment::class); + } + + public function powerTier(): BelongsTo + { + return $this->belongsTo(PowerTier::class); + } + + public function cuiTier(): BelongsTo + { + return $this->belongsTo(CuiTier::class); + } + + public function paymentMethod(): BelongsTo + { + return $this->belongsTo(PaymentMethod::class); + } + + public function previousSupplier(): BelongsTo + { + return $this->belongsTo(Supplier::class, 'previous_supplier_id'); + } + + public function newSupplier(): BelongsTo + { + return $this->belongsTo(Supplier::class, 'new_supplier_id'); + } + + public function typology() + { + return $this->belongsTo(Typology::class); + } + + public function installments() + { + return $this->hasMany(ContractInstallment::class); + } + + // Gerar parcelas automaticamente + public function createInstallments() + { + $amount = $this->contract_value / $this->installment_count; + for ($i = 1; $i <= $this->installment_count; $i++) { + $this->installments()->create([ + 'installment_number' => $i, + 'amount' => $amount, + 'due_date' => now()->addMonths($i - 1), + ]); + } + } + + + // Scopes + public function scopeCpe($query) + { + return $query->where('type', 'cpe'); + } + + public function scopeCpi($query) + { + return $query->where('type', 'cpi'); + } + + public function seller() + { + return $this->belongsTo(User::class, 'seller_id'); + } + + public function scopeBetweenDates($query, $from, $to) + { + return $query->when($from, fn($q) => $q->where('contract_date', '>=', $from)) + ->when($to, fn($q) => $q->where('contract_date', '<=', $to)); + } + + public static function getMonthlyGrowth($from = null, $to = null) + { + $driver = \Illuminate\Support\Facades\DB::getDriverName(); + $monthExpression = $driver === 'sqlite' + ? "strftime('%Y-%m', contract_date)" + : "DATE_FORMAT(contract_date, '%Y-%m')"; + + return self::query() + ->betweenDates($from, $to) + ->selectRaw($monthExpression . ' as mes, SUM(contract_value) as total') + ->groupByRaw($monthExpression) + ->orderByRaw($monthExpression) + ->get(); + } + + // Mutators & Accessors + protected function activationDate(): Attribute + { + return Attribute::make( + // Getter: returns a Carbon instance or null + get: fn ($value) => $value ? Carbon::parse($value) : null, + + // Setter: accepts 'd/m/Y' from form, converts to 'Y-m-d' for DB + set: fn ($value) => $this->convertDateToDbFormat($value) + ); + } + + protected function contractDate(): Attribute + { + return Attribute::make( + // Getter: returns a Carbon instance or null + get: fn ($value) => $value ? Carbon::parse($value) : null, + + // Setter: accepts 'd/m/Y' from form, converts to 'Y-m-d' for DB + set: fn ($value) => $this->convertDateToDbFormat($value) + ); + } + + protected function validity(): Attribute + { + return Attribute::make( + // Getter: returns a Carbon instance or null + get: fn ($value) => $value ? Carbon::parse($value) : null, + + // Setter: accepts 'd/m/Y' from form, converts to 'Y-m-d' for DB + set: fn ($value) => $this->convertDateToDbFormat($value) + ); + } + + protected function contractEndDate(): Attribute + { + return Attribute::make( + get: fn ($value) => $value ? Carbon::parse($value) : null, + set: fn ($value) => $this->convertDateToDbFormat($value) + ); + } + + /** + * Converts a date string from 'd/m/Y' or other formats to 'Y-m-d' for DB storage. + * + * @param string|null $value + * @return string|null + */ + private function convertDateToDbFormat($value) + { + $value = trim($value); + if (!$value) return null; + + try { + // Try parsing d/m/Y format + return Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d'); + } catch (\Exception $e) { + try { + // Fallback: parse standard date formats (e.g., Y-m-d) + return Carbon::parse($value)->format('Y-m-d'); + } catch (\Exception $e) { + // If parsing fails, store null + return null; + } + } + } + +} diff --git a/app/Models/ContractHistory.php b/app/Models/ContractHistory.php new file mode 100644 index 0000000..2639482 --- /dev/null +++ b/app/Models/ContractHistory.php @@ -0,0 +1,116 @@ +belongsTo(Contract::class); + } + + public function previousSupplier() + { + return $this->belongsTo(Supplier::class, 'previous_supplier_id'); + } + + public function currentSupplier() + { + return $this->belongsTo(Supplier::class, 'current_supplier_id'); + } + + public function seller() + { + return $this->belongsTo(User::class, 'seller_id'); + } + + public function contractType() + { + return $this->belongsTo(ContractType::class); + } + + + + + protected function validity(): Attribute + { + return Attribute::make( + // Getter: returns a Carbon instance or null + get: fn ($value) => $value ? Carbon::parse($value) : null, + + // Setter: accepts 'd/m/Y' from form, converts to 'Y-m-d' for DB + set: fn ($value) => $this->convertDateToDbFormat($value) + ); + } + + protected function chargebackDate(): Attribute + { + return Attribute::make( + get: fn ($value) => $value ? Carbon::parse($value) : null, + set: fn ($value) => $this->convertDateToDbFormat($value) + ); + } + + /** + * Converts a date string from 'd/m/Y' or other formats to 'Y-m-d' for DB storage. + * + * @param string|null $value + * @return string|null + */ + private function convertDateToDbFormat($value) + { + $value = trim($value); + if (!$value) return null; + + try { + // Try parsing d/m/Y format + return Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d'); + } catch (\Exception $e) { + try { + // Fallback: parse standard date formats (e.g., Y-m-d) + return Carbon::parse($value)->format('Y-m-d'); + } catch (\Exception $e) { + // If parsing fails, store null + return null; + } + } + } +} diff --git a/app/Models/ContractInstallment.php b/app/Models/ContractInstallment.php new file mode 100644 index 0000000..5bc273a --- /dev/null +++ b/app/Models/ContractInstallment.php @@ -0,0 +1,22 @@ +belongsTo(Contract::class); + } +} diff --git a/app/Models/ContractStatus.php b/app/Models/ContractStatus.php new file mode 100644 index 0000000..c2c5d19 --- /dev/null +++ b/app/Models/ContractStatus.php @@ -0,0 +1,25 @@ + + */ + protected $hidden = [ + 'id' + ]; +} diff --git a/app/Models/ContractType.php b/app/Models/ContractType.php new file mode 100644 index 0000000..02bd900 --- /dev/null +++ b/app/Models/ContractType.php @@ -0,0 +1,25 @@ + + */ + protected $hidden = [ + 'id' + ]; +} diff --git a/app/Models/CpePayment.php b/app/Models/CpePayment.php new file mode 100644 index 0000000..1320f25 --- /dev/null +++ b/app/Models/CpePayment.php @@ -0,0 +1,21 @@ +belongsTo(CPE::class); + } +} diff --git a/app/Models/CuiTier.php b/app/Models/CuiTier.php new file mode 100644 index 0000000..5705348 --- /dev/null +++ b/app/Models/CuiTier.php @@ -0,0 +1,13 @@ +belongsTo(Clients::class); + } + + + + /** + * Accessor - quando for buscar do BD converte para d/m/Y + */ + public function getContactDateAttribute($value) + { + return $value ? Carbon::parse($value)->format('d/m/Y') : null; + } + + public function getContractEndDateAttribute($value) + { + return $value ? Carbon::parse($value)->format('d/m/Y') : null; + } + + + public function setContactDateAttribute($value) + { + $this->attributes['contact_date'] = $value + ? Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d') + : null; + } + + public function setContractEndDateAttribute($value) + { + $this->attributes['contract_end_date'] = $value + ? Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d') + : null; + } +} diff --git a/app/Models/LeadStatus.php b/app/Models/LeadStatus.php new file mode 100644 index 0000000..b09b71e --- /dev/null +++ b/app/Models/LeadStatus.php @@ -0,0 +1,20 @@ +hasMany(Clients::class, 'lead_status_id'); + } +} diff --git a/app/Models/Payment.php b/app/Models/Payment.php new file mode 100644 index 0000000..6db2c88 --- /dev/null +++ b/app/Models/Payment.php @@ -0,0 +1,15 @@ +belongsTo(Contract::class); + } +} diff --git a/app/Models/PaymentMethod.php b/app/Models/PaymentMethod.php new file mode 100644 index 0000000..c70a1ab --- /dev/null +++ b/app/Models/PaymentMethod.php @@ -0,0 +1,21 @@ +hasMany(cpe::class); + } +} diff --git a/app/Models/PowerTier.php b/app/Models/PowerTier.php new file mode 100644 index 0000000..19f5226 --- /dev/null +++ b/app/Models/PowerTier.php @@ -0,0 +1,10 @@ +hasMany(Contract::class, 'previous_supplier_id'); + } + + public function newContracts() + { + return $this->hasMany(Contract::class, 'new_supplier_id'); + } +} diff --git a/app/Models/Typology.php b/app/Models/Typology.php new file mode 100644 index 0000000..86533e8 --- /dev/null +++ b/app/Models/Typology.php @@ -0,0 +1,23 @@ + + */ + protected $hidden = [ + 'id' + ]; +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..6424da4 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,55 @@ + */ + use HasApiTokens, HasFactory, Notifiable, HasRoles; + + /** + * The attributes that are mass assignable. + * + * @var list + */ + protected $fillable = [ + 'name', + 'email', + 'password', + 'pin', + 'can_login', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var list + */ + protected $hidden = [ + 'password', + 'remember_token', + 'pin', + ]; + + /** + * Get the attributes that should be cast. + * + * @return array + */ + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + 'can_login' => 'boolean', + ]; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..3c484c5 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,38 @@ +routes(function () { + + Route::prefix('api') + ->middleware('api') + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->group(base_path('routes/web.php')); + }); + } +} diff --git a/app/Services/AdminService.php b/app/Services/AdminService.php new file mode 100644 index 0000000..743a518 --- /dev/null +++ b/app/Services/AdminService.php @@ -0,0 +1,53 @@ +getDriverName() === 'mysql' + ? DB::select('SELECT VERSION() as version')[0]->version + : DB::connection()->getDriverName(); + try { + $redisVersion = Redis::connection()->client()->info()['redis_version'] ?? 'N/A'; + } catch (Throwable $exception) { + $redisVersion = 'N/A'; + } + return [ + 'php_version' => PHP_VERSION, 'php_sapi' => PHP_SAPI, 'laravel_version' => app()->version(), + 'environment' => app()->environment(), 'debug_mode' => config('app.debug'), + 'database_driver' => config('database.default'), 'database_version' => $databaseVersion, + 'redis_version' => $redisVersion, 'redis_database' => config('database.redis.cache.database'), + 'cache_driver' => config('cache.default'), 'queue_driver' => config('queue.default'), + 'session_driver' => config('session.driver'), 'memory_limit' => ini_get('memory_limit'), 'system' => php_uname(), + ]; + } + + public function phpInfo(): string + { + ob_start(); + phpinfo(); + return ob_get_clean(); + } + + public function runMigrations(): array + { + $exitCode = Artisan::call('migrate', ['--force' => true]); + return ['success' => $exitCode === 0, 'exit_code' => $exitCode, 'output' => trim(Artisan::output())]; + } + + public function testEmail(string $recipient): array + { + Mail::raw('Teste de envio de email.', function ($message) use ($recipient) { + $message->to($recipient)->subject('Teste de envio de email'); + }); + return ['success' => true, 'message' => 'Email de teste enviado com sucesso.']; + } +} diff --git a/app/Services/AnalyticalService.php b/app/Services/AnalyticalService.php new file mode 100644 index 0000000..9af3c54 --- /dev/null +++ b/app/Services/AnalyticalService.php @@ -0,0 +1,283 @@ + + * @version 2026/03 + */ + public function index(Request $request) + { + $from = $this->parseDate($request->validity_from ?? $request->from ?? null); + $to = $this->parseDate($request->validity_to ?? $request->to ?? null); + + $baseContractQuery = $this->applyFilters(Contract::query(), $request, 'contract_date'); + $baseHistoryQuery = $this->applyFilters(ContractHistory::query(), $request, 'contract_date'); + + $contractTotals = (clone $baseContractQuery) + ->selectRaw('COALESCE(SUM(contract_value), 0) as total_vendas, COALESCE(SUM(profit_value), 0) as total_lucro, COALESCE(SUM(commission_value), 0) as total_comissao, COUNT(*) as contagem, COUNT(DISTINCT client_id) as total_clients') + ->first(); + + $historyTotals = (clone $baseHistoryQuery) + ->selectRaw('COALESCE(SUM(contract_value), 0) as total_vendas, COALESCE(SUM(profit_value), 0) as total_lucro, COALESCE(SUM(commission_value), 0) as total_comissao, COUNT(*) as contagem, COUNT(DISTINCT contract_id) as total_clients') + ->first(); + + $totalVendas = (float) ($contractTotals->total_vendas ?? 0) + (float) ($historyTotals->total_vendas ?? 0); + $totalLucro = (float) ($contractTotals->total_lucro ?? 0) + (float) ($historyTotals->total_lucro ?? 0); + $totalComissao = (float) ($contractTotals->total_comissao ?? 0) + (float) ($historyTotals->total_comissao ?? 0); + $contagem = (int) (($contractTotals->contagem ?? 0) + ($historyTotals->contagem ?? 0)); + $totalClients = (int) max($contractTotals->total_clients ?? 0, $historyTotals->total_clients ?? 0); + + $stats = [ + 'total_vendas' => $totalVendas, + 'total_lucro' => $totalLucro, + 'total_comissao' => $totalComissao, + 'contagem' => $contagem, + 'total_clients' => $totalClients, + ]; + + $vendasMensais = $this->buildMonthlyGrowth($request); + + $vendasPorTipo = $this->buildClientTypeBreakdown($request); + $totaisPorAno = $this->buildYearBreakdown($request); + $totaisPorComercializadora = $this->buildSupplierBreakdown($request); + + return compact('stats', 'vendasMensais', 'vendasPorTipo', 'totaisPorAno', 'totaisPorComercializadora'); + } + + private function applyFilters($query, Request $request, string $dateField = 'contract_date') + { + if (!str_contains($dateField, '.')) { + $dateField = $query->getModel()->getTable() . '.' . $dateField; + } + + $from = $this->parseDate($request->validity_from ?? $request->from ?? null); + $to = $this->parseDate($request->validity_to ?? $request->to ?? null); + + if ($from) { + $query->whereDate($dateField, '>=', $from); + } + + if ($to) { + $query->whereDate($dateField, '<=', $to); + } + + foreach (['status_id', 'seller_id', 'supply_type', 'contract_type_id', 'year'] as $field) { + $value = $request->input($field); + if ($value === null || $value === '' || $value === 'all') { + continue; + } + + switch ($field) { + case 'status_id': + $query->where('status_id', $value); + break; + case 'seller_id': + $query->where('seller_id', $value); + break; + case 'supply_type': + $query->where('supply_type', $value); + break; + case 'contract_type_id': + $query->where('contract_type_id', $value); + break; + case 'year': + $query->whereRaw($this->yearExpression($dateField) . ' = ?', [(int) $value]); + break; + } + } + + if ($request->filled('client_type_id')) { + $query->whereHas('client', fn ($q) => $q->where('client_type_id', $request->client_type_id)); + } + + if ($request->filled('supplier_id')) { + $query->where(function ($q) use ($request) { + $q->where('new_supplier_id', $request->supplier_id) + ->orWhere('previous_supplier_id', $request->supplier_id); + }); + } + + return $query; + } + + private function buildMonthlyGrowth(Request $request) + { + $from = $this->parseDate($request->validity_from ?? $request->from ?? null); + $to = $this->parseDate($request->validity_to ?? $request->to ?? null); + + $contractSeries = Contract::query(); + $historySeries = ContractHistory::query(); + + $this->applyFilters($contractSeries, $request, 'contract_date'); + $this->applyFilters($historySeries, $request, 'contract_date'); + + $monthExpression = $this->monthExpression('contract_date'); + + $contractTotals = (clone $contractSeries) + ->selectRaw($monthExpression . ' as mes, SUM(contract_value) as total') + ->whereNotNull('contract_date') + ->groupByRaw($monthExpression) + ->orderByRaw($monthExpression) + ->get(); + + $historyTotals = (clone $historySeries) + ->selectRaw($monthExpression . ' as mes, SUM(contract_value) as total') + ->whereNotNull('contract_date') + ->groupByRaw($monthExpression) + ->orderByRaw($monthExpression) + ->get(); + + $merged = []; + foreach ($contractTotals as $row) { + $merged[$row->mes] = (float) ($row->total ?? 0); + } + + foreach ($historyTotals as $row) { + $merged[$row->mes] = ($merged[$row->mes] ?? 0) + (float) ($row->total ?? 0); + } + + ksort($merged); + + return collect(array_map(fn ($month, $total) => ['mes' => $month, 'total' => $total], array_keys($merged), array_values($merged))); + } + + private function buildClientTypeBreakdown(Request $request) + { + $contractBreakdown = (clone $this->applyFilters(Contract::query(), $request, 'contract_date')) + ->join('clients', 'contracts.client_id', '=', 'clients.id') + ->join('client_types', 'clients.client_type_id', '=', 'client_types.id') + ->selectRaw('client_types.description as tipo, SUM(contracts.contract_value) as total') + ->groupBy('client_types.description') + ->get(); + + $historyBreakdown = (clone $this->applyFilters(ContractHistory::query(), $request, 'contract_date')) + ->join('contracts', 'contract_histories.contract_id', '=', 'contracts.id') + ->join('clients', 'contracts.client_id', '=', 'clients.id') + ->join('client_types', 'clients.client_type_id', '=', 'client_types.id') + ->selectRaw('client_types.description as tipo, SUM(contract_histories.contract_value) as total') + ->groupBy('client_types.description') + ->get(); + + $merged = []; + foreach ($contractBreakdown as $row) { + $merged[$row->tipo] = (float) ($row->total ?? 0); + } + foreach ($historyBreakdown as $row) { + $key = $row->tipo ?? 'Sem tipo'; + $merged[$key] = ($merged[$key] ?? 0) + (float) ($row->total ?? 0); + } + + return collect(array_map(fn ($tipo, $total) => ['tipo' => $tipo, 'total' => $total], array_keys($merged), array_values($merged))); + } + + private function buildYearBreakdown(Request $request) + { + $yearExpression = $this->yearExpression('contract_date'); + + $contractYears = (clone $this->applyFilters(Contract::query(), $request, 'contract_date')) + ->selectRaw($yearExpression . ' as ano, SUM(contract_value) as total') + ->whereNotNull('contract_date') + ->groupByRaw($yearExpression) + ->orderByRaw($yearExpression) + ->get(); + + $historyYears = (clone $this->applyFilters(ContractHistory::query(), $request, 'contract_date')) + ->selectRaw($yearExpression . ' as ano, SUM(contract_value) as total') + ->whereNotNull('contract_date') + ->groupByRaw($yearExpression) + ->orderByRaw($yearExpression) + ->get(); + + $merged = []; + foreach ($contractYears as $row) { + $merged[(string) $row->ano] = (float) ($row->total ?? 0); + } + foreach ($historyYears as $row) { + $key = (string) ($row->ano ?? ''); + $merged[$key] = ($merged[$key] ?? 0) + (float) ($row->total ?? 0); + } + + ksort($merged); + + return collect(array_map(fn ($ano, $total) => ['ano' => $ano, 'total' => $total], array_keys($merged), array_values($merged))); + } + + private function buildSupplierBreakdown(Request $request) + { + $contractSuppliers = (clone $this->applyFilters(Contract::query(), $request, 'contract_date')) + ->join('suppliers', 'contracts.new_supplier_id', '=', 'suppliers.id') + ->selectRaw('suppliers.name as fornecedor, SUM(contracts.contract_value) as total') + ->groupBy('suppliers.name') + ->orderBy('total', 'desc') + ->get(); + + $historySuppliers = (clone $this->applyFilters(ContractHistory::query(), $request, 'contract_date')) + ->join('suppliers', 'contract_histories.current_supplier_id', '=', 'suppliers.id') + ->selectRaw('suppliers.name as fornecedor, SUM(contract_histories.contract_value) as total') + ->groupBy('suppliers.name') + ->orderBy('total', 'desc') + ->get(); + + $merged = []; + foreach ($contractSuppliers as $row) { + $merged[$row->fornecedor] = (float) ($row->total ?? 0); + } + foreach ($historySuppliers as $row) { + $key = $row->fornecedor ?? 'Sem fornecedor'; + $merged[$key] = ($merged[$key] ?? 0) + (float) ($row->total ?? 0); + } + + return collect(array_map(fn ($fornecedor, $total) => ['fornecedor' => $fornecedor, 'total' => $total], array_keys($merged), array_values($merged))) + ->sortByDesc('total')->values(); + } + + private function yearExpression(string $column): string + { + if (DB::getDriverName() === 'sqlite') { + return "CAST(strftime('%Y', {$column}) AS INTEGER)"; + } + + return "YEAR({$column})"; + } + + private function monthExpression(string $column): string + { + if (DB::getDriverName() === 'sqlite') { + return "strftime('%Y-%m', {$column})"; + } + + return "DATE_FORMAT({$column}, '%Y-%m')"; + } + + private function parseDate($date) + { + if ($date === null || $date === '') { + return null; + } + + $date = trim((string) $date); + + try { + if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) { + return Carbon::createFromFormat('Y-m-d', $date)->format('Y-m-d'); + } + + if (preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $date)) { + return Carbon::createFromFormat('d/m/Y', $date)->format('Y-m-d'); + } + + return Carbon::parse($date)->format('Y-m-d'); + } catch (\Exception $e) { + return null; + } + } +} diff --git a/app/Services/AuthService.php b/app/Services/AuthService.php new file mode 100644 index 0000000..65cac1e --- /dev/null +++ b/app/Services/AuthService.php @@ -0,0 +1,73 @@ +first(); + abort_unless($user && Hash::check($credentials['password'], $user->password) && $user->can_login !== false, 401, 'Credenciais invalidas.'); + return $user; + } + + public function issueToken(User $user): array + { + $token = $user->createToken('api-token', ['*'], now()->addMinutes(20)); + return ['token' => $token->plainTextToken, 'user' => $user->only(['id', 'name', 'email'])]; + } + + public function sessionToken(User $user, string $plainText): ?PersonalAccessToken + { + $token = PersonalAccessToken::findToken($plainText); + if (!$token || $token->tokenable_type !== $user->getMorphClass() || (int) $token->tokenable_id !== (int) $user->id + || ($token->expires_at && $token->expires_at->isPast()) || $user->can_login === false) { + return null; + } + return $token; + } + + public function refresh(PersonalAccessToken $token): array + { + abort_if($token->expires_at && $token->expires_at->isPast(), 401, 'Token expirado.'); + $token->update(['expires_at' => now()->addMinutes(20)]); + return [ + 'message' => 'Token renovado com sucesso', + 'expires_at' => $token->expires_at->toISOString(), + 'user' => $token->tokenable->only(['id', 'name', 'email']), + ]; + } + + public function check(PersonalAccessToken $token): array + { + $valid = !$token->expires_at || $token->expires_at->isFuture(); + $seconds = $valid && $token->expires_at ? max(0, now()->diffInSeconds($token->expires_at, false)) : 0; + return ['valid' => $valid, 'expires_at' => $token->expires_at?->toISOString(), 'expires_in' => $seconds, 'expires_in_minutes' => ceil($seconds / 60)]; + } + + public function revoke(?PersonalAccessToken $token): void + { + $token?->delete(); + } + + public function sendResetLink(array $credentials): string + { + return Password::sendResetLink($credentials); + } + + public function resetPassword(array $credentials): string + { + return Password::reset($credentials, function (User $user, string $password) { + $user->forceFill(['password' => Hash::make($password), 'remember_token' => Str::random(60)])->save(); + $user->tokens()->delete(); + event(new PasswordReset($user)); + }); + } +} diff --git a/app/Services/ClientService.php b/app/Services/ClientService.php new file mode 100644 index 0000000..3908fb0 --- /dev/null +++ b/app/Services/ClientService.php @@ -0,0 +1,95 @@ +where('status', 'A'); + if ($paginated) { + $query->where('type', 'client'); + } + foreach (['name', 'tax_number', 'email'] as $field) { + if ($request->filled($field)) { + $query->where($field, 'like', '%' . $request->input($field) . '%'); + } + } + if ($request->filled('client_type_id')) { + $query->where('client_type_id', $request->input('client_type_id')); + } + if ($request->filled('contract_code')) { + $query->whereHas('contracts', fn ($contracts) => $contracts->where('code', 'like', '%' . $request->input('contract_code') . '%')); + } + return $paginated + ? $query->orderByDesc('id')->paginate(max(1, min(100, (int) $request->input('per_page', 10))))->appends($request->query()) + : $query->orderBy('id')->get(); + } + + public function types() + { + return ClientType::all(); + } + + public function form($type, User $user): array + { + return ['type' => ClientType::findOrFail($type), 'sellers' => $user->id === 1 ? User::all() : $this->_getSellers()]; + } + + public function find($id) + { + return Clients::with('contracts')->findOrFail($id); + } + + public function detail($id): array + { + $contracts = Contract::with(['contractType', 'status'])->where('client_id', $id)->orderByDesc('activation_date')->get(); + return [ + 'client' => $this->find($id), + 'contractsByStatus' => $contracts->groupBy(fn ($contract) => $contract->status->description ?? 'Sem status'), + 'clientTypes' => $this->types(), + 'sellers' => $this->_getSellers(), + ]; + } + + public function create(array $data) + { + return Clients::create($data); + } + + public function update($id, array $data) + { + $client = $this->find($id); + $client->update($data); + return $client; + } + + public function delete($id): void + { + $client = $this->find($id); + $client->status = 'I'; + $client->save(); + } + + public function searchName(string $term) + { + return Clients::with('clientType')->where('type', 'client')->where('status', 'A') + ->where('name', 'like', '%' . $term . '%')->orderBy('name')->limit(10)->get() + ->map(fn ($client) => ['id' => $client->id, 'label' => $client->name . ' (' . optional($client->clientType)->description . ')']); + } + + public function searchID($id) + { + abort_unless(ctype_digit((string) $id), 400, 'ID invalido'); + return Clients::where('type', 'client')->where('status', 'A')->findOrFail((int) $id); + } +} diff --git a/app/Services/ContractService.php b/app/Services/ContractService.php new file mode 100644 index 0000000..e219f18 --- /dev/null +++ b/app/Services/ContractService.php @@ -0,0 +1,735 @@ + + * @version 2025/06 + * @since 2025/06 + */ + public function index(Request $request) + { + $perPage = max(1, min(100, (int) $request->get('per_page', 10))); + + $query = Contract::query(); + $this->_applyFilters($query, $request); + + $filteredQuery = clone $query; + $contracts = $query->paginate($perPage)->appends($request->query()); + + # Values for the full filtered set, not only the current page + $totalPvp = (float) $filteredQuery->sum('contract_value'); + $totalCommission = (float) $filteredQuery->sum('commission_value'); + $totalChargeback = (float) $filteredQuery->sum('chargeback_value'); + $totalMargin = $totalPvp - $totalCommission + $totalChargeback; + + return [ + 'contracts' => $contracts, + 'statuses' => $this->_getContractStatuses(), + 'contractTypes' => $this->_getContractTypes(), + 'sellers' => $this->_getSellers(), + 'totalPvp' => $totalPvp, + 'totalCommission' => $totalCommission, + 'totalChargeback' => $totalChargeback, + 'totalMargin' => $totalMargin, + 'suppliers' => $this->_getSuppliers(), + 'clientTypes' => ClientType::orderBy('description')->get(), + ]; + } + + /** + * Applies filter parameters to the contract query. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @param Request $request + * + * @return void + * + * @author Luis Medon + */ + private function _applyFilters($query, Request $request) + { + $filters = [ + 'contract_id' => fn($q, $v) => $q->where('id', $v), + 'contract_code' => fn($q, $v) => $q->where('code', 'like', "%$v%"), + 'status' => fn($q, $v) => $q->where('status_id', $v), + 'contract_type' => fn($q, $v) => $q->where('contract_type_id', $v), + 'client_type_id' => fn($q, $v) => $q->whereHas( + 'client', + fn($clientQuery) => $clientQuery->where('client_type_id', $v) + ), + 'supply_type' => fn($q, $v) => $q->where('supply_type', $v), + 'validity_from' => fn($q, $v) => $q->whereDate('contract_date', '>=', $this->normalizeDate($v)), + 'validity_to' => fn($q, $v) => $q->whereDate('contract_date', '<=', $this->normalizeDate($v)), + 'activation_from' => fn($q, $v) => $q->whereDate('activation_date', '>=', $this->normalizeDate($v)), + 'activation_to' => fn($q, $v) => $q->whereDate('activation_date', '<=', $this->normalizeDate($v)), + 'renewal_from' => fn($q, $v) => $q->whereDate('validity', '>=', $this->normalizeDate($v)), + 'renewal_to' => fn($q, $v) => $q->whereDate('validity', '<=', $this->normalizeDate($v)), + 'seller_id' => fn($q, $v) => $q->where('seller_id', $v), + 'supplier_id' => fn($q, $v) => $q->where('new_supplier_id', $v), + ]; + + foreach ($filters as $key => $callback) { + if ($request->filled($key)) { + $callback($query, $request->input($key)); + } + } + + if ($request->filled('client_name')) { + $query->whereHas('client', fn($q) => $q->where('name', 'like', '%' . $request->input('client_name') . '%')); + } + + if ($request->filled('sort_by')) { + $allowedSortColumns = [ + 'id', 'code', 'status_id', 'contract_type_id', 'supply_type', + 'validity', 'activation_date', 'renewal_date', 'seller_id' + ]; + $sortBy = $request->input('sort_by'); + if (in_array($sortBy, $allowedSortColumns)) { + $order = strtolower($request->input('order', 'desc')); + $order = in_array($order, ['asc', 'desc']) ? $order : 'desc'; + $query->orderBy($sortBy, $order); + } else { + // Fallback to default sorting if sort_by is invalid + $query->orderBy('activation_date', 'desc'); + } + } else { + // Always apply default sorting when sort_by is not provided + // Last added contracts first + $query->orderBy('id', 'desc'); + } + } + + /** + * Exports filtered contracts to Excel. + * + * @param Request $request + * + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * + * @author Luis Medon + */ + public function export(Request $request) + { + $filename = 'contratos_' . now()->format('Ymd_His') . '.xlsx'; + return Excel::download(new ContractsExport($request), $filename); + } + + /** + * Shows the contract creation form. + * + * @param Request $request + * + * @return \Illuminate\View\View + * + * @author Luis Medon + */ + public function create(Request $request) + { + return [ + 'clientId' => $request->query('client_id'), + 'contract' => null, + 'paymentMethods' => $this->_getPaymentMethods(), + 'contractTypes' => $this->_getContractTypes(), + 'contractStatus' => $this->_getContractStatuses(), + 'powerTiers' => $this->_getPowerTiers(), + 'cui_tiers' => $this->_getCuiTiers(), + 'suppliers' => $this->_getSuppliers(), + 'typology' => $this->_getTypologies(), + 'sellers' => $this->_getSellers(), + 'installments_count' => 12, + ]; + } + + /** + * Stores a newly created contract. + * + * @param ContractRequest $request + * + * @return \Illuminate\Http\RedirectResponse + * + * @author Luis Medon + */ + public function store(ContractRequest $request) + { + $data = $request->validated(); + + if (! $request->user()?->can('view_contract_summary')) { + foreach (['contract_value', 'commission_value', 'profit_value', 'paid', 'chargeback', 'chargeback_value', 'chargeback_date'] as $field) { + unset($data[$field]); + } + $installmentsInput = []; + } else { + $installmentsInput = $request->input('installments', []); + } + + foreach (['contract_date', 'activation_date', 'validity', 'contract_end_date', 'renewal_date', 'payment_date', 'chargeback_date'] as $field) { + if (!empty($data[$field])) { + $data[$field] = $this->normalizeDate($data[$field]); + } + } + + if (($data['delivery_method'] ?? null) !== 'email') { + $data['delivery_email'] = null; + } + + if (empty($data['chargeback'])) { + $data['chargeback_value'] = null; + $data['chargeback_date'] = null; + } + + if ($request->user()?->can('view_contract_summary')) { + $data['profit_value'] = (float) ($data['contract_value'] ?? 0) + - abs((float) ($data['commission_value'] ?? 0)) + + (float) ($data['chargeback_value'] ?? 0); + } + + $contract = Contract::create($data); + + foreach ($installmentsInput as $i => $installment) { + if (!empty($installment['due_date']) && !empty($installment['amount'])) { + $dueDate = $this->normalizeDate($installment['due_date']); + if ($dueDate === null) { + continue; + } + + $contract->installments()->create([ + 'installment_number' => $i, + 'due_date' => $dueDate, + 'amount' => $installment['amount'], + 'paid' => isset($installment['paid']) && $installment['paid'] ? 1 : 0, + ]); + } + } + + return $contract; + } + + + /** + * Shows the contract editing form. + * + * @param string $id + * + * @return \Illuminate\View\View + * + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * + * @author Luis Medon + */ + public function edit(string $id) + { + $contract = Contract::findOrFail($id); + + $suppliers = $this->includeCurrentOption($this->_getSuppliers(), $contract->previousSupplier); + $suppliers = $this->includeCurrentOption($suppliers, $contract->newSupplier); + + return [ + 'contract' => $contract, + 'clientId' => $contract->client_id, + 'paymentMethods' => $this->includeCurrentOption($this->_getPaymentMethods(), $contract->paymentMethod), + 'contractTypes' => $this->includeCurrentOption($this->_getContractTypes(), $contract->contractType), + 'contractStatus' => $this->_getContractStatuses(), + 'powerTiers' => $this->includeCurrentOption($this->_getPowerTiers(), $contract->powerTier), + 'cui_tiers' => $this->includeCurrentOption($this->_getCuiTiers(), $contract->cuiTier), + 'suppliers' => $suppliers, + 'typology' => $this->includeCurrentOption($this->_getTypologies(), $contract->typology), + 'sellers' => $this->includeCurrentOption($this->_getSellers(), $contract->seller), + 'installments_count' => 12, + ]; + } + + private function includeCurrentOption(Collection $options, ?Model $current): Collection + { + $options = clone $options; + + if ($current && ! $options->contains(fn (Model $option) => $option->is($current))) { + $options->prepend($current); + } + + return $options; + } + + /** + * Updates an existing contract. + * + * @param ContractRequest $request + * @param string $id + * + * @return \Illuminate\Http\RedirectResponse + * + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * + * @author Luis Medon + */ + public function update(ContractRequest $request, string $id) + { + $contract = Contract::findOrFail($id); + $data = $request->validated(); + + if (! $request->user()?->can('view_contract_summary')) { + foreach (['contract_value', 'commission_value', 'profit_value', 'paid', 'chargeback', 'chargeback_value', 'chargeback_date'] as $field) { + unset($data[$field]); + } + $installmentsInput = []; + } else { + $installmentsInput = $request->input('installments', []); + } + + // Campos de data do contrato + foreach (['contract_date', 'activation_date', 'validity', 'contract_end_date', 'renewal_date', 'payment_date', 'chargeback_date'] as $field) { + if (!empty($data[$field])) { + $data[$field] = $this->normalizeDate($data[$field]); + } + } + + if (($data['delivery_method'] ?? null) !== 'email') { + $data['delivery_email'] = null; + } + + if ($request->user()?->can('view_contract_summary') && empty($data['chargeback'])) { + $data['chargeback_value'] = null; + $data['chargeback_date'] = null; + } + + if ($request->user()?->can('view_contract_summary')) { + $data['profit_value'] = (float) ($data['contract_value'] ?? 0) + - abs((float) ($data['commission_value'] ?? 0)) + + (float) ($data['chargeback_value'] ?? 0); + } + + if (! $contract->update($data)) { + throw \Illuminate\Validation\ValidationException::withMessages([ + 'contract' => 'O contrato não foi atualizado. Reveja os dados e tente novamente.', + ]); + } + + // Parcelas + $processedIds = []; + + foreach ($installmentsInput as $i => $installment) { + $dueDateRaw = trim($installment['due_date'] ?? ''); + $amount = $installment['amount'] ?? null; + + if ($dueDateRaw !== '' && $amount !== null) { + $dueDate = $this->normalizeDate($dueDateRaw); + if ($dueDate === null) { + continue; + } + + $payload = [ + 'installment_number' => $i, + 'due_date' => $dueDate, + 'amount' => $amount, + 'paid' => isset($installment['paid']) && $installment['paid'] ? 1 : 0, + ]; + + $existing = $contract->installments()->where('installment_number', $i)->first(); + + if ($existing) { + $existing->update($payload); + $processedIds[] = $existing->id; + } else { + $new = $contract->installments()->create($payload); + $processedIds[] = $new->id; + } + } + } + + // Deleta parcelas não enviadas + if ($request->user()?->can('view_contract_summary')) { + $contract->installments()->whereNotIn('id', $processedIds)->delete(); + } + + return $contract; + } + + + + + /** + * Shows contract details including financial summary. + * + * @param string $id + * + * @return \Illuminate\View\View + * + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * + * @author Luis Medon + */ + public function show(string $id) + { + $contract = Contract::with('payments')->findOrFail($id); + $lastRef = $contract->payments()->orderByDesc('reference_period')->value('reference_period'); + + $totalReceived = $totalPending = $commission = $profit = 0; + + if ($lastRef) { + $payments = $contract->payments()->whereDate('reference_period', $lastRef)->get(); + $totalReceived = $payments->where('status', 'paid')->sum('amount'); + $totalPending = $payments->where('status', 'pending')->sum('amount'); + $commission = $contract->pvp * ($contract->commission_rate / 100); + $profit = ($contract->pvp - $commission) - $contract->net + + (float) ($contract->chargeback_value ?? 0); + } + + return [ + 'contract' => $contract, + 'contractTypes' => $this->_getContractTypes(), + 'statuses' => $this->_getContractStatuses(), + 'totalReceived' => $totalReceived, + 'totalPending' => $totalPending, + 'commission' => $commission, + 'profit' => $profit, + ]; + } + + /** + * Displays the contract renewal form. + * + * @param string $id + * + * @return \Illuminate\View\View + * + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * + * @author Luis Medon + */ + public function renewForm(string $id) + { + $contract = Contract::findOrFail($id); + return [ + 'contract' => $contract, + 'renewalTypes' => RenewalType::orderBy('id')->get(), + 'suppliers' => $this->_getSuppliers(), + 'contractTypes' => $this->_getContractTypes(), + 'typology' => $this->_getTypologies(), + ]; + } + + /** + * Performs contract renewal and creates payment. + * + * @param string $id + * + * @return \Illuminate\Http\RedirectResponse + * + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * + * @author Luis Medon + */ + public function renew(RenewContractRequest $request, $id) + { + # Obtain contract information + $contract = Contract::findOrFail($id); + + # Obtain contract installemnts + $installments = $contract->installments()->get(); + $totalInstallments = $installments->count(); + $totalPaidInstallments = $installments->where('paid', true)->count(); + $canViewFinancials = $request->user()?->can('view_contract_summary') ?? false; + $currentSupplierId = $request->boolean('change_supplier') + ? $request->new_supplier_id + : $contract->new_supplier_id; + + # Create Contract History Record + $historyData = [ + 'contract_id' => $contract->id, + 'previous_supplier_id' => $contract->new_supplier_id, + 'current_supplier_id' => $currentSupplierId, + 'seller_id' => $contract->seller_id, + 'contract_type_id' => $request->contract_type_id, + 'typology_id' => $request->typology_id, + 'contract_date' => $contract->contract_date, + 'activation_date' => $contract->activation_date, + 'renewal_date' => $contract->validity, + 'renewal_type' => $request->renewal_type, + 'go_ki' => $contract->go_ki, + 'validity' => $contract->validity, + 'contract_value' => $contract->contract_value, + 'commission_value' => $contract->commission_value, + 'profit_value' => $contract->profit_value, + 'annual_consumption' => $contract->annual_consumption, + 'total_installments' => $totalInstallments, + 'paid_installments' => $totalPaidInstallments, + 'notes' => 'Renovação automática', + 'contract_snapshot' => $contract->toJson(), + ]; + + if ($canViewFinancials) { + $historyData['chargeback'] = (bool) $contract->chargeback; + $historyData['chargeback_value'] = $contract->chargeback_value; + $historyData['chargeback_date'] = $contract->chargeback_date; + } + + ContractHistory::create($historyData); + + # Update current contract data + $contractData = [ + 'annual_consumption' => $request->annual_consumption, + 'contract_date' => $request->contract_date, + 'activation_date' => $request->activation_date, + 'contract_end_date' => $request->contract_end_date, + 'validity' => $request->next_due_date, + 'contract_type_id' => $request->contract_type_id, + 'typology_id' => $request->typology_id, + 'go_ki' => $request->go_ki, + 'paid' => true, + 'previous_supplier_id' => $contract->new_supplier_id, + ]; + + if ($canViewFinancials) { + $contractData['contract_value'] = $request->amount_paid; + $contractData['commission_value'] = $request->commission_value; + $contractData['profit_value'] = (float) $request->amount_paid - abs((float) $request->commission_value) + (float) ($contract->chargeback_value ?? 0); + } + + if ($request->boolean('change_supplier')) { + $contractData['new_supplier_id'] = $request->new_supplier_id; + } + + $contract->update($contractData); + + return $contract; + } + + + public function history($id) + { + $contract = Contract::findOrFail($id); + + $histories = ContractHistory::with(['previousSupplier', 'currentSupplier', 'seller', 'contractType']) + ->where('contract_id', $contract->id) + ->orderByRaw('COALESCE(validity, contract_date, created_at) ASC') + ->paginate(10); + + $totals = ContractHistory::where('contract_id', $contract->id) + ->selectRaw('COUNT(*) as renewals_count') + ->selectRaw('COALESCE(SUM(total_installments), 0) as total_installments') + ->selectRaw('COALESCE(SUM(paid_installments), 0) as paid_installments') + ->selectRaw('COALESCE(SUM(contract_value), 0) as contract_value') + ->selectRaw('COALESCE(SUM(commission_value), 0) as commission_value') + ->selectRaw('COALESCE(SUM(chargeback_value), 0) as chargeback_value') + ->selectRaw('COALESCE(SUM(profit_value), 0) as profit_value') + ->first(); + + return compact('histories', 'totals', 'contract'); + } + + public function createHistory($id) + { + $contract = Contract::findOrFail($id); + + return [ + 'contract' => $contract, + 'history' => null, + 'suppliers' => $this->_getSuppliers(), + ]; + } + + public function storeHistory(Request $request, $id) + { + $contract = Contract::findOrFail($id); + + $rules = [ + 'previous_supplier_id' => ['nullable', 'exists:suppliers,id'], + 'current_supplier_id' => ['nullable', 'exists:suppliers,id'], + 'validity' => ['nullable', 'date'], + 'annual_consumption' => ['nullable', 'numeric'], + 'seller_id' => ['nullable', 'exists:users,id'], + 'contract_type_id' => ['nullable', 'exists:contract_types,id'], + 'typology_id' => ['nullable', 'exists:typologies,id'], + 'contract_date' => ['nullable', 'date'], + 'activation_date' => ['nullable', 'date'], + 'renewal_date' => ['nullable', 'date'], + 'renewal_type' => ['nullable', 'string'], + 'go_ki' => ['nullable', 'numeric'], + 'contract_value' => ['nullable', 'numeric'], + 'commission_value' => ['nullable', 'numeric'], + 'profit_value' => ['nullable', 'numeric'], + 'chargeback' => ['nullable', 'boolean'], + 'chargeback_value' => ['nullable', 'numeric', 'max:-0.01'], + 'chargeback_date' => ['nullable', 'date'], + 'notes' => ['nullable', 'string'], + ]; + + if (! $request->user()?->can('view_contract_summary')) { + foreach (['contract_value', 'commission_value', 'profit_value', 'chargeback', 'chargeback_value', 'chargeback_date'] as $field) { + unset($rules[$field]); + } + } + + $data = $request->validate($rules); + + foreach (['validity', 'contract_date', 'activation_date', 'renewal_date', 'chargeback_date'] as $field) { + if (! empty($data[$field])) { + $data[$field] = $this->normalizeDate($data[$field]); + } + } + + if (empty($data['chargeback'] ?? null)) { + $data['chargeback'] = false; + $data['chargeback_value'] = null; + $data['chargeback_date'] = null; + } + + $data['contract_id'] = $contract->id; + + if ($request->user()?->can('view_contract_summary') && ! empty($data['contract_value']) && ! empty($data['commission_value'])) { + $data['profit_value'] = (float) ($data['contract_value'] ?? 0) + - abs((float) ($data['commission_value'] ?? 0)) + + (float) ($data['chargeback_value'] ?? 0); + } + + return ContractHistory::create($data); + } + + public function editHistory($id, $historyId) + { + $contract = Contract::findOrFail($id); + $history = ContractHistory::where('contract_id', $contract->id)->findOrFail($historyId); + + return [ + 'contract' => $contract, + 'history' => $history, + 'suppliers' => $this->_getSuppliers(), + ]; + } + + private function normalizeDate($value): ?string + { + if ($value === null || $value === '') { + return null; + } + + $value = trim((string) $value); + + try { + if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) { + return Carbon::createFromFormat('Y-m-d', $value)->format('Y-m-d'); + } + + if (preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $value)) { + return Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d'); + } + + return Carbon::parse($value)->format('Y-m-d'); + } catch (\Exception $e) { + return null; + } + } + + public function updateHistory(Request $request, $id, $historyId) + { + $contract = Contract::findOrFail($id); + $history = ContractHistory::where('contract_id', $contract->id)->findOrFail($historyId); + + $data = $request->validate($this->getHistoryUpdateRules($request)); + + if (! $request->user()?->can('view_contract_summary')) { + foreach (['contract_value', 'commission_value', 'profit_value', 'chargeback', 'chargeback_value', 'chargeback_date'] as $field) { + unset($data[$field]); + } + } + + $history->update($data); + + return $history; + } + + protected function getHistoryUpdateRules(Request $request): array + { + $rules = [ + 'previous_supplier_id' => ['nullable', 'exists:suppliers,id'], + 'validity' => ['nullable', 'date'], + 'annual_consumption' => ['nullable', 'numeric'], + 'notes' => ['nullable', 'string'], + ]; + + if ($request->user()?->can('view_contract_summary')) { + $rules['contract_value'] = ['required', 'numeric']; + $rules['commission_value'] = ['nullable', 'numeric']; + $rules['profit_value'] = ['nullable', 'numeric']; + $rules['chargeback'] = ['nullable', 'boolean']; + $rules['chargeback_value'] = ['nullable', 'numeric', 'max:-0.01']; + $rules['chargeback_date'] = ['nullable', 'date']; + } + + return $rules; + } + + public function destroyHistory($id, $historyId) + { + $contract = Contract::findOrFail($id); + $history = ContractHistory::where('contract_id', $contract->id)->findOrFail($historyId); + $history->delete(); + + return $history; + } + + + /** + * Deletes a contract from the system. + * + * @param string $id + * + * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse + * + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * + * @author Luis Medon + */ + public function destroy(string $id) + { + $contract = Contract::findOrFail($id); + $contract->delete(); + + return ['success' => true, 'message' => 'Contrato removido com sucesso.', 'icon' => 'success']; + } + + public function bulkDestroy(Request $request) + { + $data = $request->validate([ + 'ids' => ['required', 'array', 'min:1'], + 'ids.*' => ['integer', 'distinct', 'exists:contracts,id'], + ]); + + DB::transaction(function () use ($data) { + Contract::whereIn('id', $data['ids'])->get()->each->delete(); + }); + + return [ + 'success' => true, + 'message' => count($data['ids']) === 1 + ? 'Contrato removido com sucesso.' + : 'Contratos removidos com sucesso.', + 'icon' => 'success', + ]; + } +} diff --git a/app/Services/HomeService.php b/app/Services/HomeService.php new file mode 100644 index 0000000..c007422 --- /dev/null +++ b/app/Services/HomeService.php @@ -0,0 +1,79 @@ +addDays(60); + + $activeStatus = 1; + $pendingStatus = 3; + + // === Contracts grouped by client type (for the chart) === + $contractsByClientType = Contract::with('client.clientType') + ->where('status_id', $activeStatus) + ->get() + ->groupBy(function ($contract) { + return $contract->client->clientType->description ?? 'Undefined'; + }) + ->map(function ($group) { + return $group->count(); + }); + + $clientLabels = $contractsByClientType->keys(); + $clientData = $contractsByClientType->values(); + + // === Pending Contracts === + $pendingContracts = Contract::with(['client', 'contractType']) + ->where('status_id', $pendingStatus) + ->orderBy('id') + ->take(5) + ->get(); + + // === Active Contracts === + $activeContracts = Contract::with(['client', 'contractType']) + ->where('status_id', $activeStatus) + ->orderByDesc('id') + ->take(5) + ->get(); + + // === Upcoming Renewals (next 2 month) === + $upcomingRenewals = Contract::with(['client', 'contractType', 'seller', 'installments' => function ($query) use ($today, $next60Days) { + $query->whereBetween('due_date', [$today, $next60Days]) + ->orderBy('due_date'); + }]) + ->where('status_id', $activeStatus) + ->whereBetween('validity', [$today, $next60Days]) + ->orderByDesc('contracts.id') + ->take(5) + ->get(); + + return [ + 'clientLabels' => $clientLabels, + 'clientData' => $clientData, + 'activeContracts' => $activeContracts, + 'pendingContracts' => $pendingContracts, + 'upcomingRenewals' => $upcomingRenewals + ]; + } + +} diff --git a/app/Services/LeadService.php b/app/Services/LeadService.php new file mode 100644 index 0000000..e0f4e81 --- /dev/null +++ b/app/Services/LeadService.php @@ -0,0 +1,133 @@ +where('type', 'lead') + ->orderBy('created_at', 'desc') + ->paginate(10); + + return compact('leads'); + } + + /** + * Display a specific lead. + */ + public function show($id) + { + // Fetch a single lead with its leadStatus + $lead = Client::with(['leadStatus', 'leadDetail'])->where('type', 'lead')->findOrFail($id); + + return compact('lead'); + } + + /** + * Show the form for creating a new lead. + */ + public function create() + { + // Use unified add_edit view + return ['leadStatuses' => LeadStatus::all()]; + } + + /** + * Store a newly created lead in storage. + */ + public function store(LeadRequest $request) + { + $validated = $request->validated(); + $validated['type'] = 'lead'; + $validated['seller_id'] = $request->user()->id; + + $client = Client::create($validated); + + // Save lead details + LeadDetail::create([ + 'client_id' => $client->id, + 'contact_date' => $request->contact_date, + 'contract_end_date' => $request->contract_end_date, + 'contract_type' => $request->contract_type, + 'delivery_point_code' => $request->delivery_point_code, + ]); + + return $client->load('leadDetail'); + } + + /** + * Show the form for editing the specified lead. + */ + public function edit($id) + { + // Find lead by id + $lead = Client::with('leadDetail')->where('type', 'lead')->findOrFail($id); + + // Use unified add_edit view and pass the lead + return ['lead' => $lead, 'leadStatuses' => LeadStatus::all()]; + } + + /** + * Update the specified lead in storage. + */ + public function update(LeadRequest $request, $id) + { + $lead = Client::where('type', 'lead')->findOrFail($id); + + $lead->update($request->validated()); + + // Update or create lead details + $lead->leadDetail()->updateOrCreate( + ['client_id' => $lead->id], + [ + 'contact_date' => $request->contact_date, + 'contract_end_date' => $request->contract_end_date, + 'contract_type' => $request->contract_type, + 'delivery_point_code' => $request->delivery_point_code, + ] + ); + + return $lead->load('leadDetail'); + } + + /** + * Convert a lead into a client. + */ + public function convert($id) + { + $lead = Client::where('type', 'lead')->findOrFail($id); + + $lead->update([ + 'type' => 'client', + 'lead_status_id' => null, + 'status' => 'A', + ]); + + return $lead; + } + + /** + * Remove the specified lead from storage. + */ + public function destroy($id) + { + $lead = Client::where('type', 'lead')->findOrFail($id); + $lead->delete(); + + return [ + 'status' => 'success', + 'message' => 'Lead removed successfully!' + ]; + } +} diff --git a/app/Services/ResourceService.php b/app/Services/ResourceService.php new file mode 100644 index 0000000..4bc2d20 --- /dev/null +++ b/app/Services/ResourceService.php @@ -0,0 +1,78 @@ + PowerTier::class, + 'contract_types' => ContractType::class, + 'payment_methods' => PaymentMethod::class, + 'typologies' => Typology::class, + 'cui_tiers' => CuiTier::class, + 'suppliers' => Supplier::class, + 'contract-statuses' => ContractStatus::class, + ]; + + private function model(string $resource): string + { + abort_unless(isset(self::MODELS[$resource]), 404); + return self::MODELS[$resource]; + } + + public function all(string $resource) + { + return $this->model($resource)::orderBy('id')->get(); + } + + public function find(string $resource, $id): Model + { + $model = $this->model($resource)::findOrFail($id); + if ($resource === 'suppliers') { + abort_unless($model->status === 'A', 403, 'Este fornecedor esta inativo.'); + } + return $model; + } + + public function save(string $resource, Request $request, $id = null): Model + { + $modelClass = $this->model($resource); + $model = $id === null ? new $modelClass() : $this->find($resource, $id); + $rules = match ($resource) { + 'contract_types', 'typologies' => ['description' => 'required|string|max:255'], + 'payment_methods' => ['name' => 'required|string|max:255', 'icon' => 'required|string|max:255'], + 'suppliers' => ['name' => 'required|string|max:255', 'color' => 'nullable|string|max:20'], + 'contract-statuses' => [ + 'code' => ['required', 'string', 'max:10', Rule::unique($model->getTable(), 'code')->ignore($model->getKey())], + 'description' => 'required|string|max:255', + 'color' => ['nullable', 'string', 'regex:/^#([A-Fa-f0-9]{6})$/'], + ], + default => ['name' => 'required|string|max:255'], + }; + $model->fill($request->validate($rules)); + if ($resource === 'suppliers' && $id === null) { + $model->status = 'A'; + } + $model->save(); + $this->invalidate($resource); + return $model; + } + + public function delete(string $resource, $id): void + { + $model = $this->model($resource)::findOrFail($id); + $resource === 'contract-statuses' ? $model->delete() : $model->update(['status' => 'I']); + $this->invalidate($resource); + } + + private function invalidate(string $resource): void + { + Cache::forget($resource === 'contract-statuses' ? 'contract_statuses' : $resource); + } +} diff --git a/app/Services/RolePermissionService.php b/app/Services/RolePermissionService.php new file mode 100644 index 0000000..6f1d7c9 --- /dev/null +++ b/app/Services/RolePermissionService.php @@ -0,0 +1,25 @@ + Role::with('permissions')->get(), + 'permissions' => Permission::all(), + ]; + } + + public function updatePermissions(Request $request, Role $role) + { + $request->validate(['permissions' => 'sometimes|array', 'permissions.*' => 'exists:permissions,name']); + $role->syncPermissions($request->input('permissions', [])); + return $role->load('permissions'); + } +} diff --git a/app/Services/UserAccessService.php b/app/Services/UserAccessService.php new file mode 100644 index 0000000..b5402f4 --- /dev/null +++ b/app/Services/UserAccessService.php @@ -0,0 +1,25 @@ + User::with('roles')->get(), + 'roles' => Role::all(), + ]; + } + + public function updateRoles(Request $request, User $user) + { + $request->validate(['roles' => 'sometimes|array', 'roles.*' => 'exists:roles,name']); + $user->syncRoles($request->input('roles', [])); + return $user->load('roles'); + } +} diff --git a/app/Services/UserService.php b/app/Services/UserService.php new file mode 100644 index 0000000..ae5075a --- /dev/null +++ b/app/Services/UserService.php @@ -0,0 +1,139 @@ +paginate(20); + return compact('users'); + } + + public function create() + { + $roles = Role::where('id', '!=', 1)->get(); + return compact('roles'); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'name' => 'required|string|max:255', + 'email' => 'required|email|unique:users,email', + 'roles' => 'array|nullable', + 'roles.*' => 'exists:roles,name', + ]); + + $validator->validate(); + + $canLogin = $request->boolean('can_login'); + $password = Str::random(12); + + $user = User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password' => Hash::make($password), + 'can_login' => $canLogin, + ]); + + if ($request->filled('roles')) { + $user->syncRoles($request->roles); + } + + if ($canLogin) { + Mail::to($user->email)->send(new NewUserWelcome($user, $password)); + } + + Cache::forget('sellers'); + return $user; + } + + public function edit(User $user) + { + $roles = Role::where('id', '!=', 1)->get(); + return compact('user', 'roles'); + } + + public function update(Request $request, User $user) + { + $validator = Validator::make($request->all(), [ + 'name' => 'required|string|max:255', + 'email' => 'required|email|unique:users,email,' . $user->id, + 'roles' => 'array|nullable', + 'roles.*' => 'exists:roles,name', + ]); + + $validator->validate(); + + $user->update([ + 'name' => $request->name, + 'email' => $request->email, + 'can_login' => $request->boolean('can_login'), + ]); + + if ($request->has('roles')) { + $user->syncRoles($request->input('roles', [])); + } + + Cache::forget('sellers'); + return $user; + } + + public function sendPasswordResetLink(User $user) + { + $status = $this->authentication->sendResetLink(['email' => $user->email]); + + return $status; + } + + public function savePin(Request $request) + { + $request->validate([ + 'pin' => ['required', 'digits:4'], + ]); + + $user = $request->user(); + + /** @var User $user */ + $user->pin = Hash::make($request->pin); + $user->save(); + + return ['message' => 'PIN saved successfully.']; + } + + public function checkPin(Request $request) + { + $request->validate([ + 'pin' => ['required', 'digits:4'] + ]); + + $user = $request->user(); + if ($user->pin && Hash::check($request->pin, $user->pin)) { + return ['message' => 'PIN valid']; + } + + throw \Illuminate\Validation\ValidationException::withMessages(['pin' => 'Invalid PIN']); + } + + public function destroy(User $user): void + { + $user->tokens()->delete(); + $user->delete(); + Cache::forget('sellers'); + } +} diff --git a/app/Traits/ResourcesCache.php b/app/Traits/ResourcesCache.php new file mode 100644 index 0000000..5d310eb --- /dev/null +++ b/app/Traits/ResourcesCache.php @@ -0,0 +1,130 @@ +cacheTime(), + fn() => ContractStatus::all() + ); + } + + /** + * Get active contract types, cached. + */ + public function _getContractTypes() + { + return Cache::remember( + 'contract_types', + $this->cacheTime(), + fn() => ContractType::where('status', 'A')->get() + ); + } + + /** + * Get active payment methods, cached. + */ + public function _getPaymentMethods() + { + return Cache::remember( + 'payment_methods', + $this->cacheTime(), + fn() => PaymentMethod::where('status', 'A')->get() + ); + } + + /** + * Get active power tiers, cached. + */ + public function _getPowerTiers() + { + return Cache::remember( + 'power_tiers', + $this->cacheTime(), + fn() => PowerTier::where('status', 'A')->get() + ); + } + + /** + * Get active CUI tiers, cached. + */ + public function _getCuiTiers() + { + return Cache::remember( + 'cui_tiers', + $this->cacheTime(), + fn() => CuiTier::where('status', 'A')->get() + ); + } + + /** + * Get active suppliers, cached. + */ + public function _getSuppliers() + { + return Cache::remember( + 'suppliers', + $this->cacheTime(), + fn() => Supplier::where('status', 'A')->get() + ); + } + + /** + * Get active typologies, cached. + */ + public function _getTypologies() + { + return Cache::remember( + 'typologies', + $this->cacheTime(), + fn() => Typology::where('status', 'A')->get() + ); + } + + /** + * Get all sellers except the one with ID = 1, cached. + */ + public function _getSellers() + { + return Cache::remember( + 'sellers', + $this->cacheTime(), + fn() => User::where('id', '!=', 1)->get() + ); + } +} diff --git a/artisan b/artisan new file mode 100644 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..cdbc7e7 --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,79 @@ +withRouting( + web: __DIR__.'/../routes/web.php', + api: __DIR__.'/../routes/api.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware) { + + $middleware->api(prepend: [\App\Http\Middleware\ApiResponse::class]); + + # Register Middleware + $middleware->alias([ + 'auth.session' => \App\Http\Middleware\AuthSession::class, + ]); + + }) + ->withExceptions(function (Exceptions $exceptions) { + $exceptions->reportable(function (Throwable $e) { + + }); + + $exceptions->render(function (Throwable $e, $request) { + if ($request->is('api/*') || $request->expectsJson()) { + $status = 500; + $message = $e->getMessage() ?: 'Erro interno do servidor'; + + if ($e instanceof \Illuminate\Validation\ValidationException) { + return response()->json([ + 'message' => 'Erro de validação.', + 'errors' => $e->errors(), + ], 422); + } + + if ($e instanceof \Illuminate\Auth\AuthenticationException) { + return response()->json(['message' => 'Nao autenticado.'], 401); + } + + if ($e instanceof \Illuminate\Auth\Access\AuthorizationException) { + return response()->json(['message' => 'Acesso negado.'], 403); + } + + if ($e instanceof \Illuminate\Database\Eloquent\ModelNotFoundException) { + return response()->json(['message' => 'Registo nao encontrado.'], 404); + } + + if ($e instanceof \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface) { + $status = $e->getStatusCode(); + $message = $e->getMessage() ?: 'Erro HTTP'; + } + + return response()->json([ + 'message' => $status >= 500 && app()->environment('production') ? 'Erro interno do servidor.' : $message, + 'exception' => app()->environment('production') ? null : get_class($e), + ], $status); + } + + return null; + }); + }) + ->withSchedule(function (Schedule $schedule) { + // $schedule->command('backup:run')->dailyAt('13:00'); + // $schedule->command('backup:clean-minio')->dailyAt('13:30'); + $schedule->command('sanctum:prune-expired --hours=24')->dailyAt('05:00'); + }) + ->booted(function () { + if (config('app.force_ssl')) { + URL::forceScheme('https'); + } + }) + ->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..d544739 --- /dev/null +++ b/bootstrap/providers.php @@ -0,0 +1,6 @@ +=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "AWS SDK Common Runtime Team", + "email": "aws-sdk-common-runtime@amazon.com" + } + ], + "description": "AWS Common Runtime for PHP", + "homepage": "https://github.com/awslabs/aws-crt-php", + "keywords": [ + "amazon", + "aws", + "crt", + "sdk" + ], + "support": { + "issues": "https://github.com/awslabs/aws-crt-php/issues", + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.7" + }, + "time": "2024-10-18T22:15:13+00:00" + }, + { + "name": "aws/aws-sdk-php", + "version": "3.371.5", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "d40b962154a146901f71561519f9d9c5a3863a6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d40b962154a146901f71561519f9d9c5a3863a6e", + "reference": "d40b962154a146901f71561519f9d9c5a3863a6e", + "shasum": "" + }, + "require": { + "aws/aws-crt-php": "^1.2.3", + "ext-json": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/promises": "^2.0", + "guzzlehttp/psr7": "^2.4.5", + "mtdowling/jmespath.php": "^2.8.0", + "php": ">=8.1", + "psr/http-message": "^1.0 || ^2.0", + "symfony/filesystem": "^v5.4.45 || ^v6.4.3 || ^v7.1.0 || ^v8.0.0" + }, + "require-dev": { + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "composer/composer": "^2.7.8", + "dms/phpunit-arraysubset-asserts": "^0.4.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", + "ext-openssl": "*", + "ext-sockets": "*", + "phpunit/phpunit": "^9.6", + "psr/cache": "^2.0 || ^3.0", + "psr/simple-cache": "^2.0 || ^3.0", + "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", + "yoast/phpunit-polyfills": "^2.0" + }, + "suggest": { + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-pcntl": "To use client-side monitoring", + "ext-sockets": "To use client-side monitoring" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Aws\\": "src/" + }, + "exclude-from-classmap": [ + "src/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "https://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "https://aws.amazon.com/sdk-for-php", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "support": { + "forum": "https://github.com/aws/aws-sdk-php/discussions", + "issues": "https://github.com/aws/aws-sdk-php/issues", + "source": "https://github.com/aws/aws-sdk-php/tree/3.371.5" + }, + "time": "2026-03-04T19:06:59+00:00" + }, + { + "name": "brick/math", + "version": "0.14.8", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629", + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629", + "shasum": "" + }, + "require": { + "php": "^8.2" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpstan/phpstan": "2.1.22", + "phpunit/phpunit": "^11.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.14.8" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2026-02-10T14:33:43+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=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": "composer/pcre", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, + "require-dev": { + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" + }, + "type": "library", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-11-12T16:29:46+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.4", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + } + ], + "time": "2025-08-20T19:15:30+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "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/dbal", + "version": "4.4.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "476f7f0fa6ea4aa5364926db7fabdf6049075722" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/476f7f0fa6ea4aa5364926db7fabdf6049075722", + "reference": "476f7f0fa6ea4aa5364926db7fabdf6049075722", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1.5", + "php": "^8.2", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "require-dev": { + "doctrine/coding-standard": "14.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.2", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "2.0.7", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "11.5.50", + "slevomat/coding-standard": "8.27.1", + "squizlabs/php_codesniffer": "4.0.1", + "symfony/cache": "^6.3.8|^7.0|^8.0", + "symfony/console": "^5.4|^6.3|^7.0|^8.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "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": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/4.4.2" + }, + "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%2Fdbal", + "type": "tidelift" + } + ], + "time": "2026-02-26T12:12:19+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.6", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=14" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12 || ^14", + "phpstan/phpstan": "1.4.10 || 2.1.30", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0", + "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.6" + }, + "time": "2026-02-07T07:09:04+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "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": "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.1.0" + }, + "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": "2025-08-10T19:31:58+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.6.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "shasum": "" + }, + "require": { + "php": "^8.2|^8.3|^8.4|^8.5" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^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.6.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2025-10-31T18:51:33+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": "ezyang/htmlpurifier", + "version": "v4.19.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/b287d2a16aceffbf6e0295559b39662612b77fcf", + "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf", + "shasum": "" + }, + "require": { + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" + }, + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.0" + }, + "time": "2025-10-17T16:34:55+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/http-foundation": "^5.4|^6.4|^7.3|^8" + }, + "require-dev": { + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-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.4.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2025-12-03T09:33:47+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + }, + "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.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:43:20+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.10.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", + "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.10.0" + }, + "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-08-23T22:36:01+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "481557b130ef3790cf82b713667b43030dc9c957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" + }, + "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.3.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-08-22T14:34:08+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "21dc724a0583619cd1652f673303492272778051" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", + "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.44 || ^9.6.25" + }, + "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.8.0" + }, + "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-08-23T21:21:41+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "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.44 || ^9.6.25", + "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.5" + }, + "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-08-22T14:27:06+00:00" + }, + { + "name": "laravel/framework", + "version": "v12.53.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "f57f035c0d34503d9ff30be76159bb35a003cd1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/f57f035c0d34503d9ff30be76159bb35a003cd1f", + "reference": "f57f035c0d34503d9ff30be76159bb35a003cd1f", + "shasum": "" + }, + "require": { + "brick/math": "^0.11|^0.12|^0.13|^0.14", + "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.7", + "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.33", + "symfony/polyfill-php84": "^1.33", + "symfony/polyfill-php85": "^1.33", + "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/json-schema": "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/reflection": "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", + "opis/json-schema": "^2.4.1", + "orchestra/testbench-core": "^10.9.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|^3.0", + "resend/resend-php": "^0.10.0|^1.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 generate fake data using the fake() helper (^1.23).", + "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|^3.0).", + "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|^1.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/Reflection/helpers.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/", + "src/Illuminate/Reflection/" + ] + } + }, + "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": "2026-02-24T14:35:15+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.3.13", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/ed8c466571b37e977532fb2fd3c272c784d7050d", + "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.2|^7.0|^8.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|^13.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4|^4.0", + "phpstan/phpstan": "^1.12.28", + "phpstan/phpstan-mockery": "^1.1.3" + }, + "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.13" + }, + "time": "2026-02-06T12:17:10+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "e3b85d6e36ad00e5db2d1dcc27c81ffdf15cbf76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/e3b85d6e36ad00e5db2d1dcc27c81ffdf15cbf76", + "reference": "e3b85d6e36ad00e5db2d1dcc27c81ffdf15cbf76", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^11.0|^12.0|^13.0", + "illuminate/contracts": "^11.0|^12.0|^13.0", + "illuminate/database": "^11.0|^12.0|^13.0", + "illuminate/support": "^11.0|^12.0|^13.0", + "php": "^8.2", + "symfony/console": "^7.0|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.6", + "orchestra/testbench": "^9.15|^10.8|^11.0", + "phpstan/phpstan": "^1.10" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2026-02-07T17:19:31+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v2.0.10", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "870fc81d2f879903dfc5b60bf8a0f94a1609e669" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/870fc81d2f879903dfc5b60bf8a0f94a1609e669", + "reference": "870fc81d2f879903dfc5b60bf8a0f94a1609e669", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0|^13.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0|^4.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0|^8.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": "2026-02-20T19:59:49+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.11.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/c9f80cc835649b5c1842898fb043f8cc098dd741", + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741", + "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|^8.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.11.1" + }, + "time": "2026-02-06T14:12:35+00:00" + }, + { + "name": "laravel/ui", + "version": "v4.6.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/ui.git", + "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/ui/zipball/7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", + "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.21|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^9.21|^10.0|^11.0|^12.0", + "illuminate/support": "^9.21|^10.0|^11.0|^12.0", + "illuminate/validation": "^9.21|^10.0|^11.0|^12.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.35|^8.15|^9.0|^10.0", + "phpunit/phpunit": "^9.3|^10.4|^11.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Ui\\UiServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Ui\\": "src/", + "Illuminate\\Foundation\\Auth\\": "auth-backend/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel UI utilities and presets.", + "keywords": [ + "laravel", + "ui" + ], + "support": { + "source": "https://github.com/laravel/ui/tree/v4.6.1" + }, + "time": "2025-01-28T15:15:29+00:00" + }, + { + "name": "league/commonmark", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "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 || ^6.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.9-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-11-26T21:48:24+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.32.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "254b1595b16b22dbddaaef9ed6ca9fdac4956725" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/254b1595b16b22dbddaaef9ed6ca9fdac4956725", + "reference": "254b1595b16b22dbddaaef9ed6ca9fdac4956725", + "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|^2", + "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|^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.32.0" + }, + "time": "2026-02-25T17:01:41+00:00" + }, + { + "name": "league/flysystem-aws-s3-v3", + "version": "3.32.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", + "reference": "a1979df7c9784d334ea6df356aed3d18ac6673d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/a1979df7c9784d334ea6df356aed3d18ac6673d0", + "reference": "a1979df7c9784d334ea6df356aed3d18ac6673d0", + "shasum": "" + }, + "require": { + "aws/aws-sdk-php": "^3.295.10", + "league/flysystem": "^3.10.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\AwsS3V3\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "AWS S3 filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "aws", + "file", + "files", + "filesystem", + "s3", + "storage" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.32.0" + }, + "time": "2026-02-25T16:46:44+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.31.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/2f669db18a4c20c755c2bb7d3a7b0b2340488079", + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079", + "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.31.0" + }, + "time": "2026-01-23T15:30:45+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.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/4436c6ec8d458e4244448b069cc572d088230b76", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.8", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "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", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "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": [ + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "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.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-14T17:24:56+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.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", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "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 tools for parsing and resolving RFC3987/RFC3986 URI", + "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.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-15T06:54:53+00:00" + }, + { + "name": "maatwebsite/excel", + "version": "3.1.67", + "source": { + "type": "git", + "url": "https://github.com/SpartnerNL/Laravel-Excel.git", + "reference": "e508e34a502a3acc3329b464dad257378a7edb4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/e508e34a502a3acc3329b464dad257378a7edb4d", + "reference": "e508e34a502a3acc3329b464dad257378a7edb4d", + "shasum": "" + }, + "require": { + "composer/semver": "^3.3", + "ext-json": "*", + "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0||^12.0", + "php": "^7.0||^8.0", + "phpoffice/phpspreadsheet": "^1.30.0", + "psr/simple-cache": "^1.0||^2.0||^3.0" + }, + "require-dev": { + "laravel/scout": "^7.0||^8.0||^9.0||^10.0", + "orchestra/testbench": "^6.0||^7.0||^8.0||^9.0||^10.0", + "predis/predis": "^1.1" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Excel": "Maatwebsite\\Excel\\Facades\\Excel" + }, + "providers": [ + "Maatwebsite\\Excel\\ExcelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Maatwebsite\\Excel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Brouwers", + "email": "patrick@spartner.nl" + } + ], + "description": "Supercharged Excel exports and imports in Laravel", + "keywords": [ + "PHPExcel", + "batch", + "csv", + "excel", + "export", + "import", + "laravel", + "php", + "phpspreadsheet" + ], + "support": { + "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.67" + }, + "funding": [ + { + "url": "https://laravel-excel.com/commercial-support", + "type": "custom" + }, + { + "url": "https://github.com/patrickbrouwers", + "type": "github" + } + ], + "time": "2025-08-26T09:13:16+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "682f1098a8fddbaf43edac2306a691c7ad508ec5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/682f1098a8fddbaf43edac2306a691c7ad508ec5", + "reference": "682f1098a8fddbaf43edac2306a691c7ad508ec5", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.3" + }, + "require-dev": { + "brianium/paratest": "^7.7", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.86", + "guzzlehttp/guzzle": "^7.5", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^12.0", + "vimeo/psalm": "^6.0" + }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/maennchen", + "type": "github" + } + ], + "time": "2025-12-10T09:58:31+00:00" + }, + { + "name": "markbaker/complex", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" + }, + "time": "2022-12-06T16:21:08+00:00" + }, + { + "name": "markbaker/matrix", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" + }, + "time": "2022-12-02T22:17:43+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.10.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", + "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 || ^2.0", + "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.10.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2026-01-02T08:56:05+00:00" + }, + { + "name": "mtdowling/jmespath.php", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "files": [ + "src/JmesPath.php" + ], + "psr-4": { + "JmesPath\\": "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" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0" + }, + "time": "2024-09-04T18:46:31+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.11.1", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "f438fcc98f92babee98381d399c65336f3a3827f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/f438fcc98f92babee98381d399c65336f3a3827f", + "reference": "f438fcc98f92babee98381d399c65336f3a3827f", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "<100.0", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.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": "^v3.87.1", + "kylekatarnls/multi-tester": "^2.5.3", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.22", + "phpunit/phpunit": "^10.5.53", + "squizlabs/php_codesniffer": "^3.13.4 || ^4.0.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://carbonphp.github.io/carbon/", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbonphp.github.io/carbon/guide/getting-started/introduction.html", + "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": "2026-01-29T09:26:29+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.5", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002", + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.5" + }, + "require-dev": { + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.39@stable", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "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.5" + }, + "time": "2026-02-23T03:47:12+00:00" + }, + { + "name": "nette/utils", + "version": "v4.1.3", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", + "shasum": "" + }, + "require": { + "php": "8.2 - 8.5" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.5", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", + "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.1-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "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.1.3" + }, + "time": "2026-02-13T03:05:33+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "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.x-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.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "712a31b768f5daea284c2169a7d227031001b9a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/712a31b768f5daea284c2169a7d227031001b9a8", + "reference": "712a31b768f5daea284c2169a7d227031001b9a8", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.4.4 || ^8.0.4" + }, + "require-dev": { + "illuminate/console": "^11.47.0", + "laravel/pint": "^1.27.1", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.3.2", + "phpstan/phpstan": "^1.12.32", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.3.5 || ^8.0.4", + "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": "It's 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.4.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": "2026-02-16T23:10:27+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "1.30.2", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "09cdde5e2f078b9a3358dd217e2c8cb4dac84be2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/09cdde5e2f078b9a3358dd217e2c8cb4dac84be2", + "reference": "09cdde5e2f078b9a3358dd217e2c8cb4dac84be2", + "shasum": "" + }, + "require": { + "composer/pcre": "^1||^2||^3", + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "ezyang/htmlpurifier": "^4.15", + "maennchen/zipstream-php": "^2.1 || ^3.0", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": ">=7.4.0 <8.5.0", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-main", + "doctrine/instantiator": "^1.5", + "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.2", + "mitoteam/jpgraph": "^10.3", + "mpdf/mpdf": "^8.1.1", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.7", + "tecnickcom/tcpdf": "^6.5" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer", + "ext-intl": "PHP Internationalization Functions", + "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + }, + { + "name": "Owen Leibman" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.2" + }, + "time": "2026-01-11T05:58:24+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.5", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "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.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:41:33+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+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.20", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "19678eb6b952a03b8a1d96ecee9edba518bb0373" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/19678eb6b952a03b8a1d96ecee9edba518bb0373", + "reference": "19678eb6b952a03b8a1d96ecee9edba518bb0373", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^8.0 || ^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", + "composer/class-map-generator": "^1.6" + }, + "suggest": { + "composer/class-map-generator": "Improved tab completion performance with better class discovery.", + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "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" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "https://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.20" + }, + "time": "2026-02-11T15:05:28+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.9.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "8429c78ca35a09f27565311b98101e2826affde0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", + "reference": "8429c78ca35a09f27565311b98101e2826affde0", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "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.9.2" + }, + "time": "2025-12-14T04:43:48+00:00" + }, + { + "name": "spatie/db-dumper", + "version": "3.8.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/db-dumper.git", + "reference": "eac3221fbe27fac51f388600d27b67b1b079406e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/eac3221fbe27fac51f388600d27b67b1b079406e", + "reference": "eac3221fbe27fac51f388600d27b67b1b079406e", + "shasum": "" + }, + "require": { + "php": "^8.0", + "symfony/process": "^5.0|^6.0|^7.0|^8.0" + }, + "require-dev": { + "pestphp/pest": "^1.22" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\DbDumper\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Dump databases", + "homepage": "https://github.com/spatie/db-dumper", + "keywords": [ + "database", + "db-dumper", + "dump", + "mysqldump", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/db-dumper/tree/3.8.3" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2026-01-05T16:26:03+00:00" + }, + { + "name": "spatie/laravel-backup", + "version": "9.4.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-backup.git", + "reference": "0dff805039617b4a6f48291cef0697a73bc0392e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/0dff805039617b4a6f48291cef0697a73bc0392e", + "reference": "0dff805039617b4a6f48291cef0697a73bc0392e", + "shasum": "" + }, + "require": { + "ext-zip": "^1.14.0", + "illuminate/console": "^12.40", + "illuminate/contracts": "^12.40", + "illuminate/events": "^12.40", + "illuminate/filesystem": "^12.40", + "illuminate/notifications": "^12.40", + "illuminate/support": "^12.40", + "league/flysystem": "^3.30.2", + "php": "^8.3", + "spatie/db-dumper": "^3.8.1", + "spatie/laravel-package-tools": "^1.92.7", + "spatie/laravel-signal-aware-command": "^2.1", + "spatie/temporary-directory": "^2.3", + "symfony/console": "^7.3.6|^8.0", + "symfony/finder": "^7.3.5|^8.0" + }, + "require-dev": { + "composer-runtime-api": "^2.0", + "ext-pcntl": "*", + "larastan/larastan": "^3.8", + "laravel/slack-notification-channel": "^3.7", + "league/flysystem-aws-s3-v3": "^3.30.1", + "mockery/mockery": "^1.6.12", + "orchestra/testbench": "^10.8", + "pestphp/pest": "^4.1.5", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan-deprecation-rules": "^2.0.3", + "phpstan/phpstan-phpunit": "^2.0.8", + "rector/rector": "^2.2.8" + }, + "suggest": { + "laravel/slack-notification-channel": "Required for sending notifications via Slack" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Backup\\BackupServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Helpers/functions.php" + ], + "psr-4": { + "Spatie\\Backup\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A Laravel package to backup your application", + "homepage": "https://github.com/spatie/laravel-backup", + "keywords": [ + "backup", + "database", + "laravel-backup", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-backup/issues", + "source": "https://github.com/spatie/laravel-backup/tree/9.4.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2026-02-15T19:05:20+00:00" + }, + { + "name": "spatie/laravel-package-tools", + "version": "1.93.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-package-tools.git", + "reference": "0d097bce95b2bf6802fb1d83e1e753b0f5a948e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/0d097bce95b2bf6802fb1d83e1e753b0f5a948e7", + "reference": "0d097bce95b2bf6802fb1d83e1e753b0f5a948e7", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^10.0|^11.0|^12.0|^13.0", + "php": "^8.1" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "orchestra/testbench": "^8.0|^9.2|^10.0|^11.0", + "pestphp/pest": "^2.1|^3.1|^4.0", + "phpunit/php-code-coverage": "^10.0|^11.0|^12.0", + "phpunit/phpunit": "^10.5|^11.5|^12.5", + "spatie/pest-plugin-test-time": "^2.2|^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\LaravelPackageTools\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" + } + ], + "description": "Tools for creating Laravel packages", + "homepage": "https://github.com/spatie/laravel-package-tools", + "keywords": [ + "laravel-package-tools", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-package-tools/issues", + "source": "https://github.com/spatie/laravel-package-tools/tree/1.93.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2026-02-21T12:49:54+00:00" + }, + { + "name": "spatie/laravel-permission", + "version": "6.24.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-permission.git", + "reference": "eefc9d17eba80d023d6bff313f882cb2bcd691a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/eefc9d17eba80d023d6bff313f882cb2bcd691a3", + "reference": "eefc9d17eba80d023d6bff313f882cb2bcd691a3", + "shasum": "" + }, + "require": { + "illuminate/auth": "^8.12|^9.0|^10.0|^11.0|^12.0", + "illuminate/container": "^8.12|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0|^12.0", + "illuminate/database": "^8.12|^9.0|^10.0|^11.0|^12.0", + "php": "^8.0" + }, + "require-dev": { + "laravel/passport": "^11.0|^12.0", + "laravel/pint": "^1.0", + "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.4|^10.1|^11.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Permission\\PermissionServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "6.x-dev", + "dev-master": "6.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\Permission\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Permission handling for Laravel 8.0 and up", + "homepage": "https://github.com/spatie/laravel-permission", + "keywords": [ + "acl", + "laravel", + "permission", + "permissions", + "rbac", + "roles", + "security", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-permission/issues", + "source": "https://github.com/spatie/laravel-permission/tree/6.24.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2026-02-09T21:10:03+00:00" + }, + { + "name": "spatie/laravel-signal-aware-command", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-signal-aware-command.git", + "reference": "54dcc1efd152bfb3eb0faf56a5fc28569b864b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-signal-aware-command/zipball/54dcc1efd152bfb3eb0faf56a5fc28569b864b5d", + "reference": "54dcc1efd152bfb3eb0faf56a5fc28569b864b5d", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^11.0|^12.0|^13.0", + "php": "^8.2", + "spatie/laravel-package-tools": "^1.4.3", + "symfony/console": "^7.0|^8.0" + }, + "require-dev": { + "brianium/paratest": "^6.2|^7.0", + "ext-pcntl": "*", + "nunomaduro/collision": "^5.3|^6.0|^7.0|^8.0", + "orchestra/testbench": "^9.0|^10.0", + "pestphp/pest-plugin-laravel": "^1.3|^2.0|^3.0", + "phpunit/phpunit": "^9.5|^10|^11", + "spatie/laravel-ray": "^1.17" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Signal": "Spatie\\SignalAwareCommand\\Facades\\Signal" + }, + "providers": [ + "Spatie\\SignalAwareCommand\\SignalAwareCommandServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\SignalAwareCommand\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" + } + ], + "description": "Handle signals in artisan commands", + "homepage": "https://github.com/spatie/laravel-signal-aware-command", + "keywords": [ + "laravel", + "laravel-signal-aware-command", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-signal-aware-command/issues", + "source": "https://github.com/spatie/laravel-signal-aware-command/tree/2.1.2" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2026-02-22T08:16:31+00:00" + }, + { + "name": "spatie/temporary-directory", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/temporary-directory.git", + "reference": "662e481d6ec07ef29fd05010433428851a42cd07" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/662e481d6ec07ef29fd05010433428851a42cd07", + "reference": "662e481d6ec07ef29fd05010433428851a42cd07", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\TemporaryDirectory\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily create, use and destroy temporary directories", + "homepage": "https://github.com/spatie/temporary-directory", + "keywords": [ + "php", + "spatie", + "temporary-directory" + ], + "support": { + "issues": "https://github.com/spatie/temporary-directory/issues", + "source": "https://github.com/spatie/temporary-directory/tree/2.3.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2026-01-12T07:42:22+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110", + "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.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-12T15:39:26+00:00" + }, + { + "name": "symfony/console", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "6d643a93b47398599124022eb24d97c153c12f27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/6d643a93b47398599124022eb24d97c153c12f27", + "reference": "6d643a93b47398599124022eb24d97c153c12f27", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2|^8.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|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-25T17:02:47+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "2e7c52c647b406e2107dd867db424a4dbac91864" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/2e7c52c647b406e2107dd867db424a4dbac91864", + "reference": "2e7c52c647b406e2107dd867db424a4dbac91864", + "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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-17T07:53:42+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-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.6.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/error-handler", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/webpack-encore-bundle": "^1.0|^2.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.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-20T16:42:42+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746", + "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|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0|^8.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.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-05T11:45:34+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "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.6-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.6.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/filesystem", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3ebc794fa5315e59fd122561623c2e2e4280538e", + "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "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 basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-25T16:50:00+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/8655bf1076b7a3a346cb11413ffdabff50c7ffcf", + "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-29T09:40:50+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "fd97d5e926e988a363cef56fbbf88c5c528e9065" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/fd97d5e926e988a363cef56fbbf88c5c528e9065", + "reference": "fd97d5e926e988a363cef56fbbf88c5c528e9065", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" + }, + "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|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-21T16:25:55+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "002ac0cf4cd972a7fd0912dcd513a95e8a81ce83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/002ac0cf4cd972a7fd0912dcd513a95e8a81ce83", + "reference": "002ac0cf4cd972a7fd0912dcd513a95e8a81ce83", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.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/flex": "<2.10", + "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|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4.1|^7.0.1|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-26T08:30:57+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b02726f39a20bc65e30364f5c750c4ddbf1f58e9", + "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9", + "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|^8.0", + "symfony/mime": "^7.2|^8.0", + "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|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-25T16:50:00+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "9fc881d95feae4c6c48678cb6372bd8a7ba04f5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/9fc881d95feae4c6c48678cb6372bd8a7ba04f5f", + "reference": "9fc881d95feae4c6c48678cb6372bd8a7ba04f5f", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "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": "^5.2|^6.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" + }, + "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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-05T15:57:06+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.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.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "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.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", + "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.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-27T09:58:17+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "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.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-10T14:38:51+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.33.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.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "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.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "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.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "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.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T08:10:11+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "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.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-08T02:45:35+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "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\\Php84\\": "" + }, + "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.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-24T13:30:11+00:00" + }, + { + "name": "symfony/polyfill-php85", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "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\\Php85\\": "" + }, + "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.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-23T16:12:55+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.33.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.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "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.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "608476f4604102976d687c483ac63a79ba18cc97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", + "reference": "608476f4604102976d687c483ac63a79ba18cc97", + "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.4.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-26T15:07:59+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "238d749c56b804b31a9bf3e26519d93b65a60938" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/238d749c56b804b31a9bf3e26519d93b65a60938", + "reference": "238d749c56b804b31a9bf3e26519d93b65a60938", + "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|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-25T16:50:00+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", + "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.6-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.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:30:57+00:00" + }, + { + "name": "symfony/string", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "9f209231affa85aa930a5e46e6eb03381424b30b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/9f209231affa85aa930a5e46e6eb03381424b30b", + "reference": "9f209231affa85aa930a5e46e6eb03381424b30b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.33", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-09T09:33:46+00:00" + }, + { + "name": "symfony/translation", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "1888cf064399868af3784b9e043240f1d89d25ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/1888cf064399868af3784b9e043240f1d89d25ce", + "reference": "1888cf064399868af3784b9e043240f1d89d25ce", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5.3|^3.3" + }, + "conflict": { + "nikic/php-parser": "<5.0", + "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": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-17T07:53:42+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-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.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/7719ce8aba76be93dfe249192f1fbfa52c588e36", + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.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.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-03T23:30:35+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/045321c440ac18347b136c63d2e9bf28a2dc0291", + "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-15T10:53:20+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.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.4.0" + }, + "time": "2025-12-02T11:56:42+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.3", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "955e7815d677a3eaa7075231212f2110983adecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "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.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:49:13+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" + } + ], + "packages-dev": [ + { + "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": "filp/whoops", + "version": "2.18.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "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.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-08-08T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.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.1.1" + }, + "time": "2025-04-30T06:54:44+00:00" + }, + { + "name": "laravel/pail", + "version": "v1.2.6", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf", + "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0|^12.0|^13.0", + "illuminate/contracts": "^10.24|^11.0|^12.0|^13.0", + "illuminate/log": "^10.24|^11.0|^12.0|^13.0", + "illuminate/process": "^10.24|^11.0|^12.0|^13.0", + "illuminate/support": "^10.24|^11.0|^12.0|^13.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0|^8.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0|^12.0|^13.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.13|^9.17|^10.8|^11.0", + "pestphp/pest": "^2.20|^3.0|^4.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0|^4.0", + "phpstan/phpstan": "^1.12.27", + "symfony/var-dumper": "^6.3|^7.0|^8.0", + "symfony/yaml": "^6.3|^7.0|^8.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": [ + "dev", + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2026-02-09T13:44:54+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.27.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/54cca2de13790570c7b6f0f94f37896bee4abcb5", + "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.93.1", + "illuminate/view": "^12.51.0", + "larastan/larastan": "^3.9.2", + "laravel-zero/framework": "^12.0.5", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^2.3.3", + "pestphp/pest": "^3.8.5" + }, + "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": [ + "dev", + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2026-02-10T20:00:20+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.53.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/e340eaa2bea9b99192570c48ed837155dbf24fbb", + "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0|^8.0", + "symfony/yaml": "^6.0|^7.0|^8.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0|^11.0", + "phpstan/phpstan": "^2.0" + }, + "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": "2026-02-06T12:16:02+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.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "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.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v8.9.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/a1ed3fa530fd60bc515f9303e8520fcb7d4bd935", + "reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.18.4", + "nunomaduro/termwind": "^2.4.0", + "php": "^8.2.0", + "symfony/console": "^7.4.4 || ^8.0.4" + }, + "conflict": { + "laravel/framework": "<11.48.0 || >=14.0.0", + "phpunit/phpunit": "<11.5.50 || >=14.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.8.5", + "larastan/larastan": "^3.9.2", + "laravel/framework": "^11.48.0 || ^12.52.0", + "laravel/pint": "^1.27.1", + "orchestra/testbench-core": "^9.12.0 || ^10.9.0", + "pestphp/pest": "^3.8.5 || ^4.4.1 || ^5.0.0", + "sebastian/environment": "^7.2.1 || ^8.0.3 || ^9.0.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": "2026-02-17T17:33:08+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": "phpunit/php-code-coverage", + "version": "11.0.12", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.7.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.1", + "sebastian/lines-of-code": "^3.0.1", + "sebastian/version": "^5.0.2", + "theseer/tokenizer": "^1.3.1" + }, + "require-dev": { + "phpunit/phpunit": "^11.5.46" + }, + "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.12" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2025-12-24T07:01:01+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/2f3a64888c814fc235386b7387dd5b5ed92ad903", + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903", + "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": "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.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" + } + ], + "time": "2026-02-02T13:52:54+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.55", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/adc7262fccc12de2b30f12a8aa0b33775d814f00", + "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0.12", + "phpunit/php-file-iterator": "^5.1.1", + "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.3", + "sebastian/diff": "^6.0.2", + "sebastian/environment": "^7.2.1", + "sebastian/exporter": "^6.3.2", + "sebastian/global-state": "^7.0.2", + "sebastian/object-enumerator": "^6.0.1", + "sebastian/recursion-context": "^6.0.3", + "sebastian/type": "^5.1.3", + "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.55" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2026-02-18T12:37:06+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.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "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.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-01-24T09:26:40+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.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "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.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" + } + ], + "time": "2025-05-21T11:55:47+00:00" + }, + { + "name": "sebastian/exporter", + "version": "6.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74", + "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.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": "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.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2025-09-24T06:12:51+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.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "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.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-13T04:42:22+00:00" + }, + { + "name": "sebastian/type", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "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.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" + } + ], + "time": "2025-08-09T06:55:48+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.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "58751048de17bae71c5aa0d13cb19d79bca26391" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/58751048de17bae71c5aa0d13cb19d79bca26391", + "reference": "58751048de17bae71c5aa0d13cb19d79bca26391", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.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.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-09T09:33:46+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", + "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.3.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-11-17T20:03:58+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..ed897f7 --- /dev/null +++ b/config/app.php @@ -0,0 +1,234 @@ + env('FORCE_SSL', false), + + /* + |-------------------------------------------------------------------------- + | Application Name + |-------------------------------------------------------------------------- + | + | This value is the name of your application, which will be used when the + | framework needs to place the application's name in a notification or + | other UI elements where an application name needs to be displayed. + | + */ + + 'name' => env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | the application so that it's available within Artisan commands. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'api_url' => env('API_URL', 'http://localhost/api'), + + + /* + |-------------------------------------------------------------------------- + | 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' => env('APP_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', 'pt'), + + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'pt'), + + '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'), + ], + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, // 👈 Importante + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + // App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + // App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => [ + 'App' => Illuminate\Support\Facades\App::class, + 'Arr' => Illuminate\Support\Arr::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Http' => Illuminate\Support\Facades\Http::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Str' => Illuminate\Support\Str::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + ], + + +]; 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/backup.php b/config/backup.php new file mode 100644 index 0000000..3aaefc1 --- /dev/null +++ b/config/backup.php @@ -0,0 +1,341 @@ + [ + /* + * The name of this application. You can use this name to monitor + * the backups. + */ + 'name' => 'laravel-backup', + + 'source' => [ + 'files' => [ + /* + * The list of directories and files that will be included in the backup. + */ + 'include' => [ + // base_path(), + ], + + /* + * These directories and files will be excluded from the backup. + * + * Directories used by the backup process will automatically be excluded. + */ + 'exclude' => [ + // base_path('vendor'), + // base_path('node_modules'), + ], + + /* + * Determines if symlinks should be followed. + */ + 'follow_links' => false, + + /* + * Determines if it should avoid unreadable folders. + */ + 'ignore_unreadable_directories' => false, + + /* + * This path is used to make directories in resulting zip-file relative + * Set to `null` to include complete absolute path + * Example: base_path() + */ + 'relative_path' => null, + ], + + /* + * The names of the connections to the databases that should be backed up + * MySQL, PostgreSQL, SQLite and Mongo databases are supported. + * + * The content of the database dump may be customized for each connection + * by adding a 'dump' key to the connection settings in config/database.php. + * E.g. + * 'mysql' => [ + * ... + * 'dump' => [ + * 'excludeTables' => [ + * 'table_to_exclude_from_backup', + * 'another_table_to_exclude' + * ] + * ], + * ], + * + * If you are using only InnoDB tables on a MySQL server, you can + * also supply the useSingleTransaction option to avoid table locking. + * + * E.g. + * 'mysql' => [ + * ... + * 'dump' => [ + * 'useSingleTransaction' => true, + * ], + * ], + * + * For a complete list of available customization options, see https://github.com/spatie/db-dumper + */ + 'databases' => [ + env('DB_CONNECTION', 'mysql'), + ], + ], + + /* + * The database dump can be compressed to decrease disk space usage. + * + * Out of the box Laravel-backup supplies + * Spatie\DbDumper\Compressors\GzipCompressor::class. + * + * You can also create custom compressor. More info on that here: + * https://github.com/spatie/db-dumper#using-compression + * + * If you do not want any compressor at all, set it to null. + */ + 'database_dump_compressor' => Spatie\DbDumper\Compressors\GzipCompressor::class, + + /* + * If specified, the database dumped file name will contain a timestamp (e.g.: 'Y-m-d-H-i-s'). + */ + 'database_dump_file_timestamp_format' => null, + + /* + * The base of the dump filename, either 'database' or 'connection' + * + * If 'database' (default), the dumped filename will contain the database name. + * If 'connection', the dumped filename will contain the connection name. + */ + 'database_dump_filename_base' => 'database', + + /* + * The file extension used for the database dump files. + * + * If not specified, the file extension will be .archive for MongoDB and .sql for all other databases + * The file extension should be specified without a leading . + */ + 'database_dump_file_extension' => '', + + 'destination' => [ + /* + * The compression algorithm to be used for creating the zip archive. + * + * If backing up only database, you may choose gzip compression for db dump and no compression at zip. + * + * Some common algorithms are listed below: + * ZipArchive::CM_STORE (no compression at all; set 0 as compression level) + * ZipArchive::CM_DEFAULT + * ZipArchive::CM_DEFLATE + * ZipArchive::CM_BZIP2 + * ZipArchive::CM_XZ + * + * For more check https://www.php.net/manual/zip.constants.php and confirm it's supported by your system. + */ + 'compression_method' => ZipArchive::CM_DEFAULT, + + /* + * The compression level corresponding to the used algorithm; an integer between 0 and 9. + * + * Check supported levels for the chosen algorithm, usually 1 means the fastest and weakest compression, + * while 9 the slowest and strongest one. + * + * Setting of 0 for some algorithms may switch to the strongest compression. + */ + 'compression_level' => 9, + + /* + * The filename prefix used for the backup zip file. + */ + 'filename_prefix' => '', + + /* + * The disk names on which the backups will be stored. + */ + 'disks' => [ + env('FILESYSTEM_DISK', 'local'), + ], + ], + + /* + * The directory where the temporary files will be stored. + */ + 'temporary_directory' => storage_path('app/backup-temp'), + + /* + * The password to be used for archive encryption. + * Set to `null` to disable encryption. + */ + 'password' => env('BACKUP_ARCHIVE_PASSWORD'), + + /* + * The encryption algorithm to be used for archive encryption. + * You can set it to `null` or `false` to disable encryption. + * + * When set to 'default', we'll use ZipArchive::EM_AES_256 if it is + * available on your system. + */ + 'encryption' => 'default', + + /* + * The number of attempts, in case the backup command encounters an exception + */ + 'tries' => 1, + + /* + * The number of seconds to wait before attempting a new backup if the previous try failed + * Set to `0` for none + */ + 'retry_delay' => 0, + ], + + /* + * You can get notified when specific events occur. Out of the box you can use 'mail' and 'slack'. + * For Slack you need to install laravel/slack-notification-channel. + * + * You can also use your own notification classes, just make sure the class is named after one of + * the `Spatie\Backup\Notifications\Notifications` classes. + */ + 'notifications' => [ + 'notifications' => [ + \Spatie\Backup\Notifications\Notifications\BackupHasFailedNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFoundNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\CleanupHasFailedNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\BackupWasSuccessfulNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFoundNotification::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessfulNotification::class => ['mail'], + ], + + /* + * Here you can specify the notifiable to which the notifications should be sent. The default + * notifiable will use the variables specified in this config file. + */ + 'notifiable' => \Spatie\Backup\Notifications\Notifiable::class, + + 'mail' => [ + 'to' => ['luismedon@gmail.com'], + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + ], + + 'slack' => [ + 'webhook_url' => '', + + /* + * If this is set to null the default channel of the webhook will be used. + */ + 'channel' => null, + + 'username' => null, + + 'icon' => null, + ], + + 'discord' => [ + 'webhook_url' => '', + + /* + * If this is an empty string, the name field on the webhook will be used. + */ + 'username' => '', + + /* + * If this is an empty string, the avatar on the webhook will be used. + */ + 'avatar_url' => '', + ], + ], + + /* + * Here you can specify which backups should be monitored. + * If a backup does not meet the specified requirements the + * UnHealthyBackupWasFound event will be fired. + */ + 'monitor_backups' => [ + [ + 'name' => 'laravel-backup', + 'disks' => [env('FILESYSTEM_DISK', 'local')], + 'health_checks' => [ + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1, + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000, + ], + ], + + /* + [ + 'name' => 'name of the second app', + 'disks' => ['local', 's3'], + 'health_checks' => [ + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1, + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000, + ], + ], + */ + ], + + 'cleanup' => [ + /* + * The strategy that will be used to cleanup old backups. The default strategy + * will keep all backups for a certain amount of days. After that period only + * a daily backup will be kept. After that period only weekly backups will + * be kept and so on. + * + * No matter how you configure it the default strategy will never + * delete the newest backup. + */ + 'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class, + + 'default_strategy' => [ + /* + * The number of days for which backups must be kept. + */ + 'keep_all_backups_for_days' => 0, + + /* + * After the "keep_all_backups_for_days" period is over, the most recent backup + * of that day will be kept. Older backups within the same day will be removed. + * If you create backups only once a day, no backups will be removed yet. + */ + 'keep_daily_backups_for_days' => 5, + + /* + * After the "keep_daily_backups_for_days" period is over, the most recent backup + * of that week will be kept. Older backups within the same week will be removed. + * If you create backups only once a week, no backups will be removed yet. + */ + 'keep_weekly_backups_for_weeks' => 0, + + /* + * After the "keep_weekly_backups_for_weeks" period is over, the most recent backup + * of that month will be kept. Older backups within the same month will be removed. + */ + 'keep_monthly_backups_for_months' => 0, + + /* + * After the "keep_monthly_backups_for_months" period is over, the most recent backup + * of that year will be kept. Older backups within the same year will be removed. + */ + 'keep_yearly_backups_for_years' => 0, + + /* + * After cleaning up the backups remove the oldest backup until + * this amount of megabytes has been reached. + * Set null for unlimited size. + */ + 'delete_oldest_backups_when_using_more_megabytes_than' => null, + ], + + /* + * The number of attempts, in case the cleanup command encounters an exception + */ + 'tries' => 1, + + /* + * The number of seconds to wait before attempting a new cleanup if the previous try failed + * Set to `0` for none + */ + 'retry_delay' => 0, + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..e040637 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,108 @@ + env('CACHE_DRIVER', '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'), + +]; 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..aa6efbc --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,79 @@ + 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', true), + ], + + + ], + + /* + |-------------------------------------------------------------------------- + | 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/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/permission.php b/config/permission.php new file mode 100644 index 0000000..8e84e9d --- /dev/null +++ b/config/permission.php @@ -0,0 +1,202 @@ + [ + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * Eloquent model should be used to retrieve your permissions. Of course, it + * is often just the "Permission" model but you may use whatever you like. + * + * The model you want to use as a Permission model needs to implement the + * `Spatie\Permission\Contracts\Permission` contract. + */ + + 'permission' => Spatie\Permission\Models\Permission::class, + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your roles. Of course, it + * is often just the "Role" model but you may use whatever you like. + * + * The model you want to use as a Role model needs to implement the + * `Spatie\Permission\Contracts\Role` contract. + */ + + 'role' => Spatie\Permission\Models\Role::class, + + ], + + 'table_names' => [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'roles' => 'roles', + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your permissions. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'permissions' => 'permissions', + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your models permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_permissions' => 'model_has_permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models roles. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_roles' => 'model_has_roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'role_has_permissions' => 'role_has_permissions', + ], + + 'column_names' => [ + /* + * Change this if you want to name the related pivots other than defaults + */ + 'role_pivot_key' => null, // default 'role_id', + 'permission_pivot_key' => null, // default 'permission_id', + + /* + * Change this if you want to name the related model primary key other than + * `model_id`. + * + * For example, this would be nice if your primary keys are all UUIDs. In + * that case, name this `model_uuid`. + */ + + 'model_morph_key' => 'model_id', + + /* + * Change this if you want to use the teams feature and your related model's + * foreign key is other than `team_id`. + */ + + 'team_foreign_key' => 'team_id', + ], + + /* + * When set to true, the method for checking permissions will be registered on the gate. + * Set this to false if you want to implement custom logic for checking permissions. + */ + + 'register_permission_check_method' => true, + + /* + * When set to true, Laravel\Octane\Events\OperationTerminated event listener will be registered + * this will refresh permissions on every TickTerminated, TaskTerminated and RequestTerminated + * NOTE: This should not be needed in most cases, but an Octane/Vapor combination benefited from it. + */ + 'register_octane_reset_listener' => false, + + /* + * Events will fire when a role or permission is assigned/unassigned: + * \Spatie\Permission\Events\RoleAttached + * \Spatie\Permission\Events\RoleDetached + * \Spatie\Permission\Events\PermissionAttached + * \Spatie\Permission\Events\PermissionDetached + * + * To enable, set to true, and then create listeners to watch these events. + */ + 'events_enabled' => false, + + /* + * Teams Feature. + * When set to true the package implements teams using the 'team_foreign_key'. + * If you want the migrations to register the 'team_foreign_key', you must + * set this to true before doing the migration. + * If you already did the migration then you must make a new migration to also + * add 'team_foreign_key' to 'roles', 'model_has_roles', and 'model_has_permissions' + * (view the latest version of this package's migration file) + */ + + 'teams' => false, + + /* + * The class to use to resolve the permissions team id + */ + 'team_resolver' => \Spatie\Permission\DefaultTeamResolver::class, + + /* + * Passport Client Credentials Grant + * When set to true the package will use Passports Client to check permissions + */ + + 'use_passport_client_credentials' => false, + + /* + * When set to true, the required permission names are added to exception messages. + * This could be considered an information leak in some contexts, so the default + * setting is false here for optimum safety. + */ + + 'display_permission_in_exception' => false, + + /* + * When set to true, the required role names are added to exception messages. + * This could be considered an information leak in some contexts, so the default + * setting is false here for optimum safety. + */ + + 'display_role_in_exception' => false, + + /* + * By default wildcard permission lookups are disabled. + * See documentation to understand supported syntax. + */ + + 'enable_wildcard_permission' => false, + + /* + * The class to use for interpreting wildcard permissions. + * If you need to modify delimiters, override the class and specify its name here. + */ + // 'permission.wildcard_permission' => Spatie\Permission\WildcardPermission::class, + + /* Cache-specific settings */ + + 'cache' => [ + + /* + * By default all permissions are cached for 24 hours to speed up performance. + * When permissions or roles are updated the cache is flushed automatically. + */ + + 'expiration_time' => \DateInterval::createFromDateString('24 hours'), + + /* + * The cache key used to store all permissions. + */ + + 'key' => 'spatie.permission.cache', + + /* + * You may optionally indicate a specific cache driver to use for permission and + * role caching using any of the `store` drivers listed in the cache.php config + * file. Using 'default' here means to use the `default` set in cache.php. + */ + + 'store' => 'default', + ], +]; 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/sanctum.php b/config/sanctum.php new file mode 100644 index 0000000..9209788 --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,84 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort(), + // Sanctum::currentRequestHost(), + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. This will override any values set in the token's + | "expires_at" attribute, but first-party sessions are not affected. + | + */ + + 'expiration' => 20, + + /* + |-------------------------------------------------------------------------- + | Token Prefix + |-------------------------------------------------------------------------- + | + | Sanctum can prefix new tokens in order to take advantage of numerous + | security scanning initiatives maintained by open source platforms + | that notify developers if they commit tokens into repositories. + | + | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning + | + */ + + 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, + 'encrypt_cookies' => Illuminate\Cookie\Middleware\EncryptCookies::class, + 'validate_csrf_token' => Illuminate\Foundation\Http\Middleware\ValidateCsrfToken::class, + ], + +]; 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/config/telescope.php b/config/telescope.php new file mode 100644 index 0000000..8e6fd1c --- /dev/null +++ b/config/telescope.php @@ -0,0 +1,206 @@ + env('TELESCOPE_ENABLED', true), + + /* + |-------------------------------------------------------------------------- + | Telescope Domain + |-------------------------------------------------------------------------- + | + | This is the subdomain where Telescope will be accessible from. If the + | setting is null, Telescope will reside under the same domain as the + | application. Otherwise, this value will be used as the subdomain. + | + */ + + 'domain' => env('TELESCOPE_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | Telescope Path + |-------------------------------------------------------------------------- + | + | This is the URI path where Telescope will be accessible from. Feel free + | to change this path to anything you like. Note that the URI will not + | affect the paths of its internal API that aren't exposed to users. + | + */ + + 'path' => env('TELESCOPE_PATH', 'telescope'), + + /* + |-------------------------------------------------------------------------- + | Telescope Storage Driver + |-------------------------------------------------------------------------- + | + | This configuration options determines the storage driver that will + | be used to store Telescope's data. In addition, you may set any + | custom options as needed by the particular driver you choose. + | + */ + + 'driver' => env('TELESCOPE_DRIVER', 'database'), + + 'storage' => [ + 'database' => [ + 'connection' => env('DB_CONNECTION', 'mysql'), + 'chunk' => 1000, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Telescope Queue + |-------------------------------------------------------------------------- + | + | This configuration options determines the queue connection and queue + | which will be used to process ProcessPendingUpdate jobs. This can + | be changed if you would prefer to use a non-default connection. + | + */ + + 'queue' => [ + 'connection' => env('TELESCOPE_QUEUE_CONNECTION', null), + 'queue' => env('TELESCOPE_QUEUE', null), + 'delay' => env('TELESCOPE_QUEUE_DELAY', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Telescope Route Middleware + |-------------------------------------------------------------------------- + | + | These middleware will be assigned to every Telescope route, giving you + | the chance to add your own middleware to this list or change any of + | the existing middleware. Or, you can simply stick with this list. + | + */ + + 'middleware' => [ + 'web', + Authorize::class, + ], + + /* + |-------------------------------------------------------------------------- + | Allowed / Ignored Paths & Commands + |-------------------------------------------------------------------------- + | + | The following array lists the URI paths and Artisan commands that will + | not be watched by Telescope. In addition to this list, some Laravel + | commands, like migrations and queue commands, are always ignored. + | + */ + + 'only_paths' => [ + // 'api/*' + ], + + 'ignore_paths' => [ + 'livewire*', + 'nova-api*', + 'pulse*', + ], + + 'ignore_commands' => [ + // + ], + + /* + |-------------------------------------------------------------------------- + | Telescope Watchers + |-------------------------------------------------------------------------- + | + | The following array lists the "watchers" that will be registered with + | Telescope. The watchers gather the application's profile data when + | a request or task is executed. Feel free to customize this list. + | + */ + + 'watchers' => [ + Watchers\BatchWatcher::class => env('TELESCOPE_BATCH_WATCHER', true), + + Watchers\CacheWatcher::class => [ + 'enabled' => env('TELESCOPE_CACHE_WATCHER', true), + 'hidden' => [], + ], + + Watchers\ClientRequestWatcher::class => env('TELESCOPE_CLIENT_REQUEST_WATCHER', true), + + Watchers\CommandWatcher::class => [ + 'enabled' => env('TELESCOPE_COMMAND_WATCHER', true), + 'ignore' => [], + ], + + Watchers\DumpWatcher::class => [ + 'enabled' => env('TELESCOPE_DUMP_WATCHER', true), + 'always' => env('TELESCOPE_DUMP_WATCHER_ALWAYS', false), + ], + + Watchers\EventWatcher::class => [ + 'enabled' => env('TELESCOPE_EVENT_WATCHER', true), + 'ignore' => [], + ], + + Watchers\ExceptionWatcher::class => env('TELESCOPE_EXCEPTION_WATCHER', true), + + Watchers\GateWatcher::class => [ + 'enabled' => env('TELESCOPE_GATE_WATCHER', true), + 'ignore_abilities' => [], + 'ignore_packages' => true, + 'ignore_paths' => [], + ], + + Watchers\JobWatcher::class => env('TELESCOPE_JOB_WATCHER', true), + + Watchers\LogWatcher::class => [ + 'enabled' => env('TELESCOPE_LOG_WATCHER', true), + 'level' => 'error', + ], + + Watchers\MailWatcher::class => env('TELESCOPE_MAIL_WATCHER', true), + + Watchers\ModelWatcher::class => [ + 'enabled' => env('TELESCOPE_MODEL_WATCHER', true), + 'events' => ['eloquent.*'], + 'hydrations' => true, + ], + + Watchers\NotificationWatcher::class => env('TELESCOPE_NOTIFICATION_WATCHER', true), + + Watchers\QueryWatcher::class => [ + 'enabled' => env('TELESCOPE_QUERY_WATCHER', true), + 'ignore_packages' => true, + 'ignore_paths' => [], + 'slow' => 100, + ], + + Watchers\RedisWatcher::class => env('TELESCOPE_REDIS_WATCHER', true), + + Watchers\RequestWatcher::class => [ + 'enabled' => env('TELESCOPE_REQUEST_WATCHER', true), + 'size_limit' => env('TELESCOPE_RESPONSE_SIZE_LIMIT', 64), + 'ignore_http_methods' => [], + 'ignore_status_codes' => [], + ], + + Watchers\ScheduleWatcher::class => env('TELESCOPE_SCHEDULE_WATCHER', true), + Watchers\ViewWatcher::class => env('TELESCOPE_VIEW_WATCHER', true), + ], +]; 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..05fb5d9 --- /dev/null +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -0,0 +1,49 @@ +id(); + $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->foreignId('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_03_23_112822_create_clients_table.php b/database/migrations/2025_03_23_112822_create_clients_table.php new file mode 100644 index 0000000..8a88b51 --- /dev/null +++ b/database/migrations/2025_03_23_112822_create_clients_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('name'); + $table->string('tax_number'); + $table->string('address'); + $table->string('phone'); + $table->string('email'); + $table->foreignId('seller_id')->constrained('users')->onDelete('cascade'); + $table->unsignedBigInteger('receive_invoice_id')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('clients'); + } +}; diff --git a/database/migrations/2025_03_23_113932_create_receive_invoice_types_table.php b/database/migrations/2025_03_23_113932_create_receive_invoice_types_table.php new file mode 100644 index 0000000..eb0a21b --- /dev/null +++ b/database/migrations/2025_03_23_113932_create_receive_invoice_types_table.php @@ -0,0 +1,28 @@ +id(); + $table->string('description'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('receive_invoice_types'); + } +}; diff --git a/database/migrations/2025_03_23_114136_create_client_foreignkeys.php b/database/migrations/2025_03_23_114136_create_client_foreignkeys.php new file mode 100644 index 0000000..3069a43 --- /dev/null +++ b/database/migrations/2025_03_23_114136_create_client_foreignkeys.php @@ -0,0 +1,26 @@ +foreign('receive_invoice_id')->references('id')->on('receive_invoice_types')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('client_foreignkeys'); + } +}; diff --git a/database/migrations/2025_03_26_155735_add_column_status_to_clients.php b/database/migrations/2025_03_26_155735_add_column_status_to_clients.php new file mode 100644 index 0000000..38ca53f --- /dev/null +++ b/database/migrations/2025_03_26_155735_add_column_status_to_clients.php @@ -0,0 +1,28 @@ +enum('status', ['A', 'I'])->default('A')->after('seller_id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('clients', function (Blueprint $table) { + $table->dropColumn('status'); + }); + } +}; diff --git a/database/migrations/2025_03_27_152255_create_c_p_e_s_table.php b/database/migrations/2025_03_27_152255_create_c_p_e_s_table.php new file mode 100644 index 0000000..86e965e --- /dev/null +++ b/database/migrations/2025_03_27_152255_create_c_p_e_s_table.php @@ -0,0 +1,64 @@ +id(); + $table->string('description')->unique(); + $table->timestamps(); + }); + + Schema::create('contract_status', function (Blueprint $table) { + $table->id(); + $table->string('code'); + $table->string('description')->unique(); + $table->timestamps(); + }); + + Schema::create('cpe', function (Blueprint $table) { + $table->id(); + $table->unsignedBigInteger('client_id'); + $table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade'); + + $table->decimal('pvp', 10, 2); + $table->decimal('net', 10, 2); + $table->decimal('power', 8, 2); + $table->string('tier'); + $table->decimal('annual_consumption', 8, 2); + $table->unsignedBigInteger('contract_type_id'); + $table->foreign('contract_type_id')->references('id')->on('contract_types')->onDelete('cascade'); + + $table->date('validity'); + $table->date('activation_date'); + $table->date('renewal_date')->nullable(); + $table->text('notes')->nullable(); + $table->date('payment_date')->nullable(); + $table->string('previous_supplier'); + + $table->unsignedBigInteger('status_id'); + $table->foreign('status_id')->references('id')->on('contract_status')->onDelete('cascade'); + + $table->timestamps(); + }); + + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('contract_status'); + Schema::dropIfExists('contract_types'); + Schema::dropIfExists('cpe'); + } +}; diff --git a/database/migrations/2025_04_03_101233_add_client_type_to_clients_table.php b/database/migrations/2025_04_03_101233_add_client_type_to_clients_table.php new file mode 100644 index 0000000..540308a --- /dev/null +++ b/database/migrations/2025_04_03_101233_add_client_type_to_clients_table.php @@ -0,0 +1,28 @@ +enum('client_type', ['business', 'domestic'])->default('domestic')->after('email'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('clients', function (Blueprint $table) { + $table->dropColumn('client_type'); + }); + } +}; diff --git a/database/migrations/2025_04_03_143359_create_cpe_payments_table.php b/database/migrations/2025_04_03_143359_create_cpe_payments_table.php new file mode 100644 index 0000000..7ff85e4 --- /dev/null +++ b/database/migrations/2025_04_03_143359_create_cpe_payments_table.php @@ -0,0 +1,33 @@ +id(); + $table->unsignedBigInteger('cpe_id'); + $table->foreign('cpe_id')->references('id')->on('cpe')->onDelete('cascade'); + $table->decimal('amount', 10, 2); + $table->date('reference_period'); + $table->date('payment_date'); + $table->enum('status', ['pending', 'paid', 'overdue'])->default('pending'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cpe_payments'); + } +}; diff --git a/database/migrations/2025_04_10_191159_create_telescope_entries_table.php b/database/migrations/2025_04_10_191159_create_telescope_entries_table.php new file mode 100644 index 0000000..700a83f --- /dev/null +++ b/database/migrations/2025_04_10_191159_create_telescope_entries_table.php @@ -0,0 +1,70 @@ +getConnection()); + + $schema->create('telescope_entries', function (Blueprint $table) { + $table->bigIncrements('sequence'); + $table->uuid('uuid'); + $table->uuid('batch_id'); + $table->string('family_hash')->nullable(); + $table->boolean('should_display_on_index')->default(true); + $table->string('type', 20); + $table->longText('content'); + $table->dateTime('created_at')->nullable(); + + $table->unique('uuid'); + $table->index('batch_id'); + $table->index('family_hash'); + $table->index('created_at'); + $table->index(['type', 'should_display_on_index']); + }); + + $schema->create('telescope_entries_tags', function (Blueprint $table) { + $table->uuid('entry_uuid'); + $table->string('tag'); + + $table->primary(['entry_uuid', 'tag']); + $table->index('tag'); + + $table->foreign('entry_uuid') + ->references('uuid') + ->on('telescope_entries') + ->onDelete('cascade'); + }); + + $schema->create('telescope_monitoring', function (Blueprint $table) { + $table->string('tag')->primary(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + $schema = Schema::connection($this->getConnection()); + + $schema->dropIfExists('telescope_entries_tags'); + $schema->dropIfExists('telescope_entries'); + $schema->dropIfExists('telescope_monitoring'); + } +}; diff --git a/database/migrations/2025_04_10_192052_add_status_index_to_clients_table.php b/database/migrations/2025_04_10_192052_add_status_index_to_clients_table.php new file mode 100644 index 0000000..a950499 --- /dev/null +++ b/database/migrations/2025_04_10_192052_add_status_index_to_clients_table.php @@ -0,0 +1,28 @@ +index('status'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('clients', function (Blueprint $table) { + $table->dropIndex(['status']); + }); + } +}; diff --git a/database/migrations/2025_04_11_181702_add_notes_and_contact_info_to_clients_table.php b/database/migrations/2025_04_11_181702_add_notes_and_contact_info_to_clients_table.php new file mode 100644 index 0000000..ab77465 --- /dev/null +++ b/database/migrations/2025_04_11_181702_add_notes_and_contact_info_to_clients_table.php @@ -0,0 +1,30 @@ +text('contact_info')->nullable()->after('status'); + $table->text('notes')->nullable()->after('status'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('clients', function (Blueprint $table) { + $table->dropColumn('contact_info'); + $table->dropColumn('notes'); + }); + } +}; diff --git a/database/migrations/2025_04_19_175820_create_payment_methods_table.php b/database/migrations/2025_04_19_175820_create_payment_methods_table.php new file mode 100644 index 0000000..5455729 --- /dev/null +++ b/database/migrations/2025_04_19_175820_create_payment_methods_table.php @@ -0,0 +1,29 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('payment_methods'); + } +}; diff --git a/database/migrations/2025_04_19_175854_add_payment_method_id_to_cpe_table.php b/database/migrations/2025_04_19_175854_add_payment_method_id_to_cpe_table.php new file mode 100644 index 0000000..668d132 --- /dev/null +++ b/database/migrations/2025_04_19_175854_add_payment_method_id_to_cpe_table.php @@ -0,0 +1,35 @@ +unsignedBigInteger('payment_method_id')->nullable()->after('net'); + + $table->foreign('payment_method_id') + ->references('id') + ->on('payment_methods') + ->onDelete('restrict'); + }); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('cpe', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2025_04_19_180919_add_icon_to_payment_methods_table.php b/database/migrations/2025_04_19_180919_add_icon_to_payment_methods_table.php new file mode 100644 index 0000000..a9c1dbc --- /dev/null +++ b/database/migrations/2025_04_19_180919_add_icon_to_payment_methods_table.php @@ -0,0 +1,28 @@ +string('icon')->nullable()->after('name'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('payment_methods', function (Blueprint $table) { + $table->dropColumn('icon'); + }); + } +}; diff --git a/database/migrations/2025_04_23_104031_create_contracts_table.php b/database/migrations/2025_04_23_104031_create_contracts_table.php new file mode 100644 index 0000000..70a6667 --- /dev/null +++ b/database/migrations/2025_04_23_104031_create_contracts_table.php @@ -0,0 +1,42 @@ +id(); + $table->foreignId('client_id')->constrained(); + $table->enum('type', ['cpe', 'cpi']); + $table->decimal('pvp', 10, 2); + $table->decimal('net', 10, 2); + $table->decimal('power', 10, 2); + $table->integer('annual_consumption'); + $table->string('tier')->nullable(); + $table->foreignId('contract_type_id')->constrained(); + $table->date('validity')->nullable(); + $table->date('activation_date')->nullable(); + $table->string('previous_supplier')->nullable(); + $table->foreignId('status_id')->constrained('contract_status'); + $table->decimal('commission_rate', 5, 2)->default(0); + $table->text('notes')->nullable(); + $table->timestamps(); + }); + } + + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('contracts'); + } +}; diff --git a/database/migrations/2025_04_23_104100_create_payments_table.php b/database/migrations/2025_04_23_104100_create_payments_table.php new file mode 100644 index 0000000..1365a0c --- /dev/null +++ b/database/migrations/2025_04_23_104100_create_payments_table.php @@ -0,0 +1,33 @@ +id(); + $table->foreignId('contract_id')->constrained()->onDelete('cascade'); + $table->decimal('amount', 10, 2); + $table->date('reference_period'); + $table->date('payment_date')->nullable(); + $table->enum('status', ['pending', 'paid', 'overdue']); + $table->timestamps(); + }); + } + + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('payments'); + } +}; diff --git a/database/migrations/2025_04_23_105408_drop_old_cpe_cpi_tables.php b/database/migrations/2025_04_23_105408_drop_old_cpe_cpi_tables.php new file mode 100644 index 0000000..cacb058 --- /dev/null +++ b/database/migrations/2025_04_23_105408_drop_old_cpe_cpi_tables.php @@ -0,0 +1,25 @@ +engine('InnoDB'); + $table->bigIncrements('id'); // permission id + $table->string('name'); // For MyISAM use string('name', 225); // (or 166 for InnoDB with Redundant/Compact row format) + $table->string('guard_name'); // For MyISAM use string('guard_name', 25); + $table->timestamps(); + + $table->unique(['name', 'guard_name']); + }); + + Schema::create($tableNames['roles'], static function (Blueprint $table) use ($teams, $columnNames) { + // $table->engine('InnoDB'); + $table->bigIncrements('id'); // role id + if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing + $table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable(); + $table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index'); + } + $table->string('name'); // For MyISAM use string('name', 225); // (or 166 for InnoDB with Redundant/Compact row format) + $table->string('guard_name'); // For MyISAM use string('guard_name', 25); + $table->timestamps(); + if ($teams || config('permission.testing')) { + $table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']); + } else { + $table->unique(['name', 'guard_name']); + } + }); + + Schema::create($tableNames['model_has_permissions'], static function (Blueprint $table) use ($tableNames, $columnNames, $pivotPermission, $teams) { + $table->unsignedBigInteger($pivotPermission); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index'); + + $table->foreign($pivotPermission) + ->references('id') // permission id + ->on($tableNames['permissions']) + ->onDelete('cascade'); + if ($teams) { + $table->unsignedBigInteger($columnNames['team_foreign_key']); + $table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index'); + + $table->primary([$columnNames['team_foreign_key'], $pivotPermission, $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary'); + } else { + $table->primary([$pivotPermission, $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary'); + } + + }); + + Schema::create($tableNames['model_has_roles'], static function (Blueprint $table) use ($tableNames, $columnNames, $pivotRole, $teams) { + $table->unsignedBigInteger($pivotRole); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index'); + + $table->foreign($pivotRole) + ->references('id') // role id + ->on($tableNames['roles']) + ->onDelete('cascade'); + if ($teams) { + $table->unsignedBigInteger($columnNames['team_foreign_key']); + $table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index'); + + $table->primary([$columnNames['team_foreign_key'], $pivotRole, $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary'); + } else { + $table->primary([$pivotRole, $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary'); + } + }); + + Schema::create($tableNames['role_has_permissions'], static function (Blueprint $table) use ($tableNames, $pivotRole, $pivotPermission) { + $table->unsignedBigInteger($pivotPermission); + $table->unsignedBigInteger($pivotRole); + + $table->foreign($pivotPermission) + ->references('id') // permission id + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->foreign($pivotRole) + ->references('id') // role id + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary([$pivotPermission, $pivotRole], 'role_has_permissions_permission_id_role_id_primary'); + }); + + app('cache') + ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null) + ->forget(config('permission.cache.key')); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + $tableNames = config('permission.table_names'); + + if (empty($tableNames)) { + throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.'); + } + + Schema::drop($tableNames['role_has_permissions']); + Schema::drop($tableNames['model_has_roles']); + Schema::drop($tableNames['model_has_permissions']); + Schema::drop($tableNames['roles']); + Schema::drop($tableNames['permissions']); + } +}; diff --git a/database/migrations/2025_04_30_134322_add_description_to_permissions_table.php b/database/migrations/2025_04_30_134322_add_description_to_permissions_table.php new file mode 100644 index 0000000..53f5a98 --- /dev/null +++ b/database/migrations/2025_04_30_134322_add_description_to_permissions_table.php @@ -0,0 +1,28 @@ +string('description')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('permissions', function (Blueprint $table) { + $table->dropColumn('description'); + }); + } +}; diff --git a/database/migrations/2025_04_30_153303_add_description_to_roles_table.php b/database/migrations/2025_04_30_153303_add_description_to_roles_table.php new file mode 100644 index 0000000..e2c04eb --- /dev/null +++ b/database/migrations/2025_04_30_153303_add_description_to_roles_table.php @@ -0,0 +1,28 @@ +string('description')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('roles', function (Blueprint $table) { + $table->dropColumn('description'); + }); + } +}; diff --git a/database/migrations/2025_05_28_075006_create_client_types_table.php b/database/migrations/2025_05_28_075006_create_client_types_table.php new file mode 100644 index 0000000..2854589 --- /dev/null +++ b/database/migrations/2025_05_28_075006_create_client_types_table.php @@ -0,0 +1,30 @@ +id(); + $table->string('description'); + $table->string('icon')->nullable(); + $table->string('color')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('client_types'); + } +}; diff --git a/database/migrations/2025_05_28_075025_update_clients_table_with_client_type_id.php b/database/migrations/2025_05_28_075025_update_clients_table_with_client_type_id.php new file mode 100644 index 0000000..a9f5a0c --- /dev/null +++ b/database/migrations/2025_05_28_075025_update_clients_table_with_client_type_id.php @@ -0,0 +1,32 @@ +unsignedBigInteger('client_type_id')->nullable()->after('id'); + + // Se quiser remover o campo antigo: + // $table->dropColumn('client_type'); + + $table->foreign('client_type_id')->references('id')->on('client_types')->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2025_05_28_075243_remove_client_type_column_from_clients_table.php b/database/migrations/2025_05_28_075243_remove_client_type_column_from_clients_table.php new file mode 100644 index 0000000..59ebbce --- /dev/null +++ b/database/migrations/2025_05_28_075243_remove_client_type_column_from_clients_table.php @@ -0,0 +1,32 @@ +dropColumn('client_type'); + }); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('clients', function (Blueprint $table) { + Schema::table('clients', function (Blueprint $table) { + $table->string('client_type')->nullable(); + }); + }); + } +}; diff --git a/database/migrations/2025_06_02_184902_create_power_tiers_table.php b/database/migrations/2025_06_02_184902_create_power_tiers_table.php new file mode 100644 index 0000000..61f0d01 --- /dev/null +++ b/database/migrations/2025_06_02_184902_create_power_tiers_table.php @@ -0,0 +1,28 @@ +id(); + $table->string('name')->unique(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('power_tiers'); + } +}; diff --git a/database/migrations/2025_06_02_185651_update_contracts_table_for_new_fields.php b/database/migrations/2025_06_02_185651_update_contracts_table_for_new_fields.php new file mode 100644 index 0000000..5474404 --- /dev/null +++ b/database/migrations/2025_06_02_185651_update_contracts_table_for_new_fields.php @@ -0,0 +1,93 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + + Schema::table('contracts', function (Blueprint $table) { + // DROP colunas obsoletas + if (Schema::hasColumn('contracts', 'pvp')) { + $table->dropColumn('pvp'); + } + if (Schema::hasColumn('contracts', 'net')) { + $table->dropColumn('net'); + } + if (Schema::hasColumn('contracts', 'power')) { + $table->dropColumn('power'); + } + if (Schema::hasColumn('contracts', 'previous_supplier')) { + $table->dropColumn('previous_supplier'); + } + + // Somente adiciona se não existir + if (!Schema::hasColumn('contracts', 'supply_type')) { + $table->enum('supply_type', ['cpe', 'cui'])->after('client_id'); + } + + if (!Schema::hasColumn('contracts', 'supply_address')) { + $table->string('supply_address')->nullable()->after('supply_type'); + } + + if (!Schema::hasColumn('contracts', 'power_tier_id')) { + $table->foreignId('power_tier_id')->nullable()->constrained()->after('annual_consumption'); + } + + if (!Schema::hasColumn('contracts', 'payment_method_id')) { + $table->foreignId('payment_method_id')->nullable()->constrained()->after('contract_type_id'); + } + + if (!Schema::hasColumn('contracts', 'delivery_method')) { + $table->enum('delivery_method', ['correio', 'email'])->nullable()->after('payment_method_id'); + } + + if (!Schema::hasColumn('contracts', 'delivery_email')) { + $table->string('delivery_email')->nullable()->after('delivery_method'); + } + + if (!Schema::hasColumn('contracts', 'contract_date')) { + $table->date('contract_date')->nullable()->after('validity'); + } + + if (!Schema::hasColumn('contracts', 'previous_supplier_id')) { + $table->foreignId('previous_supplier_id')->nullable()->constrained('suppliers')->after('contract_date'); + } + + if (!Schema::hasColumn('contracts', 'new_supplier_id')) { + $table->foreignId('new_supplier_id')->nullable()->constrained('suppliers')->after('previous_supplier_id'); + } + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + + Schema::dropIfExists('suppliers'); + Schema::table('contracts', function (Blueprint $table) { + // ROLLBACK: Recriar colunas removidas + $table->decimal('pvp', 10, 2)->nullable(); + $table->decimal('net', 10, 2)->nullable(); + $table->decimal('power', 10, 2)->nullable(); + $table->string('previous_supplier')->nullable(); + + // Remover novas colunas + $table->dropForeign(['power_tier_id']); + $table->dropColumn(['supply_type', 'supply_address', 'power_tier_id', 'payment_method_id', 'delivery_method', 'delivery_email', 'contract_date', 'previous_supplier_id', 'new_supplier_id']); + }); + } +}; diff --git a/database/migrations/2025_06_04_080623_add_seller_id_to_contracts_table.php b/database/migrations/2025_06_04_080623_add_seller_id_to_contracts_table.php new file mode 100644 index 0000000..23b4eea --- /dev/null +++ b/database/migrations/2025_06_04_080623_add_seller_id_to_contracts_table.php @@ -0,0 +1,30 @@ +unsignedBigInteger('seller_id')->nullable()->after('client_id'); + $table->foreign('seller_id')->references('id')->on('users')->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->dropForeign(['seller_id']); + $table->dropColumn('seller_id'); + }); + } +}; diff --git a/database/migrations/2025_06_06_083053_add_financial_fields_to_contracts_table.php b/database/migrations/2025_06_06_083053_add_financial_fields_to_contracts_table.php new file mode 100644 index 0000000..bb9a8e2 --- /dev/null +++ b/database/migrations/2025_06_06_083053_add_financial_fields_to_contracts_table.php @@ -0,0 +1,30 @@ +decimal('contract_value', 10, 2)->nullable()->after('client_id'); + $table->decimal('commission_value', 10, 2)->nullable()->after('contract_value'); + $table->decimal('profit_value', 10, 2)->nullable()->after('commission_value'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->dropColumn(['contract_value', 'commission_value', 'profit_value']); + }); + } +}; diff --git a/database/migrations/2025_06_12_143226_rename_tier_to_code_in_contracts_table.php b/database/migrations/2025_06_12_143226_rename_tier_to_code_in_contracts_table.php new file mode 100644 index 0000000..b994593 --- /dev/null +++ b/database/migrations/2025_06_12_143226_rename_tier_to_code_in_contracts_table.php @@ -0,0 +1,28 @@ +renameColumn('tier', 'code'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->renameColumn('code', 'tier'); + }); + } +}; diff --git a/database/migrations/2025_06_12_144037_create_typologies_table.php b/database/migrations/2025_06_12_144037_create_typologies_table.php new file mode 100644 index 0000000..c9acb09 --- /dev/null +++ b/database/migrations/2025_06_12_144037_create_typologies_table.php @@ -0,0 +1,29 @@ +id(); + $table->string('code')->unique(); + $table->string('description'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('typologies'); + } +}; diff --git a/database/migrations/2025_06_12_144056_add_typology_id_to_contracts_table.php b/database/migrations/2025_06_12_144056_add_typology_id_to_contracts_table.php new file mode 100644 index 0000000..c2f965a --- /dev/null +++ b/database/migrations/2025_06_12_144056_add_typology_id_to_contracts_table.php @@ -0,0 +1,29 @@ +foreignId('typology_id')->nullable()->constrained('typologies')->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->dropForeign(['typology_id']); + $table->dropColumn('typology_id'); + }); + } +}; diff --git a/database/migrations/2025_06_12_144336_drop_code_from_typologies_table.php b/database/migrations/2025_06_12_144336_drop_code_from_typologies_table.php new file mode 100644 index 0000000..8a043ac --- /dev/null +++ b/database/migrations/2025_06_12_144336_drop_code_from_typologies_table.php @@ -0,0 +1,28 @@ +dropColumn('code'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('typologies', function (Blueprint $table) { + $table->string('code')->unique()->nullable(); + }); + } +}; diff --git a/database/migrations/2025_06_12_160216_remove_receive_invoice_id_from_clients_table.php b/database/migrations/2025_06_12_160216_remove_receive_invoice_id_from_clients_table.php new file mode 100644 index 0000000..9167c29 --- /dev/null +++ b/database/migrations/2025_06_12_160216_remove_receive_invoice_id_from_clients_table.php @@ -0,0 +1,27 @@ +dropForeign(['receive_invoice_id']); + $table->dropColumn('receive_invoice_id'); + }); + } + + public function down(): void + { + Schema::table('clients', function (Blueprint $table) { + $table->unsignedBigInteger('receive_invoice_id')->nullable()->after('contact_info'); + + $table->foreign('receive_invoice_id') + ->references('id') + ->on('receive_invoice_types') + ->onDelete('cascade'); + }); + } +}; diff --git a/database/migrations/2025_06_20_132113_create_ciu_tiers_table.php b/database/migrations/2025_06_20_132113_create_ciu_tiers_table.php new file mode 100644 index 0000000..f0639a6 --- /dev/null +++ b/database/migrations/2025_06_20_132113_create_ciu_tiers_table.php @@ -0,0 +1,28 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cui_tiers'); + } +}; diff --git a/database/migrations/2025_06_20_133448_add_ciu_tier_id_to_contracts_table.php b/database/migrations/2025_06_20_133448_add_ciu_tier_id_to_contracts_table.php new file mode 100644 index 0000000..c128335 --- /dev/null +++ b/database/migrations/2025_06_20_133448_add_ciu_tier_id_to_contracts_table.php @@ -0,0 +1,23 @@ +unsignedBigInteger('cui_tier_id')->nullable()->after('power_tier_id'); + $table->foreign('cui_tier_id')->references('id')->on('cui_tiers')->onDelete('set null'); + }); + } + + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->dropForeign(['cui_tier_id']); + $table->dropColumn('cui_tier_id'); + }); + } +}; diff --git a/database/migrations/2025_06_23_192219_add_status_to_resources_tables.php b/database/migrations/2025_06_23_192219_add_status_to_resources_tables.php new file mode 100644 index 0000000..18125d3 --- /dev/null +++ b/database/migrations/2025_06_23_192219_add_status_to_resources_tables.php @@ -0,0 +1,53 @@ +char('status', 1)->default('A')->after('id'); + }); + + Schema::table('contract_types', function (Blueprint $table) { + $table->char('status', 1)->default('A')->after('id'); + }); + + Schema::table('payment_methods', function (Blueprint $table) { + $table->char('status', 1)->default('A')->after('id'); + }); + + Schema::table('typologies', function (Blueprint $table) { + $table->char('status', 1)->default('A')->after('id'); + }); + + Schema::table('cui_tiers', function (Blueprint $table) { + $table->char('status', 1)->default('A')->after('id'); + }); + } + + public function down(): void + { + Schema::table('power_tiers', function (Blueprint $table) { + $table->dropColumn('status'); + }); + + Schema::table('contract_types', function (Blueprint $table) { + $table->dropColumn('status'); + }); + + Schema::table('payment_methods', function (Blueprint $table) { + $table->dropColumn('status'); + }); + + Schema::table('typologies', function (Blueprint $table) { + $table->dropColumn('status'); + }); + + Schema::table('cui_tiers', function (Blueprint $table) { + $table->dropColumn('status'); + }); + } +}; diff --git a/database/migrations/2025_06_23_192618_add_status_to_suppliers.php b/database/migrations/2025_06_23_192618_add_status_to_suppliers.php new file mode 100644 index 0000000..a565a1c --- /dev/null +++ b/database/migrations/2025_06_23_192618_add_status_to_suppliers.php @@ -0,0 +1,28 @@ +char('status', 1)->default('A')->after('id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('suppliers', function (Blueprint $table) { + $table->dropColumn('status'); + }); + } +}; diff --git a/database/migrations/2025_06_25_110317_add_can_login_to_users_table.php b/database/migrations/2025_06_25_110317_add_can_login_to_users_table.php new file mode 100644 index 0000000..bea0118 --- /dev/null +++ b/database/migrations/2025_06_25_110317_add_can_login_to_users_table.php @@ -0,0 +1,28 @@ + boolean('can_login')->default(true); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('can_login'); + }); + } +}; diff --git a/database/migrations/2025_06_25_130953_make_annual_consumption_nullable_in_contracts_table.php b/database/migrations/2025_06_25_130953_make_annual_consumption_nullable_in_contracts_table.php new file mode 100644 index 0000000..815181a --- /dev/null +++ b/database/migrations/2025_06_25_130953_make_annual_consumption_nullable_in_contracts_table.php @@ -0,0 +1,28 @@ +decimal('annual_consumption', 12, 2)->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->decimal('annual_consumption', 12, 2)->nullable(false)->change(); + }); + } +}; diff --git a/database/migrations/2025_06_25_131956_remove_type_from_contracts_table.php b/database/migrations/2025_06_25_131956_remove_type_from_contracts_table.php new file mode 100644 index 0000000..1f9780b --- /dev/null +++ b/database/migrations/2025_06_25_131956_remove_type_from_contracts_table.php @@ -0,0 +1,28 @@ +dropColumn('type'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->string('type')->nullable(); + }); + } +}; diff --git a/database/migrations/2025_06_25_151156_add_color_to_suppliers_table.php b/database/migrations/2025_06_25_151156_add_color_to_suppliers_table.php new file mode 100644 index 0000000..f6eaccd --- /dev/null +++ b/database/migrations/2025_06_25_151156_add_color_to_suppliers_table.php @@ -0,0 +1,28 @@ +string('color', 20)->nullable()->after('name'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('suppliers', function (Blueprint $table) { + $table->dropColumn('color'); + }); + } +}; diff --git a/database/migrations/2025_08_22_091214_add_color_to_contract_status_table.php b/database/migrations/2025_08_22_091214_add_color_to_contract_status_table.php new file mode 100644 index 0000000..7056be0 --- /dev/null +++ b/database/migrations/2025_08_22_091214_add_color_to_contract_status_table.php @@ -0,0 +1,28 @@ +string('color', 7)->nullable()->after('description'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contract_status', function (Blueprint $table) { + $table->dropColumn('color'); + }); + } +}; diff --git a/database/migrations/2025_08_25_141236_add_go_ki_to_contracts_table.php b/database/migrations/2025_08_25_141236_add_go_ki_to_contracts_table.php new file mode 100644 index 0000000..620bb3c --- /dev/null +++ b/database/migrations/2025_08_25_141236_add_go_ki_to_contracts_table.php @@ -0,0 +1,28 @@ +decimal('go_ki', 10, 2)->after('profit_value'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->dropColumn('go_ki'); + }); + } +}; diff --git a/database/migrations/2025_08_26_091926_create_lead_status_table.php b/database/migrations/2025_08_26_091926_create_lead_status_table.php new file mode 100644 index 0000000..846b44e --- /dev/null +++ b/database/migrations/2025_08_26_091926_create_lead_status_table.php @@ -0,0 +1,28 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('lead_status'); + } +}; diff --git a/database/migrations/2025_08_26_092040_add_type_and_lead_status_to_clients_table.php b/database/migrations/2025_08_26_092040_add_type_and_lead_status_to_clients_table.php new file mode 100644 index 0000000..404a950 --- /dev/null +++ b/database/migrations/2025_08_26_092040_add_type_and_lead_status_to_clients_table.php @@ -0,0 +1,32 @@ +enum('type', ['lead', 'client'])->default('client')->after('id'); + + $table->unsignedBigInteger('lead_status_id')->nullable()->after('type'); + $table->foreign('lead_status_id')->references('id')->on('lead_status'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('clients', function (Blueprint $table) { + $table->dropForeign(['lead_status_id']); + $table->dropColumn(['type', 'lead_status_id']); + }); + } +}; diff --git a/database/migrations/2025_08_26_101929_alter_clients_nullable_fields.php b/database/migrations/2025_08_26_101929_alter_clients_nullable_fields.php new file mode 100644 index 0000000..f48e3ef --- /dev/null +++ b/database/migrations/2025_08_26_101929_alter_clients_nullable_fields.php @@ -0,0 +1,29 @@ +string('tax_number')->nullable()->change(); + $table->string('address')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('clients', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2025_08_27_142641_create_lead_details_table.php b/database/migrations/2025_08_27_142641_create_lead_details_table.php new file mode 100644 index 0000000..59ffa34 --- /dev/null +++ b/database/migrations/2025_08_27_142641_create_lead_details_table.php @@ -0,0 +1,25 @@ +id(); + $table->foreignId('client_id')->constrained('clients')->onDelete('cascade'); + $table->date('contact_date')->nullable(); + $table->date('contract_end_date')->nullable(); + $table->enum('contract_type', ['CPE', 'CUI'])->nullable(); + $table->timestamps(); + }); + } + + public function down() + { + Schema::dropIfExists('lead_details'); + } +}; diff --git a/database/migrations/2025_09_03_171449_add_delivery_point_code_to_lead_details_table.php b/database/migrations/2025_09_03_171449_add_delivery_point_code_to_lead_details_table.php new file mode 100644 index 0000000..8062997 --- /dev/null +++ b/database/migrations/2025_09_03_171449_add_delivery_point_code_to_lead_details_table.php @@ -0,0 +1,22 @@ +string('delivery_point_code')->nullable()->after('client_id'); + }); + } + + public function down(): void + { + Schema::table('lead_details', function (Blueprint $table) { + $table->dropColumn('delivery_point_code'); + }); + } +}; diff --git a/database/migrations/2025_09_04_135532_add_paid_to_contracts_table.php b/database/migrations/2025_09_04_135532_add_paid_to_contracts_table.php new file mode 100644 index 0000000..effb749 --- /dev/null +++ b/database/migrations/2025_09_04_135532_add_paid_to_contracts_table.php @@ -0,0 +1,22 @@ +boolean('paid')->default(false)->after('client_id'); + }); + } + + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->dropColumn('paid'); + }); + } +}; diff --git a/database/migrations/2025_09_08_110610_add_pin_to_users_table.php b/database/migrations/2025_09_08_110610_add_pin_to_users_table.php new file mode 100644 index 0000000..67b9e77 --- /dev/null +++ b/database/migrations/2025_09_08_110610_add_pin_to_users_table.php @@ -0,0 +1,28 @@ +string('pin')->nullable()->after('password'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('pin'); + }); + } +}; diff --git a/database/migrations/2025_09_08_175045_move_timestamps_to_end_in_contracts_table.php b/database/migrations/2025_09_08_175045_move_timestamps_to_end_in_contracts_table.php new file mode 100644 index 0000000..68f6492 --- /dev/null +++ b/database/migrations/2025_09_08_175045_move_timestamps_to_end_in_contracts_table.php @@ -0,0 +1,22 @@ +timestamp('created_at')->after('typology_id')->change(); + $table->timestamp('updated_at')->after('created_at')->change(); + }); + } + + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + + }); + } +}; diff --git a/database/migrations/2025_09_15_100622_create_contract_histories_table.php b/database/migrations/2025_09_15_100622_create_contract_histories_table.php new file mode 100644 index 0000000..c870c7a --- /dev/null +++ b/database/migrations/2025_09_15_100622_create_contract_histories_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignId('contract_id')->constrained('contracts')->onDelete('cascade'); + $table->date('renewal_date'); + $table->date('validity')->nullable(); + $table->decimal('contract_value', 10, 2); + $table->decimal('commission_value', 10, 2)->nullable(); + $table->decimal('profit_value', 10, 2)->nullable(); + $table->decimal('commission_rate', 5, 2)->nullable(); + $table->text('notes')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('contract_histories'); + } +}; diff --git a/database/migrations/2025_09_15_104231_add_annual_consumption_to_contract_histories_table.php b/database/migrations/2025_09_15_104231_add_annual_consumption_to_contract_histories_table.php new file mode 100644 index 0000000..83447c7 --- /dev/null +++ b/database/migrations/2025_09_15_104231_add_annual_consumption_to_contract_histories_table.php @@ -0,0 +1,30 @@ +decimal('annual_consumption', 12, 2)->after('validity')->nullable(); + $table->json('contract_snapshot')->nullable()->after('notes'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contract_histories', function (Blueprint $table) { + $table->dropColumn('annual_consumption'); + $table->dropColumn('contract_snapshot'); + }); + } +}; diff --git a/database/migrations/2025_09_15_105109_del_renewal_date_contract_histories_table.php b/database/migrations/2025_09_15_105109_del_renewal_date_contract_histories_table.php new file mode 100644 index 0000000..cf3423f --- /dev/null +++ b/database/migrations/2025_09_15_105109_del_renewal_date_contract_histories_table.php @@ -0,0 +1,28 @@ +dropColumn('renewal_date'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contract_histories', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2025_09_19_143217_add_installment_count_to_contracts_table.php b/database/migrations/2025_09_19_143217_add_installment_count_to_contracts_table.php new file mode 100644 index 0000000..e63cb33 --- /dev/null +++ b/database/migrations/2025_09_19_143217_add_installment_count_to_contracts_table.php @@ -0,0 +1,21 @@ +tinyInteger('installment_count')->unsigned()->default(1)->after('contract_value'); + }); + } + + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->dropColumn('installment_count'); + }); + } +}; diff --git a/database/migrations/2025_09_19_143222_create_contract_installments_table.php b/database/migrations/2025_09_19_143222_create_contract_installments_table.php new file mode 100644 index 0000000..02f6c40 --- /dev/null +++ b/database/migrations/2025_09_19_143222_create_contract_installments_table.php @@ -0,0 +1,28 @@ +id(); + $table->foreignId('contract_id')->constrained('contracts')->onDelete('cascade'); + $table->tinyInteger('installment_number')->unsigned(); + $table->decimal('amount', 10, 2); + $table->date('due_date'); + $table->boolean('paid')->default(false); + $table->timestamp('paid_at')->nullable(); + $table->timestamps(); + + $table->unique(['contract_id', 'installment_number']); + }); + } + + public function down(): void + { + Schema::dropIfExists('contract_installments'); + } +}; diff --git a/database/migrations/2025_11_12_140812_create_personal_access_tokens_table.php b/database/migrations/2025_11_12_140812_create_personal_access_tokens_table.php new file mode 100644 index 0000000..40ff706 --- /dev/null +++ b/database/migrations/2025_11_12_140812_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->text('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable()->index(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/database/migrations/2026_01_12_174505_add_locality_to_clients_table.php b/database/migrations/2026_01_12_174505_add_locality_to_clients_table.php new file mode 100644 index 0000000..394213a --- /dev/null +++ b/database/migrations/2026_01_12_174505_add_locality_to_clients_table.php @@ -0,0 +1,28 @@ +string('locality')->nullable()->after('address'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('clients', function (Blueprint $table) { + $table->dropColumn('locality'); + }); + } +}; diff --git a/database/migrations/2026_09_15_000000_add_previous_supplier_id_to_contract_histories_table.php b/database/migrations/2026_09_15_000000_add_previous_supplier_id_to_contract_histories_table.php new file mode 100644 index 0000000..2b216a6 --- /dev/null +++ b/database/migrations/2026_09_15_000000_add_previous_supplier_id_to_contract_histories_table.php @@ -0,0 +1,33 @@ +foreignId('previous_supplier_id') + ->nullable() + ->after('contract_id') + ->constrained('suppliers') + ->nullOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contract_histories', function (Blueprint $table) { + $table->dropForeign(['previous_supplier_id']); + $table->dropColumn('previous_supplier_id'); + }); + } +}; diff --git a/database/migrations/2026_09_22_000000_add_chargeback_fields_to_contracts_table.php b/database/migrations/2026_09_22_000000_add_chargeback_fields_to_contracts_table.php new file mode 100644 index 0000000..3c5b2be --- /dev/null +++ b/database/migrations/2026_09_22_000000_add_chargeback_fields_to_contracts_table.php @@ -0,0 +1,24 @@ +boolean('chargeback')->default(false)->after('paid'); + $table->decimal('chargeback_value', 10, 2)->nullable()->after('chargeback'); + $table->date('chargeback_date')->nullable()->after('chargeback_value'); + }); + } + + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->dropColumn(['chargeback', 'chargeback_value', 'chargeback_date']); + }); + } +}; diff --git a/database/migrations/2026_09_24_000001_add_contract_end_date_to_contracts_table.php b/database/migrations/2026_09_24_000001_add_contract_end_date_to_contracts_table.php new file mode 100644 index 0000000..a4998a9 --- /dev/null +++ b/database/migrations/2026_09_24_000001_add_contract_end_date_to_contracts_table.php @@ -0,0 +1,22 @@ +date('contract_end_date')->nullable()->after('validity'); + }); + } + + public function down(): void + { + Schema::table('contracts', function (Blueprint $table) { + $table->dropColumn('contract_end_date'); + }); + } +}; diff --git a/database/migrations/2026_09_25_000000_add_installment_counts_to_contract_histories_table.php b/database/migrations/2026_09_25_000000_add_installment_counts_to_contract_histories_table.php new file mode 100644 index 0000000..9032031 --- /dev/null +++ b/database/migrations/2026_09_25_000000_add_installment_counts_to_contract_histories_table.php @@ -0,0 +1,23 @@ +unsignedInteger('total_installments')->nullable()->after('profit_value'); + $table->unsignedInteger('paid_installments')->nullable()->after('total_installments'); + }); + } + + public function down(): void + { + Schema::table('contract_histories', function (Blueprint $table) { + $table->dropColumn(['total_installments', 'paid_installments']); + }); + } +}; diff --git a/database/migrations/2026_09_25_000001_reorder_installment_counts_on_contract_histories_table.php b/database/migrations/2026_09_25_000001_reorder_installment_counts_on_contract_histories_table.php new file mode 100644 index 0000000..1f1bc20 --- /dev/null +++ b/database/migrations/2026_09_25_000001_reorder_installment_counts_on_contract_histories_table.php @@ -0,0 +1,36 @@ +unsignedInteger('total_installments') + ->nullable() + ->after('profit_value') + ->change(); + $table->unsignedInteger('paid_installments') + ->nullable() + ->after('total_installments') + ->change(); + }); + } + + public function down(): void + { + Schema::table('contract_histories', function (Blueprint $table) { + $table->unsignedInteger('paid_installments') + ->nullable() + ->after('total_installments') + ->change(); + $table->unsignedInteger('total_installments') + ->nullable() + ->after('profit_value') + ->change(); + }); + } +}; diff --git a/database/migrations/2026_09_25_000002_add_contract_details_to_contract_histories_table.php b/database/migrations/2026_09_25_000002_add_contract_details_to_contract_histories_table.php new file mode 100644 index 0000000..b7d4117 --- /dev/null +++ b/database/migrations/2026_09_25_000002_add_contract_details_to_contract_histories_table.php @@ -0,0 +1,38 @@ +foreignId('current_supplier_id')->nullable()->after('previous_supplier_id'); + $table->foreignId('seller_id')->nullable()->after('annual_consumption'); + $table->foreignId('contract_type_id')->nullable()->after('seller_id'); + $table->date('contract_date')->nullable()->after('contract_type_id'); + $table->date('activation_date')->nullable()->after('contract_date'); + $table->date('renewal_date')->nullable()->after('activation_date'); + $table->string('renewal_type')->nullable()->after('renewal_date'); + $table->decimal('go_ki', 10, 2)->nullable()->after('renewal_type'); + }); + } + + public function down(): void + { + Schema::table('contract_histories', function (Blueprint $table) { + $table->dropColumn([ + 'current_supplier_id', + 'seller_id', + 'contract_type_id', + 'contract_date', + 'activation_date', + 'renewal_date', + 'renewal_type', + 'go_ki', + ]); + }); + } +}; diff --git a/database/migrations/2026_09_28_000000_create_renewal_types_table.php b/database/migrations/2026_09_28_000000_create_renewal_types_table.php new file mode 100644 index 0000000..f534b98 --- /dev/null +++ b/database/migrations/2026_09_28_000000_create_renewal_types_table.php @@ -0,0 +1,23 @@ +id(); + $table->string('value')->unique(); + $table->string('description'); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('renewal_types'); + } +}; diff --git a/database/migrations/2026_09_30_000000_add_typology_id_to_contract_histories_table.php b/database/migrations/2026_09_30_000000_add_typology_id_to_contract_histories_table.php new file mode 100644 index 0000000..91cb441 --- /dev/null +++ b/database/migrations/2026_09_30_000000_add_typology_id_to_contract_histories_table.php @@ -0,0 +1,26 @@ +foreignId('typology_id') + ->nullable() + ->constrained('typologies') + ->onDelete('set null'); + }); + } + + public function down(): void + { + Schema::table('contract_histories', function (Blueprint $table) { + $table->dropForeign(['typology_id']); + $table->dropColumn('typology_id'); + }); + } +}; diff --git a/database/migrations/2026_10_02_000000_add_chargeback_fields_to_contract_histories_table.php b/database/migrations/2026_10_02_000000_add_chargeback_fields_to_contract_histories_table.php new file mode 100644 index 0000000..b9bcac8 --- /dev/null +++ b/database/migrations/2026_10_02_000000_add_chargeback_fields_to_contract_histories_table.php @@ -0,0 +1,30 @@ +boolean('chargeback')->nullable()->default(false); + $table->decimal('chargeback_value', 10, 2)->nullable(); + $table->date('chargeback_date')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('contract_histories', function (Blueprint $table) { + $table->dropColumn(['chargeback', 'chargeback_value', 'chargeback_date']); + }); + } +}; diff --git a/database/seeders/ClientTypesSeeder.php b/database/seeders/ClientTypesSeeder.php new file mode 100644 index 0000000..ee90e6e --- /dev/null +++ b/database/seeders/ClientTypesSeeder.php @@ -0,0 +1,30 @@ + ['description' => 'Doméstico', 'icon' => 'fas fa-home', 'color' => '#0d6efd'], + 2 => ['description' => 'Empresarial', 'icon' => 'fas fa-building', 'color' => '#ffc107'], + 3 => ['description' => 'Condomínios', 'icon' => 'fas fa-city', 'color' => '#20c997'], + 4 => ['description' => 'Solar', 'icon' => 'fas fa-solar-panel', 'color' => '#fd7e14'], + ]; + + foreach ($types as $id => $data) { + ClientType::updateOrCreate( + ['id' => $id], + $data + ); + } + } +} diff --git a/database/seeders/ClientsTableSeeder.php b/database/seeders/ClientsTableSeeder.php new file mode 100644 index 0000000..84305c0 --- /dev/null +++ b/database/seeders/ClientsTableSeeder.php @@ -0,0 +1,34 @@ +pluck('id')->toArray(); + $sellerIds = DB::table('users')->pluck('id')->toArray(); + + foreach (range(1, 50) as $i) { + Clients::create([ + 'client_type_id' => $faker->randomElement($clientTypeIds), + 'name' => $faker->name, + 'tax_number' => $faker->numerify('#########'), + 'address' => $faker->address, + 'phone' => $faker->phoneNumber, + 'email' => $faker->unique()->safeEmail, + 'seller_id' => $faker->randomElement($sellerIds), + 'status' => $faker->randomElement(['A', 'I']), + 'notes' => $faker->optional()->sentence, + 'contact_info' => $faker->optional()->paragraph + ]); + } + } +} diff --git a/database/seeders/ContractStatusSeeder.php b/database/seeders/ContractStatusSeeder.php new file mode 100644 index 0000000..3197bf7 --- /dev/null +++ b/database/seeders/ContractStatusSeeder.php @@ -0,0 +1,41 @@ + 'OK'], + ['description' => 'Ativo', 'color' => '#28a745'] + ); + + ContractStatus::firstOrCreate( + ['code' => 'TD'], + ['description' => 'Rescindido', 'color' => '#ffc107'] + ); + + ContractStatus::firstOrCreate( + ['code' => 'WL'], + ['description' => 'Para Ativação', 'color' => '#17a2b8'] + ); + + ContractStatus::firstOrCreate( + ['code' => 'PD'], + ['description' => 'Pendente de documentação', 'color' => '#6c757d'] + ); + + ContractStatus::firstOrCreate( + ['code' => 'CL'], + ['description' => 'Cancelado', 'color' => '#dc3545'] + ); + } +} diff --git a/database/seeders/ContractTypesSeeder.php b/database/seeders/ContractTypesSeeder.php new file mode 100644 index 0000000..84a0b9b --- /dev/null +++ b/database/seeders/ContractTypesSeeder.php @@ -0,0 +1,24 @@ + $type], + ['status' => 'A'] + ); + } + } +} diff --git a/database/seeders/ContractsTableSeeder.php b/database/seeders/ContractsTableSeeder.php new file mode 100644 index 0000000..99400fb --- /dev/null +++ b/database/seeders/ContractsTableSeeder.php @@ -0,0 +1,58 @@ +pluck('id')->toArray(); + $sellerIds = DB::table('users')->pluck('id')->toArray(); + $contractTypeIds = DB::table('contract_types')->pluck('id')->toArray(); + $statusIds = DB::table('contract_status')->pluck('id')->toArray(); + $powerTierIds = DB::table('power_tiers')->pluck('id')->toArray(); + $cuiTierIds = DB::table('cui_tiers')->pluck('id')->toArray(); + $paymentMethodIds = DB::table('payment_methods')->pluck('id')->toArray(); + $supplierIds = DB::table('suppliers')->pluck('id')->toArray(); + $typologyIds = DB::table('typologies')->pluck('id')->toArray(); + + foreach (range(1, 50) as $i) { + $supplyType = $faker->randomElement(['cpe', 'cui']); + + Contract::create([ + 'client_id' => $faker->randomElement($clientIds), + 'contract_value' => $faker->randomFloat(2, 500, 5000), + 'commission_value' => $faker->randomFloat(2, 50, 500), + 'profit_value' => $faker->randomFloat(2, 10, 450), + 'seller_id' => $faker->randomElement($sellerIds), + 'supply_type' => $supplyType, + 'supply_address' => $faker->address, + 'annual_consumption' => $supplyType === 'cpe' ? $faker->numberBetween(1000, 20000) : null, + 'code' => strtoupper($faker->bothify('CPE#####??')), + 'contract_type_id' => $faker->randomElement($contractTypeIds), + 'validity' => $faker->dateTimeBetween('+1 year', '+3 years')->format('Y-m-d'), + 'contract_date' => $faker->dateTimeBetween('-1 years', 'now')->format('Y-m-d'), + 'activation_date' => $faker->dateTimeBetween('now', '+30 days')->format('Y-m-d'), + 'status_id' => $faker->randomElement($statusIds), + 'commission_rate' => $faker->randomFloat(2, 0, 10), + 'go_ki' => $faker->randomFloat(2, 0, 10), + 'notes' => $faker->optional()->sentence, + 'power_tier_id' => $supplyType === 'cpe' ? $faker->randomElement($powerTierIds) : null, + 'cui_tier_id' => $supplyType === 'cui' ? $faker->randomElement($cuiTierIds) : null, + 'payment_method_id' => $faker->randomElement($paymentMethodIds), + 'delivery_method' => $faker->randomElement(['correio', 'email']), + 'delivery_email' => $faker->safeEmail, + 'previous_supplier_id' => $faker->randomElement($supplierIds), + 'new_supplier_id' => $faker->randomElement($supplierIds), + 'typology_id' => $faker->randomElement($typologyIds), + ]); + } + } +} diff --git a/database/seeders/CuiTiersSeeder.php b/database/seeders/CuiTiersSeeder.php new file mode 100644 index 0000000..8a926b5 --- /dev/null +++ b/database/seeders/CuiTiersSeeder.php @@ -0,0 +1,25 @@ +insert([ + ['name' => 'Escalão 1', 'status' => 'A', 'created_at' => now(), 'updated_at' => now()], + ['name' => 'Escalão 2', 'status' => 'A', 'created_at' => now(), 'updated_at' => now()], + ['name' => 'Escalão 3', 'status' => 'A', 'created_at' => now(), 'updated_at' => now()], + ['name' => 'Escalão 4', 'status' => 'A', 'created_at' => now(), 'updated_at' => now()], + ['name' => 'Longas Utilizações', 'status' => 'A', 'created_at' => now(), 'updated_at' => now()], + ['name' => 'Curtas Utilizações', 'status' => 'A', 'created_at' => now(), 'updated_at' => now()], + ['name' => 'Mensal', 'status' => 'A', 'created_at' => now(), 'updated_at' => now()], + ]); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..a72fddd --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,34 @@ +call([ + ClientTypesSeeder::class, + PermissionSeeder::class, + UserSeeder::class, + PaymentMethodsSeeder::class, + ReceiveInvoiceTypesSeeder::class, + RenewalTypesSeeder::class, + ContractTypesSeeder::class, + ContractStatusSeeder::class, + PowerTiersTableSeeder::class, + TypologySeeder::class, + SuppliersSeeder::class, + CuiTiersSeeder::class, + ClientsTableSeeder::class, + ContractsTableSeeder::class, + ]); + + } +} diff --git a/database/seeders/LeadStatusSeeder.php b/database/seeders/LeadStatusSeeder.php new file mode 100644 index 0000000..8f54bc6 --- /dev/null +++ b/database/seeders/LeadStatusSeeder.php @@ -0,0 +1,25 @@ +updateOrInsert( + ['name' => $status], + ['name' => $status] + ); + } + } +} diff --git a/database/seeders/PaymentMethodsSeeder.php b/database/seeders/PaymentMethodsSeeder.php new file mode 100644 index 0000000..c73091f --- /dev/null +++ b/database/seeders/PaymentMethodsSeeder.php @@ -0,0 +1,39 @@ +insert([ + [ + 'name' => 'Transferência Bancária', + 'icon' => 'fas fa-university', + 'status' => 'A', + 'created_at' => now(), + 'updated_at' => now(), + ], + [ + 'name' => 'MB', + 'icon' => 'fab fa-app-store-ios', + 'status' => 'A', + 'created_at' => now(), + 'updated_at' => now(), + ], + [ + 'name' => 'Outro', + 'icon' => 'fas fa-money-bill-wave', + 'status' => 'A', + 'created_at' => now(), + 'updated_at' => now(), + ], + ]); + } +} diff --git a/database/seeders/PermissionSeeder.php b/database/seeders/PermissionSeeder.php new file mode 100644 index 0000000..2650960 --- /dev/null +++ b/database/seeders/PermissionSeeder.php @@ -0,0 +1,69 @@ +forgetCachedPermissions(); + + // ===== PERMISSÕES ===== + $permissions = [ + 'view_contract_summary' => 'Ver resumo financeiro do contrato', + 'manager_permissions' => 'Gerir permissões de utilizadores', + 'manage_resources' => 'Gerir Recursos' + ]; + + $permissionModels = []; + + foreach ($permissions as $name => $description) { + $permissionModels[$name] = Permission::updateOrCreate( + ['name' => $name], + ['description' => $description] + ); + } + + // ===== ROLES ===== + $roles = [ + 'admin' => 'Administrador do sistema (invisível)', + 'administracao' => 'Administração', + 'financeira' => 'Financeira', + 'vendedor' => 'Vendedor', + ]; + + $roleModels = []; + + foreach ($roles as $name => $description) { + $roleModels[$name] = Role::updateOrCreate( + ['name' => $name], + ['description' => $description] + ); + } + + // ===== ATRIBUIR PERMISSÕES AOS ROLES ===== + + // Administração + $roleModels['administracao']->syncPermissions([ + $permissionModels['view_contract_summary'], + $permissionModels['manager_permissions'], + $permissionModels['manage_resources'] + ]); + + // Financeira + $roleModels['financeira']->syncPermissions([ + $permissionModels['view_contract_summary'], + ]); + + // Super Admin (acesso total) + $roleModels['admin']->syncPermissions(Permission::all()); + + // Vendedor (sem permissões por enquanto, ajustável depois) + $roleModels['vendedor']->syncPermissions([]); + } +} diff --git a/database/seeders/PowerTiersTableSeeder.php b/database/seeders/PowerTiersTableSeeder.php new file mode 100644 index 0000000..cd5e4ff --- /dev/null +++ b/database/seeders/PowerTiersTableSeeder.php @@ -0,0 +1,31 @@ + 'Simples', 'status' => 'A'], + ['name' => 'Tri-horária','status' => 'A'], + ['name' => 'Bi-horária', 'status' => 'A'], + ['name' => 'BTE', 'status' => 'A'], + ['name' => 'MT', 'status' => 'A'], + ['name' => 'AT', 'status' => 'A'], + ]; + + foreach ($tiers as $tier) { + DB::table('power_tiers')->updateOrInsert( + ['name' => $tier['name']], + ['status' => $tier['status'], 'updated_at' => now(), 'created_at' => now()] + ); + } + } +} diff --git a/database/seeders/ReceiveInvoiceTypesSeeder.php b/database/seeders/ReceiveInvoiceTypesSeeder.php new file mode 100644 index 0000000..f2a1efa --- /dev/null +++ b/database/seeders/ReceiveInvoiceTypesSeeder.php @@ -0,0 +1,19 @@ + 'Email']); + ReceiveInvoiceTypes::firstOrCreate(['description' => 'Correio']); + } +} diff --git a/database/seeders/RenewalTypesSeeder.php b/database/seeders/RenewalTypesSeeder.php new file mode 100644 index 0000000..07634e6 --- /dev/null +++ b/database/seeders/RenewalTypesSeeder.php @@ -0,0 +1,21 @@ + 'tacita'], + ['description' => 'Tácita'] + ); + RenewalType::firstOrCreate( + ['value' => 'negociada'], + ['description' => 'Negociada'] + ); + } +} diff --git a/database/seeders/ResetPermissionsSeeder.php b/database/seeders/ResetPermissionsSeeder.php new file mode 100644 index 0000000..2d4813f --- /dev/null +++ b/database/seeders/ResetPermissionsSeeder.php @@ -0,0 +1,26 @@ +truncate(); + DB::table('model_has_permissions')->truncate(); + DB::table('role_has_permissions')->truncate(); + Role::truncate(); + Permission::truncate(); + } +} diff --git a/database/seeders/SuppliersSeeder.php b/database/seeders/SuppliersSeeder.php new file mode 100644 index 0000000..a0e08df --- /dev/null +++ b/database/seeders/SuppliersSeeder.php @@ -0,0 +1,42 @@ + 'Axpo', 'color' => '#FF0000'], + ['name' => 'PORTULOGOS', 'color' => '#005489'], + ['name' => 'NABALIA', 'color' => '#00FFF0'], + ['name' => 'ZUG POWER', 'color' => '#69B0E4'], + ['name' => 'ALFA ENERGIA', 'color' => '#0077CC'], + ['name' => 'YES ENERGY', 'color' => '#D3EDA1'], + ['name' => 'ACCIONA', 'color' => '#FFFFFF'], + ['name' => 'AUDAX', 'color' => '#FFFF00'], + ['name' => 'IBERDROLA', 'color' => '#62852B'], + ['name' => 'ENDESA', 'color' => '#A4C4E7'], + ['name' => 'EDP - COMERCIAL', 'color' => '#00D9FF'], + ['name' => 'REPSOL', 'color' => '#F7B801'], + ['name' => 'PLENITUDE', 'color' => '#C8E48E'], + ['name' => 'MEO ENERGIA', 'color' => '#A0E556'], + ]; + + foreach ($suppliers as $supplier) { + DB::table('suppliers')->insert([ + 'name' => $supplier['name'], + 'color' => $supplier['color'], + 'status' => 'A', + 'created_at' => now(), + 'updated_at' => now(), + ]); + } + } +} diff --git a/database/seeders/TypologySeeder.php b/database/seeders/TypologySeeder.php new file mode 100644 index 0000000..7080832 --- /dev/null +++ b/database/seeders/TypologySeeder.php @@ -0,0 +1,31 @@ + $desc]); + } + } +} diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php new file mode 100644 index 0000000..b8b629c --- /dev/null +++ b/database/seeders/UserSeeder.php @@ -0,0 +1,79 @@ + 'luismedon@gmail.com'], + [ + 'name' => 'Admin', + 'password' => Hash::make('123'), + 'can_login' => true, + ] + ); + + $userJorge = User::firstOrCreate( + ['email' => '77jpef@gmail.com'], + [ + 'name' => 'Jorge Ferreira', + 'password' => Hash::make('rtIcp6F'), + 'can_login' => true, + ] + ); + + $userAdmin->syncRoles(Role::all()); + + $rolesWithoutAdmin = Role::where('id', '!=', 1)->get(); + $userJorge->syncRoles($rolesWithoutAdmin); + + // Buscar roles existentes + $roleVendedor = Role::where('name', 'vendedor')->first(); + $roleComercial = Role::where('name', 'Financeira')->first(); + + // Novos utilizadores + $newUsers = [ + 'JOSE', + 'ANDRÉ', + 'J.FERNANDES', + 'RUI RODRIGUES', + 'SILVIA', + ]; + + foreach ($newUsers as $name) { + $email = strtolower(str_replace(' ', '', $name)) . '@example.com'; + + $user = User::firstOrCreate( + ['name' => $name], + [ + 'email' => $email, + 'password' => Hash::make(Str::random(16)), + 'can_login' => false, + ] + ); + + if ($name === 'SILVIA') { + if ($roleComercial) { + $user->syncRoles([$roleComercial]); + } + } else { + if ($roleVendedor) { + $user->syncRoles([$roleVendedor]); + } + } + } + } +} diff --git a/docs/API.md b/docs/API.md new file mode 100644 index 0000000..329749f --- /dev/null +++ b/docs/API.md @@ -0,0 +1,131 @@ +# API da aplicacao + +## Arquitetura + +Web e API usam os mesmos servicos em `app/Services`, com as mesmas regras de +negocio e acesso aos dados. A web mantem as vistas Blade e os redirecionamentos. +A API devolve JSON, exceto a exportacao Excel e o diagnostico HTML `phpinfo`. +Os controllers nao fazem chamadas HTTP a propria aplicacao. `APP_API_URL` ou +`app.api_url` deixam de ser necessarios para o login e a sessao web. + +O bootstrap Laravel regista `routes/api.php` com o prefixo `/api`. + +## Autenticacao + +`POST /api/login` recebe `email` e `password` e devolve `token` e `user`. +Os tokens Sanctum expiram apos 20 minutos. Use estes cabecalhos nos pedidos: + +```http +Authorization: Bearer +Accept: application/json +Content-Type: application/json +``` + +`POST /api/refresh` prolonga um token ainda valido por 20 minutos. +`POST /api/logout` revoga o token atual. A recuperacao de senha revoga todos +os tokens do utilizador. Contas com `can_login=false` nao podem autenticar-se +nem usar tokens existentes. O login web usa o mesmo servico, regenera a sessao +e valida/renova o token localmente em cada pedido autenticado. + +Login e verificacao de PIN permitem 10 tentativas por minuto; pedidos publicos +de recuperacao de senha e envio de email de teste permitem 5 por minuto. + +## Endpoints + +Todos os caminhos abaixo sao relativos a `/api`. +`CRUD /recurso` significa `GET /recurso`, `POST /recurso`, +`GET /recurso/{id}`, `PUT` ou `PATCH /recurso/{id}` e `DELETE /recurso/{id}`. +As rotas `/resources` aceitam `PUT`, nao `PATCH`. + +| Operacao | Endpoint | Acesso | +| --- | --- | --- | +| Login | `POST /login` | Publico | +| Pedir recuperacao de senha | `POST /password/email` | Publico | +| Redefinir senha | `POST /password/reset` | Publico | +| Sair / renovar / verificar token | `POST /logout`, `POST /refresh`, `GET /check-token` | Autenticado | +| Utilizador atual e permissoes | `GET /me` | Autenticado | +| Dashboard | `GET /dashboard` | Autenticado | +| Analises | `GET /analytics` | Role `administracao` | +| Guardar / verificar PIN | `POST /user/pin`, `POST /user/check-pin` | Autenticado | +| Clientes | CRUD `/clients` | Autenticado | +| Opcoes de clientes | `GET /clients/options?type={client_type_id}` | Autenticado | +| Detalhe e contratos de cliente | `GET /clients/{id}/detail` | Autenticado | +| Pesquisa por nome | `GET /clients/search/name?term=...` | Autenticado | +| Pesquisa por ID | `POST /clients/search/id`, corpo `{"id":1}` | Autenticado | +| Leads | CRUD `/leads` | Autenticado | +| Estados de leads | `GET /leads/options` | Autenticado | +| Converter lead | `PUT /leads/{id}/convert` | Autenticado | +| Contratos | CRUD `/contracts` | Autenticado | +| Opcoes de contratos | `GET /contracts/options?client_id=...` | Autenticado | +| Dados de edicao | `GET /contracts/{id}/edit` | Autenticado | +| Opcoes / executar renovacao | `GET /contracts/{id}/renew`, `POST /contracts/{id}/renew` | Autenticado | +| Historico | `GET /contracts/{id}/history` | Autenticado | +| Ler / editar / eliminar historico | `GET`, `PUT`, `DELETE /contracts/{id}/history/{historyId}` | Autenticado | +| Eliminar contratos em lote | `DELETE /contracts/bulk`, corpo `{"ids":[1,2]}` | Autenticado | +| Exportar contratos | `GET /contracts/export` | Permissao `view_contract_summary` | +| Utilizadores | CRUD `/users` | Role `admin` | +| Roles para criar utilizador | `GET /users/options` | Role `admin` | +| Enviar recuperacao de senha a utilizador | `POST /users/{user}/password-reset` | Role `admin` | +| Roles e permissoes | `GET /admin/access/roles-permissions` | Role `admin` | +| Atualizar permissoes de role | `POST /admin/access/roles/{role}/permissions` | Role `admin` | +| Utilizadores e roles | `GET /admin/access/users` | Role `admin` | +| Atualizar roles de utilizador | `POST /admin/access/users/{user}/roles` | Role `admin` | +| Recursos auxiliares | CRUD `/resources/{resource}` | Permissao `manage_resources` | +| Informacao do sistema | `GET /admin/info` | Role `admin` | +| Diagnostico PHP (HTML) | `GET /admin/phpinfo` | Role `admin` | +| Executar migrations | `POST /admin/runMigrations` | Role `admin` | +| Email de teste | `POST /admin/testEmail`, corpo `{"email":"destino@example.com"}` | Role `admin` | + +Recursos permitidos: `power_tiers`, `contract_types`, `payment_methods`, +`typologies`, `cui_tiers`, `suppliers`, `contract-statuses`. +Roles e permissoes sao enviadas como listas de nomes nos campos `roles` e +`permissions`. Os campos de negocio e datas seguem os FormRequests existentes, +incluindo o formato `d/m/Y` nos formularios de contratos. As operacoes de +senha recebem `email`; a redefinicao tambem recebe `token`, `password` e +`password_confirmation`. + +## Respostas e compatibilidade + +Criacao: `201`; operacao concluida: `200`; nao autenticado: `401`; +acesso negado: `403`; registo inexistente: `404`; validacao: `422`; +limite de tentativas: `429`. Erros de validacao incluem `message` e `errors`. +Os erros API sao JSON mesmo sem o cabecalho `Accept`. + +Clientes mantem a listagem antiga `{"clients":[...]}` quando `per_page` nao e +enviado. Com `per_page`, devolvem um paginador em `clients`, com `data`, +`current_page`, `last_page`, `per_page`, `total` e links. Clientes e contratos +limitam `per_page` ao intervalo 1-100. A listagem paginada de clientes filtra +`type=client`, tal como a web; a listagem antiga conserva o comportamento +anterior de devolver os registos ativos. Filtros de nome, NIF, email, tipo e +codigo de contrato sao partilhados. Contratos incluem os totais da pagina atual. + +IDs de clientes passam a ser incluidos nas respostas. Passwords, hashes de PIN +e remember tokens nao sao serializados. Dados financeiros e snapshots de +contratos sao omitidos das respostas de negocio sem `view_contract_summary`. +Atualizacoes sem essa permissao preservam os valores financeiros e parcelas. +Exportacoes exigem essa permissao, tambem na web. + +As antigas operacoes administrativas `GET /admin/runMigrations` e +`GET /admin/testEmail` passam a `POST`, exigem a role `admin`, e o email de +destino passa a ser obrigatorio. Nenhuma migration foi executada durante esta +refatoracao. Estes endpoints devem ser restritos tambem ao nivel de rede em +producao, especialmente `phpinfo` e a execucao de migrations. + +## Verificacao + +Os testes unitarios de regras ficam em `tests/Unit`. Os testes HTTP da API ficam +em `tests/Api`, e os fluxos web destinados ao browser ficam em `tests/Browser`. +Ambos usam uma base SQLite em memoria, com o esquema oficial de permissoes do +Spatie e tabelas minimas; nao usam nem alteram a base de dados da aplicacao. +Os testes Browser verificam a resposta HTTP, vistas, CSRF, redirecionamentos e +sessoes Laravel; nao executam JavaScript num Chromium real. + +```bash +APP_ENV=testing DB_CONNECTION=sqlite DB_DATABASE=:memory: CACHE_STORE=array SESSION_DRIVER=array \ + vendor/bin/phpunit tests/Unit tests/Api tests/Browser +``` + +Cada grupo tambem pode ser executado isoladamente com `vendor/bin/phpunit +--testsuite API` ou `vendor/bin/phpunit --testsuite Browser`. O PHP CLI necessita +da extensao `pdo_sqlite`. Os testes Feature legados que dependem de dados +preexistentes nao estao incluidos no comando acima. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8cec533 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2720 @@ +{ + "name": "volcerto", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@popperjs/core": "^2.11.6", + "@tailwindcss/vite": "^4.0.0", + "axios": "^1.13.5", + "bootstrap": "^5.2.3", + "concurrently": "^9.0.1", + "laravel-vite-plugin": "^1.2.0", + "sass": "^1.56.1", + "tailwindcss": "^4.0.0", + "vite": "^6.4.1" + } + }, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/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==", + "dev": true, + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/node": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.11.tgz", + "integrity": "sha512-y1Ko/QaZh6Fv8sSOOPpRztT8nvNKSetvE4CLxsDdyY5kkBS7hKq04D3y3ldelniWe6YqRIzBHTzfAIc1hZ+0FA==", + "dev": true, + "dependencies": { + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "tailwindcss": "4.0.11" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.11.tgz", + "integrity": "sha512-vpR3j69boI64ftpDbbC2NPXhbF7LEkBbQ/Ol1mSU9medtdcmabMiEPlN9FtvE2IkoXZpiDM1utSsdutZSka9Cg==", + "dev": true, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.0.11", + "@tailwindcss/oxide-darwin-arm64": "4.0.11", + "@tailwindcss/oxide-darwin-x64": "4.0.11", + "@tailwindcss/oxide-freebsd-x64": "4.0.11", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.11", + "@tailwindcss/oxide-linux-arm64-gnu": "4.0.11", + "@tailwindcss/oxide-linux-arm64-musl": "4.0.11", + "@tailwindcss/oxide-linux-x64-gnu": "4.0.11", + "@tailwindcss/oxide-linux-x64-musl": "4.0.11", + "@tailwindcss/oxide-win32-arm64-msvc": "4.0.11", + "@tailwindcss/oxide-win32-x64-msvc": "4.0.11" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.11.tgz", + "integrity": "sha512-6gGLTOwR3WNh63pUnY6znRY7XiLRVmvyAkQRdyRxPquNIZ7lTeqWlZcxt5Gtlh1VzZXkQ8OWyYte8ZBnulhvwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.11.tgz", + "integrity": "sha512-CM5SF53zzqYqQQGlP6N94zTliUi2FxW4itr223xb2PWgbwf48JTE2P6DNrA5DHOxacIliiCYiBzmKGwKdGMu8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.11.tgz", + "integrity": "sha512-YB1LJC04O3UugV0egl3jnpXWyJIlcV7oVb0cplcqG0aP6nPYH0SqmD+ysbOrl6Ti1qAVuOHnfJvnAup2hbXMgw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.11.tgz", + "integrity": "sha512-tK63Mi/kbU5GVZFkUH+zLL/G0yiRGY15MU2xFUa3H2q2px4IuWJTWRmv6iPOcZm3kYpsh+0C+dSoz0lDEknENg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.11.tgz", + "integrity": "sha512-vMJPxCQtdhqGGw1MOQnPJ6hyh5BR5EQhRXJk9Ji/1oo2P1chgEaPuGYGZGdZMy9bnFaufnjae0liqk6E3SNTFw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.11.tgz", + "integrity": "sha512-5qac6Wps9vCwkQcgyw+VlJvXkdGoOnJp8eK3TaKpZ3fTQozGgvy/AyimV8I7I4ZjU6mTjuQbZe1CPP/cuG+Ldw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.11.tgz", + "integrity": "sha512-hR/Lw7QgODodKLpf37+ohJJZjYEJLg6c+h3nIXJ6eLYDbCZjJ0Z0+jHP0rHXyGab7JL+QlIksNuNbJjj+2qpsw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.11.tgz", + "integrity": "sha512-4aCBYzU2SyFUw/dSP3SYAaeo3I7+c6to9acqXAl/Y5XnAO3q6SBrjw2sU2RG7f5Yi+jxevFh4BcOS5ofhhoTIA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.11.tgz", + "integrity": "sha512-Y5j5Yp3lRcgyzOF+CY+u54aUUtvZ6OwiVPeILE3wqbsDA6X3UiUpVr8tW2eREERld0gELfXG8TyNAtDsBIOHwA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.11.tgz", + "integrity": "sha512-ofgW1IugQDJR+fGJUZMniwTzrwHvaw6wpoOE1mIXBFP2wWoDjvNTXUJyMDxF2N6UypXGYCJMDdEohB1CyWf9cg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.11.tgz", + "integrity": "sha512-jUDa1xZNVPuarkEbwxh8aFQ3oagDQRYXcPmfsiDZ2IAxcYnE8YPNbA2HvFxJowppnnu/v/xdWvneN24VBr1Zpw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.11.tgz", + "integrity": "sha512-rjzupwJLR/2d06SQ7JWPyEdj95qW4tGcP/i6vHkbtHnDR0XkohaG7ab8lKHnxJsr+/4RDHwKDGRPKB3VWgx2vg==", + "dev": true, + "dependencies": { + "@tailwindcss/node": "4.0.11", + "@tailwindcss/oxide": "4.0.11", + "lightningcss": "^1.29.1", + "tailwindcss": "4.0.11" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "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, + "optional": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "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==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concurrently": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.1.2.tgz", + "integrity": "sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==", + "dev": true, + "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/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "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/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==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "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==", + "dev": true, + "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/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "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==", + "dev": true, + "hasInstallScript": true, + "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==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/immutable": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "dev": true, + "license": "MIT" + }, + "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, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "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==", + "dev": true, + "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/lightningcss": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", + "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.2", + "lightningcss-darwin-x64": "1.29.2", + "lightningcss-freebsd-x64": "1.29.2", + "lightningcss-linux-arm-gnueabihf": "1.29.2", + "lightningcss-linux-arm64-gnu": "1.29.2", + "lightningcss-linux-arm64-musl": "1.29.2", + "lightningcss-linux-x64-gnu": "1.29.2", + "lightningcss-linux-x64-musl": "1.29.2", + "lightningcss-win32-arm64-msvc": "1.29.2", + "lightningcss-win32-x64-msvc": "1.29.2" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", + "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", + "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", + "cpu": [ + "x64" + ], + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", + "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", + "cpu": [ + "x64" + ], + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", + "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", + "cpu": [ + "arm" + ], + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", + "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", + "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", + "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", + "cpu": [ + "x64" + ], + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", + "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", + "cpu": [ + "x64" + ], + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", + "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", + "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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, + "optional": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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==", + "dev": true + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.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==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/sass": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.1.tgz", + "integrity": "sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==", + "dev": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tailwindcss": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.11.tgz", + "integrity": "sha512-GZ6+tNwieqvpFLZfx2tkZpfOMAK7iumbOJOLmd6v8AcYuHbjUb+cmDRu6l+rFkIqarh5FfLbCSRJhegcVdoPng==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "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.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "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, + "optional": true, + "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==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "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==", + "dev": true + }, + "node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..93ecc61 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "dev": "vite" + }, + "devDependencies": { + "@popperjs/core": "^2.11.6", + "@tailwindcss/vite": "^4.0.0", + "axios": "^1.13.5", + "bootstrap": "^5.2.3", + "concurrently": "^9.0.1", + "laravel-vite-plugin": "^1.2.0", + "sass": "^1.56.1", + "tailwindcss": "^4.0.0", + "vite": "^6.4.1" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..f2fa645 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,21 @@ + + + + + ./tests/Unit + + + ./tests/Api + + + ./tests/Browser + + + ./tests/Feature + + + 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/assets/demo/chart-area-demo.js b/public/assets/demo/chart-area-demo.js new file mode 100644 index 0000000..16a9844 --- /dev/null +++ b/public/assets/demo/chart-area-demo.js @@ -0,0 +1,146 @@ +// Set new default font family and font color to mimic Bootstrap's default styling +(Chart.defaults.global.defaultFontFamily = "Metropolis"), +'-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif'; +Chart.defaults.global.defaultFontColor = "#858796"; + +function number_format(number, decimals, dec_point, thousands_sep) { + // * example: number_format(1234.56, 2, ',', ' '); + // * return: '1 234,56' + number = (number + "").replace(",", "").replace(" ", ""); + var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = typeof thousands_sep === "undefined" ? "," : thousands_sep, + dec = typeof dec_point === "undefined" ? "." : dec_point, + s = "", + toFixedFix = function(n, prec) { + var k = Math.pow(10, prec); + return "" + Math.round(n * k) / k; + }; + // Fix for IE parseFloat(0.55).toFixed(0) = 0; + s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split("."); + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); + } + if ((s[1] || "").length < prec) { + s[1] = s[1] || ""; + s[1] += new Array(prec - s[1].length + 1).join("0"); + } + return s.join(dec); +} + +// Area Chart Example +var ctx = document.getElementById("myAreaChart"); +var myLineChart = new Chart(ctx, { + type: "line", + data: { + labels: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + datasets: [{ + label: "Earnings", + lineTension: 0.3, + backgroundColor: "rgba(0, 97, 242, 0.05)", + borderColor: "rgba(0, 97, 242, 1)", + pointRadius: 3, + pointBackgroundColor: "rgba(0, 97, 242, 1)", + pointBorderColor: "rgba(0, 97, 242, 1)", + pointHoverRadius: 3, + pointHoverBackgroundColor: "rgba(0, 97, 242, 1)", + pointHoverBorderColor: "rgba(0, 97, 242, 1)", + pointHitRadius: 10, + pointBorderWidth: 2, + data: [ + 0, + 10000, + 5000, + 15000, + 10000, + 20000, + 15000, + 25000, + 20000, + 30000, + 25000, + 40000 + ] + }] + }, + options: { + maintainAspectRatio: false, + layout: { + padding: { + left: 10, + right: 25, + top: 25, + bottom: 0 + } + }, + scales: { + xAxes: [{ + time: { + unit: "date" + }, + gridLines: { + display: false, + drawBorder: false + }, + ticks: { + maxTicksLimit: 7 + } + }], + yAxes: [{ + ticks: { + maxTicksLimit: 5, + padding: 10, + // Include a dollar sign in the ticks + callback: function(value, index, values) { + return "$" + number_format(value); + } + }, + gridLines: { + color: "rgb(234, 236, 244)", + zeroLineColor: "rgb(234, 236, 244)", + drawBorder: false, + borderDash: [2], + zeroLineBorderDash: [2] + } + }] + }, + legend: { + display: false + }, + tooltips: { + backgroundColor: "rgb(255,255,255)", + bodyFontColor: "#858796", + titleMarginBottom: 10, + titleFontColor: "#6e707e", + titleFontSize: 14, + borderColor: "#dddfeb", + borderWidth: 1, + xPadding: 15, + yPadding: 15, + displayColors: false, + intersect: false, + mode: "index", + caretPadding: 10, + callbacks: { + label: function(tooltipItem, chart) { + var datasetLabel = + chart.datasets[tooltipItem.datasetIndex].label || ""; + return datasetLabel + ": $" + number_format(tooltipItem.yLabel); + } + } + } + } +}); diff --git a/public/assets/demo/chart-bar-demo.js b/public/assets/demo/chart-bar-demo.js new file mode 100644 index 0000000..d7a1f1e --- /dev/null +++ b/public/assets/demo/chart-bar-demo.js @@ -0,0 +1,113 @@ +// Set new default font family and font color to mimic Bootstrap's default styling +(Chart.defaults.global.defaultFontFamily = "Metropolis"), +'-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif'; +Chart.defaults.global.defaultFontColor = "#858796"; + +function number_format(number, decimals, dec_point, thousands_sep) { + // * example: number_format(1234.56, 2, ',', ' '); + // * return: '1 234,56' + number = (number + "").replace(",", "").replace(" ", ""); + var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = typeof thousands_sep === "undefined" ? "," : thousands_sep, + dec = typeof dec_point === "undefined" ? "." : dec_point, + s = "", + toFixedFix = function(n, prec) { + var k = Math.pow(10, prec); + return "" + Math.round(n * k) / k; + }; + // Fix for IE parseFloat(0.55).toFixed(0) = 0; + s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split("."); + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); + } + if ((s[1] || "").length < prec) { + s[1] = s[1] || ""; + s[1] += new Array(prec - s[1].length + 1).join("0"); + } + return s.join(dec); +} + +// Bar Chart Example +var ctx = document.getElementById("myBarChart"); +var myBarChart = new Chart(ctx, { + type: "bar", + data: { + labels: ["January", "February", "March", "April", "May", "June"], + datasets: [{ + label: "Revenue", + backgroundColor: "rgba(0, 97, 242, 1)", + hoverBackgroundColor: "rgba(0, 97, 242, 0.9)", + borderColor: "#4e73df", + data: [4215, 5312, 6251, 7841, 9821, 14984], + maxBarThickness: 25 + }] + }, + options: { + maintainAspectRatio: false, + layout: { + padding: { + left: 10, + right: 25, + top: 25, + bottom: 0 + } + }, + scales: { + xAxes: [{ + time: { + unit: "month" + }, + gridLines: { + display: false, + drawBorder: false + }, + ticks: { + maxTicksLimit: 6 + } + }], + yAxes: [{ + ticks: { + min: 0, + max: 15000, + maxTicksLimit: 5, + padding: 10, + // Include a dollar sign in the ticks + callback: function(value, index, values) { + return "$" + number_format(value); + } + }, + gridLines: { + color: "rgb(234, 236, 244)", + zeroLineColor: "rgb(234, 236, 244)", + drawBorder: false, + borderDash: [2], + zeroLineBorderDash: [2] + } + }] + }, + legend: { + display: false + }, + tooltips: { + titleMarginBottom: 10, + titleFontColor: "#6e707e", + titleFontSize: 14, + backgroundColor: "rgb(255,255,255)", + bodyFontColor: "#858796", + borderColor: "#dddfeb", + borderWidth: 1, + xPadding: 15, + yPadding: 15, + displayColors: false, + caretPadding: 10, + callbacks: { + label: function(tooltipItem, chart) { + var datasetLabel = + chart.datasets[tooltipItem.datasetIndex].label || ""; + return datasetLabel + ": $" + number_format(tooltipItem.yLabel); + } + } + } + } +}); diff --git a/public/assets/demo/chart-pie-demo.js b/public/assets/demo/chart-pie-demo.js new file mode 100644 index 0000000..641ce73 --- /dev/null +++ b/public/assets/demo/chart-pie-demo.js @@ -0,0 +1,44 @@ +// Set new default font family and font color to mimic Bootstrap's default styling +(Chart.defaults.global.defaultFontFamily = "Metropolis"), +'-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif'; +Chart.defaults.global.defaultFontColor = "#858796"; + +// Pie Chart Example +var ctx = document.getElementById("myPieChart"); +var myPieChart = new Chart(ctx, { + type: "doughnut", + data: { + labels: ["Direct", "Referral", "Social"], + datasets: [{ + data: [55, 30, 15], + backgroundColor: [ + "rgba(0, 97, 242, 1)", + "rgba(0, 172, 105, 1)", + "rgba(88, 0, 232, 1)" + ], + hoverBackgroundColor: [ + "rgba(0, 97, 242, 0.9)", + "rgba(0, 172, 105, 0.9)", + "rgba(88, 0, 232, 0.9)" + ], + hoverBorderColor: "rgba(234, 236, 244, 1)" + }] + }, + options: { + maintainAspectRatio: false, + tooltips: { + backgroundColor: "rgb(255,255,255)", + bodyFontColor: "#858796", + borderColor: "#dddfeb", + borderWidth: 1, + xPadding: 15, + yPadding: 15, + displayColors: false, + caretPadding: 10 + }, + legend: { + display: false + }, + cutoutPercentage: 80 + } +}); diff --git a/public/assets/fonts/metropolis/Metropolis-Black.otf b/public/assets/fonts/metropolis/Metropolis-Black.otf new file mode 100644 index 0000000000000000000000000000000000000000..3abd62387a3e2d22fd0d1d6b350800e7a2c3ab19 GIT binary patch literal 23696 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 literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-BlackItalic.otf b/public/assets/fonts/metropolis/Metropolis-BlackItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..3d6a9e4323037949e9e5d9725cb137fa4e67d96f GIT binary patch literal 24288 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�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 literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-BoldItalic.otf b/public/assets/fonts/metropolis/Metropolis-BoldItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..f2425159c27f0f7b936fe3ca694b250d46e8e31f GIT binary patch literal 24332 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 literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-ExtraBoldItalic.otf b/public/assets/fonts/metropolis/Metropolis-ExtraBoldItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..667c708f078f924b09164e2a2afa74cb2bceeb6b GIT binary patch literal 24588 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 b$Z?eSmOj8XL5}vrv+jG5_C4~4)r|kyx)Ujt literal 0 HcmV?d00001 diff --git a/public/assets/img/demo/cards/card-img-overlay.jpg b/public/assets/img/demo/cards/card-img-overlay.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d95579a9fc73d9296a5959941f468bda6eb6e0a6 GIT binary patch literal 112349 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 d+PH@)8o$~ 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 VQC{*n4;d5@$YgT~(ZW&V|Jf%iEua7Z literal 0 HcmV?d00001 diff --git a/public/assets/img/demo/cards/card-img-right.jpg b/public/assets/img/demo/cards/card-img-right.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d1167a954118f301f29a7c2883b27b76b976019 GIT binary patch literal 50204 zcmb@sWmFtN*EKr0LvYtXaCf)h5Zv9}2e$yh9fA$+?(P=c-66pSCoo9x%kw_pTJQaF z@2`7LPfhQ2>a6OTI^C=Ho;vSq@4o?`p-0NIZN@V*C4A}1+ntfHnYEvG2; z(E$KJqdJ&7xa={WD84o^N+5Vk7i`<;syi&pbS1RiWku3KiK92zdo}}0H7@l03g`-UmtZo z0D$oW0BD^x_i*$4?==8KALmJ^aTs&BWJG(E`%j{{s>EEB*Yt@T1cJ%ZaH?L07xpf` za8V5)|7zR5fW@H`w)gkzLdM;pt6R$D><-xj~r?5aO5eBe4UiKh9D;<}a4SMhl%i^tdY zWO1W5ZYnDHCZ$AIMQ8iEP}8!SE-0n0K|h*d?vonp)Ei>g*Ev0yzcdjy-!(O*zFVA8a`s29y8nbc@FeCe>j;wJ zEtDDlC@a8GCWK_%gU^RlGSJGlP{1q~LHpGL8nw7T^q$8Q286Z9B9;D)eGVtI>X;s~ zGfYzQuW{6T8I}$B$}Q6&i&4=X)je;+i;>8?^r!cjm78ImM3NE!({$^UfMQ< zx*ou)?nWWRlY0Ot5~qmYKK;8GSlY#Zr87|4n~>lUK-aUA;*7;DaVQp;YOJGo>9Qa* zurnie;a2_*_#8;mG2Zi2p_tOh+?dZdTvf-y+a7sA_>CNkz)Ha_uJIK7YJohr#PD|S zNFh}SDeAO9ykC^-vUvwMqgI3i*ace|ISvFEB98rqVtLxB!#6w%y~FRI8s^Q9&IHZ8 z>BO2u<=2rXI(D0LjN^xYjpNaz1&o2|NMal>w7)&xPkr5sYra)DO1^xJvn7=NVPxL5 z#Nrf8!9TfjzgOcvO{d_xAnc96eR*YOTAEi@u2qBNRjD>iN*%^vaWY}ekZw%ZMLd1$ zEKNWL5CvDs^c)9&As2~1tx1&51Sgbh(>Qi#Iz;4StBoY{W>2B2fShLB!eW%|%_rXh zA-32PN#Wft${Eu+(Xulg$!kboYP9itvQUcAwCvI-cjK+~RnbDssc$6fZeYJD`8V$kVX12^WVl>(=JlB6n`+y}_T zfYI#Daoc+AC$~m4WjM;Xh(_?WNIoqs9aC-lwXSnm8t(B&HaMaAdz#>2(~~8qd^NC@ zv50LwrW&!AI~$@V5A$o11KV&*z4Zju`aSE;w;ZnY42KHJ_o zqPe?rH2lTdlia zFQb%B>oe&nh*?mp_2t9DP|A<7PQS^GkZO_6Qw?D7fdo2cIl_NQLX%&N(OmqjH3;^r zE3$61UmuOfX`-4E`ZiqIQaH*klcjx|vy3q@St$ya-Y%mCjQxr)?My3*{Z=C}-B_f? zU5@>!*FTG<`Fn4f?yI|cnlhWT>ab@%aiEH=?#<7W>go&?clf`;I8FyA*+{JL(W2Q4 zfeG^LEspvKo)`p%C!c0QuCQjOv9T>b9UsrjmkO=}gLxk5a*+nt1uG)5^l>@|^vI*FPY9s@G} z2Tp^f>|@tUyGm=szH9zVL<|zTAs1qgmL%5J9JhQwG=PIB?3sXnDbyHWRsUC znY<�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 Pd!ykH{zu9_7pMQ(O4(zM literal 0 HcmV?d00001 diff --git a/public/assets/img/demo/cards/card-img-top.jpg b/public/assets/img/demo/cards/card-img-top.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ef4271bb78c6eec77f28fc4d4f85ebcf46b76e6 GIT binary patch literal 82922 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%0De&D!e~loY>#sCzcBEdz*iuxClI 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 \ No newline at end of file diff --git a/public/assets/img/demo/demo-ocean-lg.jpg b/public/assets/img/demo/demo-ocean-lg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4f967bf924bb4ba9dfeff30daa1d2b766eae4da GIT binary patch literal 83022 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/demo/user-placeholder.svg b/public/assets/img/demo/user-placeholder.svg new file mode 100644 index 0000000..b778049 --- /dev/null +++ b/public/assets/img/demo/user-placeholder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/img/favicon.png b/public/assets/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..a34f1b99804a3e77cb5e0251fbe2a18af878b38f GIT binary patch literal 562 zcmV-20?qwWNk&F00ssJ4MM6+kP&gnS0ssI|3jmz~Dj)zL0096TC9nc?%ZU?$w%d9^;<&wfInhCQg}c=S31Bw06$fF$G>g=U_Fb)6abD9{cjS+d$|uFQ#d#}L<+-8E8I)%;A0|lO z?9bk;7Dw3s@8~wx5b<}mM2)QZxgNOz#Q>!`$cgO`Zh4#(RogjL?3IQ%$fHXc;|Ek5 z475=`DEGjKkl8$2pHT3s|K=b5buy3$AQgN&$Kektb?DI{mj%bsx*QJ#2#fzigF;ch z@GIP9qf&3>-nvzL21~9ABbYvx3>}WBE(yTDY7a|KBeB=k8G$6*Zfr&SqB2x)rBFx>wfM)R&a-mgKCI_Stf3`INPn zbf3!BPKx2}$n5iU7M>of_>p>%P!<(PGnlcs4p~_3L#3^!6&yQ{HuG%yxD#gc%{?X9 z?Bv6!eDwI#GN#n<*()wVnzWiSa?mLPTe#q$amM zb8Z7FKgw9?glwj-RfxxvgyC>-B~Tay;qN8)9}B0~843$teEZBmwj#0_g95W`=h@`d zqT2dOj2<6Y3<7AKVjmdWCG-Ak7_HnnV+BF`#1-BSu>qS_rziQC2)*J!$ECpl0NJDq Ag#Z8m literal 0 HcmV?d00001 diff --git a/public/assets/img/illustrations/400-error-bad-request.svg b/public/assets/img/illustrations/400-error-bad-request.svg new file mode 100644 index 0000000..1f9f917 --- /dev/null +++ b/public/assets/img/illustrations/400-error-bad-request.svg @@ -0,0 +1,601 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/401-error-unauthorized.svg b/public/assets/img/illustrations/401-error-unauthorized.svg new file mode 100644 index 0000000..6fee0da --- /dev/null +++ b/public/assets/img/illustrations/401-error-unauthorized.svg @@ -0,0 +1,948 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/403-error-forbidden.svg b/public/assets/img/illustrations/403-error-forbidden.svg new file mode 100644 index 0000000..300d820 --- /dev/null +++ b/public/assets/img/illustrations/403-error-forbidden.svg @@ -0,0 +1,690 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/404-error-with-a-cute-animal.svg b/public/assets/img/illustrations/404-error-with-a-cute-animal.svg new file mode 100644 index 0000000..2bf242f --- /dev/null +++ b/public/assets/img/illustrations/404-error-with-a-cute-animal.svg @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/404-error.svg b/public/assets/img/illustrations/404-error.svg new file mode 100644 index 0000000..aa1d96e --- /dev/null +++ b/public/assets/img/illustrations/404-error.svg @@ -0,0 +1,566 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/500-internal-server-error.svg b/public/assets/img/illustrations/500-internal-server-error.svg new file mode 100644 index 0000000..5ed97a1 --- /dev/null +++ b/public/assets/img/illustrations/500-internal-server-error.svg @@ -0,0 +1,1048 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/503-error-service-unavailable.svg b/public/assets/img/illustrations/503-error-service-unavailable.svg new file mode 100644 index 0000000..8dda33d --- /dev/null +++ b/public/assets/img/illustrations/503-error-service-unavailable.svg @@ -0,0 +1,559 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/504-error-gateway-timeout.svg b/public/assets/img/illustrations/504-error-gateway-timeout.svg new file mode 100644 index 0000000..f80c85d --- /dev/null +++ b/public/assets/img/illustrations/504-error-gateway-timeout.svg @@ -0,0 +1,711 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/CREDITS.md b/public/assets/img/illustrations/CREDITS.md new file mode 100644 index 0000000..85fb16d --- /dev/null +++ b/public/assets/img/illustrations/CREDITS.md @@ -0,0 +1,14 @@ +# Illustration Credits + +The illustrations in this directory are sourced +from Stories by Freepik. + +Freepik offers hundreds of free, high quality +illustrations you can use in your projects. You +can view them all here: + + + +Make sure to view their licensing terms to make +sure you are attributing the image authors +correctly when using their assets. diff --git a/public/assets/img/illustrations/at-work.svg b/public/assets/img/illustrations/at-work.svg new file mode 100644 index 0000000..a656600 --- /dev/null +++ b/public/assets/img/illustrations/at-work.svg @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/browser-stats.svg b/public/assets/img/illustrations/browser-stats.svg new file mode 100644 index 0000000..0a03fdf --- /dev/null +++ b/public/assets/img/illustrations/browser-stats.svg @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/data-report.svg b/public/assets/img/illustrations/data-report.svg new file mode 100644 index 0000000..8ec4167 --- /dev/null +++ b/public/assets/img/illustrations/data-report.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/problem-solving.svg b/public/assets/img/illustrations/problem-solving.svg new file mode 100644 index 0000000..bf2ac65 --- /dev/null +++ b/public/assets/img/illustrations/problem-solving.svg @@ -0,0 +1 @@ + diff --git a/public/assets/img/illustrations/processing.svg b/public/assets/img/illustrations/processing.svg new file mode 100644 index 0000000..a653e50 --- /dev/null +++ b/public/assets/img/illustrations/processing.svg @@ -0,0 +1,577 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/profiles/profile-1.png b/public/assets/img/illustrations/profiles/profile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2650e7f47989f1d6d1a770536e11da29e6a19924 GIT binary patch literal 19617 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/illustrations/profiles/profile-4.png b/public/assets/img/illustrations/profiles/profile-4.png new file mode 100644 index 0000000000000000000000000000000000000000..7aede29537cdadc41a6f0057046c48d40c22bfc7 GIT binary patch literal 15186 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 AT>t<8 literal 0 HcmV?d00001 diff --git a/public/assets/img/illustrations/profiles/profile-5.png b/public/assets/img/illustrations/profiles/profile-5.png new file mode 100644 index 0000000000000000000000000000000000000000..b87e16a6951c95a601c78ae57e181433b44b848a GIT binary patch literal 18663 zcmbq(WmsI#(kB*N2X`CX1_|!&?(XjHE`i|g?h-TvcY+6k26uNS=+6JX?|pYa?AT9C;&m{?h;T9}yoxQtowLqI@N*{Ex~Yb(g}nmIWzoBY#;+1tSx zObr3SFXZiPVrFOIPG)LhW#cG7aoO2RL1tqvK%wj54-X57jfIVk3EYCo&BxK*#GA>{jq=|d z#4X&+Ty31)ZJZp*{^4k1>g3@rKmnHYzlPx8{6B0R-Tr%;z!S#eZQ{(r$_)BvNdIoA zpz!~0>frD{t=-&JE&jK>|5wIt>ORgEEUFf6P9Cmi;DxiK{HH5tUNKh-6L%+9btfnL zf6t<_wUfJ(o3)cO85TXj#LUL=pEq>>B2iG_m2q@)H*qwxkP#Q405f5>u`%bB z5anX$5|QL&6%iLp#-| zqYVzu;GV@TTx~op%q3l&9LWAPYF?ZFEDOhfBsJRptPcx01g+Z%ig`Uy*r9qYXB><;-Ufz{-!)MEFlBsQe z{tdiISPKaUggm!>Y@2p6p(HeQ@q2fc2B+qJw9%|Wv4EM8`CDyulQtua2rX7j+aK*2 z`=^YQ-`DE-DY{NoAE-5o*0htb-L%7o|~%} zJ{Ra*CAv_wr+>TZbma#o!%0m|C*gCUu>Rqu&171ICBln`Efr51WfVsWxxOe$aLVb3 zd_!CpC)uuR#(J{eQdL*eDH^Vt`rEn`A9nZlGXct)N;nYNER!i6DI#JY8+!{bYA}Rs zbh`JQV9yGIph~pHZL{3xM?-Ow>v<$f=i^1UvbwuX4u-^U$E>VDSGW3X{&put)K^6T z$hG1lUo31~r?oDh%l9|1iuCQA+#LQMqRPCxcl1Pkxj#-x%I^uBqkhzTEnLQQJ3uDk zMh_fL3@<_w?gDqnJC8%SPmiLI)V6+*Q8Sgzx|>B)5Y9^vG#TAiH{6(T>Qd1#AP$|T z)}Zb0YtWN_@7QV}7ZVKp2xuEdlfe`9KJ9)CH0l+^;!w&+9L4TCY0f5i^PX}kkqWxo z@ar3o*bLO`i^wX3!c%F!?EUZ;5up_Vk`Cg<++2S4I$wX8W9eP5%3ix|Np*LF zrxTQ>K!k*NH$8H?6$rS#RX8RF=^qceN z)=4GbYkR;;lSWOk_|7gT1GhN9#@@Ahx$s98VdtI*0RcfFFuV=EX5qPigj8x(4-?hT zL8no_OtZ3++C(t4I58X@_j>na0k(t{(TJ$B+#}6`ElrX!1@7a5A_+bjeTO0t#oxDV zMnh4jwWvd%u;7nL_19nH0%T9$?vlr(<-))dQe4`?!Lb_~3Y!fi#%b2CLujBIA5T3= z=b!vF9{SJ!4VCboq05D6p%&Jk@fTRHGXjZO-K|^h+4YG%1}>a)S!ikLnPG(>hK}5E z$q;<_Ba8Y&5W?Nbx@AI6`C`d85!JJeJy!erqgO^LIO+P0cA0D6yaJS|Yk|vx$iQ|(fFezCaWQr6rwFLn*G2hwR9z@Du44J=CM@EdGB`paBe2qm2M-EWI_^w+w-E}o^5%5BW zK#77p=>K$Fk*J$5R`vVSRGc1#8hZT1a+!5@;P!%6$&hsd1;BBoiRz9$F9J2(v{Al_ zlaL_Pl?4GQc7P#HDU|H}?WBe?2PGNg+VC1hO7@)}rXXRMx(xrMTA<2e)5qF$SK;}& zwID-F-T!$Q7i=j*n-8Z4Q4o~yzaZ?W&Yf$1ox(ykP$$NeQp0j=?sz@T{%!}h?_t1L zn6s5;xTXor(bVdp*bCH}VQnp9BG{NxHZcbcKNRlxm%!h}qZhZ<*O@%dN9e#zzc;mN z^>GaX7!iW%@i&d+F%)q?6*Y4R#g~p7z@r6^=f$#`icVH?F0u^XPh*`2(K`#~>v({w zaP&~*xNGMEQDqS|I(YY{PUFIho3;~a=fvHA&u<`BcAraULR)h~QpbAz(o+7NSjS;(dvQ5cW z1rzoHL?caXZS5R5bEJVMs})MA6`(tJ&4XJ=G-&IBuR~bJa`vgZb&)`18X|uGr;&vk zG-3e)6v3x=EH#C8Z|IX2CJkBz6c54N%=Ba^89b88Z&f~S7i)u338IpJgM~+ahn+&p zoLY})t#&hKC*`Bc;K4$y`CXJ{)M_%6rc9fTJ0i?e023QoW$1o(5Rm@*v?va9$u9A0 zKz<{OT}j}B-@I^o%Pdp;TT2eKs3;l4t}45|Wy<=_SErLb1WbyyLrQT#HdA^~_YERO zsy%HIqJw|(@Sm*@pgY*>SI#$Hr%QJ0T*~DNMw)0TWPv3-(Qfm0aWEhTCQmCLn}#&7 zy^M`%0+YatUl@caPSL2Yxbx5v11P|hG~jZ`rgqJcqzn%S!=DkOz!32p4P|m+`RKBy zjvG~ygxi#xXh=;;THDGhw#7wv%W3G$(8tXHFY};JNx}nfL2nYtz|s^nh_$&Pszew= zHOPF_>iaiss7#!kTqsy&0|^@j z4U{h!pz0Hbi4Z~DaQfDF>?mQT)K6`%-{oGE8IycgKN19Ao$u6<;$Q%XuXT;qn8^;* zDc^q|m7^pk3J)jKtDDTLgs)Sh$AtQ;B@eN(YrQSZx&%eA~m5+VhBxCZn=lwHOoVo0DF=ir(e00Bk>}DNDkP$ z)5Dx?n)ESjf;xI?RBf-R<*2^i@WEd$`7uZ{Y=ytQ0;!-$yUNR0|3n{(o668+gu;h< zzwc+DNKyh#j!e%gRs5aYMGMoa%yz+xF^VO7MJT3X99-?*IJVy0e~8M$l@Z3G=bz(Z znxYCeO#NC?WwL2bimO`IM3%Q;uS|v@hAUghhT9 z-2ci5|LB!< z%%=QVH~S_>5A5Q6#FIg)I|x$;9nYxg9K)*k3TjMtY*852F#wrTe`GQAR9IeinUj5spph4|LS4jk?a?$B7qWPwx9z8?gWmR~<5gTz&|v>vZgl+v}-+nlJiY(mvu zd4$_I0^ozosI;IoFr^7gWey+~2wstp4Pt-_&mCK-OCC%R7~Oo<;7IWpczgBIBuhq70g97p#G^^Pm1uWH5*14K8PY8#?#&7Q;fGZ@c_ zm6sTdi9<{>aSi>ZFkwBJVEj1@snn#yDgA(G@(F&9!=A~WH4^Q#sNfZUFGds!07cI+ZU_ zj`p-Y8)d^f-rjpIr0wmqjIMkaT?0E!uwi$c-!(&S603i6eJ0a6o%XRg>u^41Rp`cR zO%IPYSK;NP6TXOrUS;-ILjcI z@LKWe(i!yowo(vO#0l&YW82Lo@iFr&fB!q{aLYyVeqG( zJ$SoWbt2~6HOrK*0?3#P7gW{LUnWZ+m5JY73sJ|Pr=7^`@;1L2F?gM^z!%1&z)yP% zS1c$gT;>q?9czK?YS#*SkHuZu`-%2YVK&#xHv{KvITFLkVValu&&zY9e}ruJ>AI8? zilXPVWBgd{;KU)>E!kZ2y3fqdKX4T?)b(nsB;e;Ko9yf*bzY{X)YMSDl*^uZ`T1zn zc3b+wS<;+>E4b%-`u(RlpOyu;mKg;5aMg|PSIRAfKx(Djr*}Ok5g9z)CztyZw1a7{ zTSIySWNNG|0$b?3{(iU0(&D&}?6MTOF5a4k*6S4?q3>`0zfwiC9;b6zKX9E6)9>*1 zpAW6p?-x4EsJ@?nheZ2(J2#gyPpoxouI+ia98-Y0cR9*p1_kQR(>O0TwKbdKTI)9(y@<9zU%@Q>Gr2!tB3!R4Dx7m>E zP`{nH^!*%Q*g^VKeR_67bdr_@oajQpDpj}oriD2YKZ#3 zjt_sub_Jtd>!QMjD^#tltKf}dIeDAAn%?5g>$#MB#5gn8M!?Y zqpnZRXEBg<$xK;p2EMVlDx<+mFNpL(JnoJ`B54~Z);u}Lr}-QLTu5I;$dL8&RZSYY z8f*`XD1@FIz7FqP_PjP}iGS^PrrK^L=6k;%XK)bG8u_`)Y4-*0sXOQe2ILu5#L}>K z)9u6Xc!<03d3<=_6wU*VpjPrgqWg(G?fK)i=~3IJE{9XtE5PHqa$6u-H{g9_Y=F|Ehn6T+BNuzG01Kz7w$tY^Z;g7Lt>iPQcnFr6*8)5Ut`8_2j)TMN~)i zd_Y(5W|kn?#ynT0 z2;dzlU=r)Y@Oz0EtfB4e$#kc}14HZ;9 z#Stl~#q$Ol6MudEQ<1P@13d9V9+Et^(ZO^SoRP7nj;`@Y-)3TXA~LHXC}ebQ0m%g+ zCQcfj^5rFtLUdFA3_om=**{$3ww2=vqVNlu?I`?i%DiLzgZud zHLCifUk6QJmX=kl>s+6tvXPTOkH1rX+|iQ(gjSHCx8u}yXpn)>S-#7g=oR0%?A7qH z?`${%I0=^+z8%t7B3bu(Tr5R3e(1$^Stw1BR`VIE=!?g}Om_nD5D{_O4 zfY5%l6sdxoLIe<*(A>%bg@n6-rd@ch?8u@tzD<_eEI%&Duyi- zv6QDiOrfV`h-ELKaKh(Uau)u`@Ko^>GQ#}MG182m=QTgwA?%xOZ!CR~~8NVTHmvCX>4TSe>rPoHS<=9y`m>jq8u@CREv+{9cuZm#)($L1 zDdNEfF$JpJ(4TYNU?VA1e~fbqCwXp7d>G7dl4eNO^*ny-bj%kt00ORy3AYtQ4b?g- z^e#Ilww>E14aw8TG&;1!96U}XaAA_@)CH|G1-D2`+zfMAI~JmR(om#gY{jAE8F0N4 z)S!_XG=vk;8Zd&3a(_n_)Xajt)TUdHKUgpO#tsC~3h#95fte7y(6*2`3t9G5DAdu) zGfaw~R-jK}U<_CP^xb``pTUx&I!URuYv3htfNA^QbvTo&qJ~B)fQV{V(mV(@VSVp! zQmBN~=|YI3KB>tV~Q;QD1fDT7RMXW?{CVsC@YzxV3B-1qq3F^iqC;mEt-Z zpEkb^YLoJFc)(SMTEF>S6$br;r#n0exf{IQuod)?!yV|qnM*X^@s<8xHj&2xFe5mWuQ0S#Z9R2JIy| z@Oi3hYKSaKkRc!;BCZ6|CQEm(%pnmm*Tt)It)v1>Lg~G2N*7d<`h9&Od7X=@8y*nZ z+gkdO8E4578^(~ONP0fr_k~^|bZ|p}wck9Ff*|*A>DYj5Q~J7lPjA-!agaECb!6D4 z;z&_Ftjl8s4uZ2ykYgZ0^Sqn*@OcXfVIW}m$bI4S=S1%$Nzsgu2cn6H(Os(7Jidlm zW0^(zP#?Q*HoM!i^_Z@+o_S18S!SCev;LPd(lf~3xX$j{!qqYWUfp+Im$kO_^NN~S zMe%`wSlNAw06dAEOkwGrc;=uk!|0W-sqoJ&5bi1tUndn!Avx)2-c}uG1l!C8%9OIb zhz0tKicgHta3S(q2b|lrt-546YxQ;%#C&5fvUXe>f0O}XMx~W{_wJA|cz|bF`xHL- z(Yt^w3M>*Q?Z+X@EJ{o`KfT&t_H%|=S1&6f>!e04e;cd9=FC$0t>z1cj0f3G`J_X= ztGnK(j2=RRR^O`@&Gr1wptyahjtzTk%x@<;S`b)tA`?9@qz6Xb_v)qPG@<@BDRe8<6p4J`rjWme!RQvC4X&K2OeS6$E%GeQa|Pqq|{Y@ zODfH3)_Csh(R~bBLJly$>C=pa9GE5Y^(p<$ff9{t15~e3Uos51zdT*~@w{g8-TiNu zpGL2I+Wc`k)exw8Btq>B=DYRd@xI?QhqnI94&(~|XC^Q41XR-pMJ! zAbaqz0E`-kj6I7vdu4;fUbM8^Zue+%P;avVentyIZvOT27uP46wlsx1$2ZT!e=UM? z8S{IumFs~Hr!X%ZV|LpKs1YVG$>>|ZqexbI+$x4we3gpr7+6F4ANn>efWdfoKywmf zBawYMp)>nm?u#Vx>GKf9&PYFaJMEoFwoDY8 z9Pj(xE*#bMUyf2mz(96w)KK_L1pj&q!nC2GwekFx40-ID*{YLF1^{3IXK+g9y0330 zrhA@Dr3Dry*X%*#IY9>{@G>5?cuxE(cV{;aQ*zl`YbwihZ>pxMW~sdG;U?O-rsH=9 z>}e=)%<9B+-`1VGDmTuw*$#O#7%2L}CuC<@J!FVeNeb|5blX`-kK%%LhwtNrQ@{UE zx&AAl*6nMN!Q+JfjJVjiotOnkp20P@w2Yj;9jY;BS>xV8EUPW)w`$m7`L>c(uJ#Kr zJ7BPoggHe!Ohu5D<{Ye%3ZAB`S+fRK6CoN0O`)^#uQ%7{sZ`w-+S5L#Xz#vlTMtRy zaOESUbl;AZo6l1v`x1*v^25nyzW89SZNuk9VIVb3U*=b*>SL4+x{HgpYd1U}GSRY? zdWvZvNDT}<>4EI*?5984+|m?k#2U1(4Gi$WKU=X+f^@9lXw*Ee%c>Z4w*)xFu@XI? zyZdYw!8e_r;tp4y$KIrQLZSR!FZbC$&c)bQAKiDiqW9M?qLXjMeklKp29HWYW&TI;I6>CaTqkwC@6OMf7c0-qdt!-1 zuw!bW_QK?%wQ*KKwGh_LebEhiANaAVw8qv|@iK%dtUo>J;knc#-~$f#PwV1$%RE9T z$o+H>riHwiYy7;VyS{u!kU}OtIj0kr(7z30ukg{aH&|DxQfRNCpcl^7#D^v^&{(%# z^)5cTXe6%K@9_|Ky1HB`!DZyWe$oij`=tG}K;2c_r&p($B@Y{o+X(Es$hPa6GuCL5 zKr_mzeDIY=zK||ED>(5zCui66=vhIZQS=Tv50RoqvuDmeCpl&v#}G&+!s>qB`a2fD zHi>FF{Wm69dY~8A@>jl4K~@r^4(=FGUQXtk--kq*Q7B)4ZleNy71a*86_<VT}mR(~IMgxU4O77pj2TgUl zg&t~vk0WIgRHVo6ajw+gRL%P9Nx$(OebAWY0nK$D`ijJyHK=c7GE+0T9q+7_hPEhE z3^EYSX=lIHH!h~{T8gP@*D~ZN(>oG2&mqUjzg{@(u6EW3Cm1fU+&-4zzP|6ECI_Ac z<$MGTI-@}|GBZuD@wd=CnH=ZyUtP{EAqyC4zKqBSP1u%3hj%_)5c7IBM5zIRCf+4c za9^E-Rm(bcx7|57@#LnHIoava0XQXfMIGG?U2FmBs|&cshESC3!wyfc4wSwun<`(eg>ptw0fSY{j_@gF4L;t&nnr<{aY)g zK-;l`;U1hkFAGdnLN2EZa7wvkPGr1&MvCGxjUzjLLM`4}k2PaAcnwn;n{C}fK&{&2 z2O{EL{tL?WgY!t`#$!Fh_`qTV^n19bGc>It#&QnFV)B5b{ z6hpx-Pw&K-B+rg>R$fZS&WhJC9&ra2HSgM2e-9I#ep4W%r0~MSL+sYpsZp7HZsed^ z&~N-699;%^><;sHD;~k=qoZEl>0;93rsmEou+dY}(bEbK9>hw6B2SBxs~_}gYC7AG ze_gQl`EOO3p4UN!m!Yyyr}@OKk`T%dxRNj7_%=2dgl+D2)RVASm=H2}xlyqivYXuj z{4>w8g#O#)gRYzB+<)uS_zu>2es?ES(rlF+ohx(_)I1y-JvS)HP8LVizu2BODsd8* z2N?YNH2wEA=6nhHh|{_cLb{cf!bH{7R9`>W52|HBf-Z{58o7&mJjLu_gY*4*SkH4W z!^dOiqIthr@a_AC{m1oKjxWvMk?{@>Zx-^OLK=qP7>Nr#LGDn0+GWk5;Nv1}kQlwr z?fnr>+4_T(7cMg*(f(W!T)pwCyVtD|5b!oOSF!qXS{VDJ`F-3vxlaKFP{t|zY}Gjz zBI@h$FslHeVuNbVw3zC_Y}wKDAo4s_~&;d$(CkpxbzBB|fa!p<$zLl>?M z<=)|l0`RlakZXs0PT!wz-DP4Fw@qMOKx+KW{x5lyZV=G@_2#NZB;!&3Zqd?}=XOO%pE?p6t=;)>Og9CkGGo`T z!h*_rrF@|QbN<2&d*U%qB_`q@$2;p7=P~M#D~$a20Fcz~mYth=m$2%n*JK(|LBm0% zFWli+O|mF}LF8Lw79_F&cDu4+!+T_X=u6|nRk{|M#g@K~p22NPv+zWTI9|oIj_ZvB ztCDxNm*l6D4|P6e1x|vh%4YMULu0xT z5Dn%*6ZAefTLzzcb?7r$n-TEccYK>tMl4K``$jrXOk{8m;T3o6W-75h9$=-P+<@;Q zdrVB}7Z$dp?p!@dDT#2UEUbU$?qlyUXsS;6r8hQrBnmM?CMg zeyMa*iQ1nxB01cD0+%tdSQ*B@?BqD->%E z*HB3?3!U7c_Qz{0SdR5iEah9-pu+G z7~(i7;+UwNMS|la;o4jJ?6@Y*P6EtCT$Xzh-ju=LyrEX>(fEx2pZu&9SE-zW0 zBqR3bZ|k${fW5URRhdf;BPV{`P+&Ft>Mg_lp&jyJHL_LBy@W^k0sq?i&OGTFEBQ@sx?VcYfgw)=}N?kB1U7#i6<)<>SHE7NRE7|!#{_*-gLzwmKwC0ijX}uiqv5$KS zu;*53IT8Nyi<(GXsw6R7nDWi_-G6AexS{h`x)I-HMMb*fdSE%DFn$v>3WMS|KF<); z;V3C%4@0gm=2YaA0&gdDYMc(sJ0^aS`-rW98w40B!e6c97>#bOqF03U9}z*rtU=qd!^%}0T5n&fTMG7K9H8(^9k z{#!vb*zcl4j^cr8Gd~W#xt1MGo+vSGi*Z;*->Kv6c2i88L=+$jxB(wyP9Dz%aD&6M zD_=G8pC2b1H8~S#8JwAxflZcU7jp(ZHjwP`q5xi(!@3{O%K5X3;YRP@!R~drWQl8O z)j9EwulKy*=A!!JoL|H0qKQK@7d_IVP0YN!-wCN*UQ^T1P+9wEK?fY~02a1!H7k;1 zEK#RgQ`8M5phvE2xxXL!4;LF$fPF?mJ?ng?y=E>J5~zw+deuu^ABRChtm%8yD6)lX zG`LvEYs0TztAa7lE#OcN-jiIGa8m9ucf+|$+R3BkSq+@=yQW;CsSZ>5Ho0*~Ac+At zwn$QJjr*C8!R{!L99(vH{fdR87{(UH%~ z)d~%=LIZ#nmK>peXz+3K(#MPtQclk^J6sjz3`TljalrXzC|ac~-jfM03)K?}XkyoO zb=GW~CN(U44x=u`$Amx*{;rCaXimRP2k|4gxC-YqxNRvT%Zf^iF5z*SkLJ{O&61-P z@vi8wR(^?Ky-y53-^s4|_WacSXwK%XD?~k(%o2zNonJuQp50h{+9@9hK5QWla_x zq(!F_*Gu5Ivx5RZN)iHfn_;U<-qFKs8ZZlaPmnmBRy~goK~n*E^uX9-SUyN_oYvZ2z=6EV|lO4wJ{_lT3?FOZV3g4^ZMSmXa68Pq{H(}QG001 z2GdVx2-2b-!Y;$*qSq}?-+=-Fz(%OE@Mcg#EKk`Dm_prJs`|H3AWL* zj#P}2dI4$c$}}p+L-fRCR@Pn!qNOO*DbE9qkTQ52GI-juqr0kjvm%(>BQu_2b?e$R z$u*GJp8z`Wp0H8TS0rZE9*9KX!lnKe1n5o)NOffkRZBA+$O(?&R2L%j*sU$3Vbe6t z(wV|n<-hTG7NI30+S7NVWDDLWnX@6*uIL64Nah10D`s zLq-dpM^6kRGW7}z9ouo~oMlQAiJh&jEEHTN+!zS#zfeiHaPnVFq14HQ`4v(7WIv}e zhsB)#La?~Xi2@=M%ix{uqr>boq_E|!Vm}kqV@oGPNUb6j`wI??C|@zdpSUAf12So2 zT(>^yEVdIOYIFU?XuCm>!Am|W_7<(;B+2w&TycG@u9CWip8zoqmaOe7@5|95vo+MD zGX42fM2)~ALY7oD*G!e&W^9ifUhx4gLv=5d+eHZBq4_E^UwV%mBBM828pkUgC{a;O(Ablt#+Q`{a55T+g%Ja2g(Gi zC?K+02T#-lB~zL)L21ErB59-y9vFCQ3h8>4RJPa0MYMTYE^{=Bw`W809PbJL_jdvM zEJ^k>ED+CzU2V(xkACNhckCZ%C$10ldhz^x`Zg;L>ad73aIFSRlUa?*0KxP0SRzaV zq0Im!Y9xhD_FY`~)XaF|2(<}X+=x2hs0Bsl&pwd99p^jYfYR3k?mn^jA|2z?M&tyu zcAOfPFK$cu35B%dBg*o|CR8V+mMz_1R73eeIDV#VHz&&nhf_^MMCuDvdZ-1Mv{KKe~v z-^t$CM-az@E4mBiL^FL`bhO#JBK(f7ozgene2$lG+j7ABNc_)n#G_*uwOk#LQ ze-F}Grq{LBl5(86I-^lH57{)*xv(IFg}v!Zd)?nj4bp9`pxAo8{)U-*l;jyB>jqc1 z^yImN-Mt0g`kCfHoQn<(wJZkEBACDN;3r&SLC3r8Ne5mfnYs>0QyLdR< zltQ`fwiEOjv!4h^zq*^_pDk&o+6dUcHwPwQVyety^Vylv*ynF8(BWCkaMXTN@}Jo^ z8nL(~Er>N(k3v&R7X`F_UALM>GshchP;c2>wzCJFZfZ8o0i`r!>9W$S+GMsH@T0z{>i=jLdlv zrl9_dAzmsY$wy;GKOAU3@R$>09n#v}TMaW0WWlAUkig5oe!xP-*5SZZe?}p01=?&h zz1@v^T^$!->fPdJYExFrv~B$;@mb7wBv{MTr4lZ28R+4y`Uz)Zt%i)fI(=hP5_SG# zpPgNhMzSl6WkU*+18Aadx}1)bN;{?yrZ+cH((2}q9;q0CNn7@PqKlWRH#@+T2f=;* zky9B(6EztW)8M`v?XTCG11pT%O<%=n`vM0)D6%5yG+i8i%}9^S6VoNoxG^wgaLIvN zpf8eNZ$XYwGDx8BhnQj6xg-%`t|l)%eB; zErU1q`zdztVD4+iF+wD3nNFwmz2QAe$ zjoc4yjgoZ^W%wiOMF~DSWI{7XRj${Sznulu=A?$A4*^rGPM8)gE{WkuVN5hr!@h!1 z#*Puf7OAJj8SXbkY0In4!4{(xO#VNG=uT|q*YxbF4C}e`-$J^SM??UUPzTI^%vBP+ zHV;}Wmn3pRuDt8-A1$)xYqM%Wj`zDM+|nDN26u@c+>RfSfBZtgN4sWc%*NyN^wvdu zELpThxDF14R;e#!$PO|3S^Eu}q>;PcgooOE}NE; z1oIMnOvo6i0BTQHpPwl48I5R+6ffN;Pj^b=dt2b5LD;C6n`8$;xoFI4z-UvhKd z!E}96ZCcO!KVHSDMav)h^D`;B0wK!N+T*d@N1vtbX~M3&J(C}&P<{JO<2!M}Ef%Y+ z$+ywqj-zj{B8%5G_rIXJ|DKmc4r%19W9`(lku$NTY-94dOYTk;jji<+?>fdGOU+%R zOU^mqBOiyMV}YEw4&=L-!3mE6VM0UK+6>_*=Oi_d$2z24qe>Tb=;JEKiEC%XHVH%MoR!bbnqpz`N zv*1SgN(Y6@4Iol_-TQZCh2S|DKhZxT$6{h)?wpcu>hJuTY~si|C3+ee|6_N+mwsNc zD8zJ}=k24sy#H3VsAh1}vJZPvW;B}5vdi)z8d5-x&qYPN7e?qoiz3m$ zp-b(H^9xz9iBC-e2ve{xWccajI#EuQCG3DXyL3I268QM9%A_zUGxaeK!)LkZ}=Da=sSy9gp(Ps!`CZ zx^FWOL~p8Or)?Vlw$8bz=%-be1fW8SR+dkWG{#u|zF$TW9*!FGc*J%S zy>HG}CCi=qy}1$wFlNPpUThN-Uo$ANkuPn=8*2-{{8)^)kq~v%c)7h4AZpLM{`tTZ zn22tTt0pv*aqi?bsJ2H799kz!@-NuMdyiX{!qwgr%#}kj1<@mW26*CvegsPFy^mb4 zJFd7`Tw}!VP8lfifFYJ=!!;IkIqTzRH1qU9&tbArs?9#v(eqBpv-+jKp1fgIPpKh? z@MubXNFHnKHKQB#+#9-b1~Sy5L^Ao(yjYcOza!jU%V~+y~s-|LmnGE z%_EGI=2m#_)7N(ihLw^dEi_7CUH!G=G>yI{fOxAFozno^E;4=ib_tJ$n=u@J+qQR8 z{oKdl{vh37x{;|56Dxx=Y0HLDNHKl3bxv1kM`)htozYNA`<7-Fz!yXuZ|O}mNQunv zBG3IG=2rJd4#d|+qm?K`Y%2H?)u6`+hy%X*!oA(F0QVbRnH%%SvsDS>kA4L`S|&;N zy?DZXb}H#ED`-?Rrs#U7v#uZ7P$D@9;(o$IK3P{K{@8lg?>&MeTEGen;R>fiSk)WF z{~N!%Kp38&IG_x)mA0nzR;ncn6gh*RY4@Zo83X0=DTeo0TaKHfTyJAN&DH~!cHk`Gl;M*!8_N3=Gf_-PIl?9;!wly z-$=I0(YMY{`0!*qj0_|R(1^bqew>}NHhk}>Swhtnx=*MMKQcGYQt(}GWwjhvN`ujf z+0_mo_DLPCN|hvfFffklJ=bo@c<|97=a+6fpk==Zc(wn&L|+_S8?c-862vFj+YxEp z#j`35U%$?I5QiC{&D^o35LfEFve>AB`oY6F6EC+CnG%%*&o>6Gxl>#3ug{I*0f1Wl z$L6hXV)nGJzOyf>Dkm_nUQP%y6mI6wxItjwhl6DCq(Mgtt5SzKsqbC1>!LL@Qy6Q0 zIk&-SU!3@d#jz0VV^8=8_ z=xDewihnAHCqMUBibChEF)YmL692*hS)^@imwmZl&+3!pfa zr0L9woCY9J#F)THl*9+HB=V=wHmV%gF0lM^6meJNb{WJN{#5(TIJ!A!;Mmu3S zBazQh`d!Q@9z&?>PWX9%xOKXaEB&?d-(C0vzc2g~WM(>vs&x`jS&6;!=}?v=AiioJcEe-ZE= zMou#*Aa;zO;yV9RraZnChP9f!YEPlrGFe72hEo2QgyPTbwY%M~;p%k*fvO_;>?0e- zv042^b7H4gbSM8@&!l~jo$|#UjrF``X z$}K0XeaApkc-auw^QfPYhG*;pheIg`?fHbSKmx)-z+J0s*EV7IHOtEwjgVOjqXg^$q_?hx7qU22z ztJA}HOIzeTKC`RBMI};)Zy`!AacACk>ip(LVx>bvu>=B%CaA=nnD-ma$B0-<9QB4NmlnlOajtb&<<*_b@wQ_6rYVuBxw^Grl;?{g{JFn zCbwpb>pu^Za-BG~Ft`P1p@SsiPH>X8S*p&}Z__2`oRK^%iu{OH7%&X{_#5C1G*^Im&~El=3gH*;*aZ zNktz$6x2f)~OKkR%2Xje!#nLEdB#d&yKKiH&pI04ai3; zphOBKoBXt*wniE`3Bz-vw$0@w)05bUM^m*`U+s#MELNa!7^(rCstA2|on5lQn-qI8 z=iT{>O)E0A+<*YqySRPdCP_7j(xTBoUc0_GZ7SpzcU0 z4?zarJOl%Fpat&&55(n7>R~`gSYhC%e@@ICl zi5s+js?Qm$I|G_SZrM2!=*BMpDyd$lKJ$V}bCq2&q=O3~e5Vi-C_7tQP8f2#_Gvma zL4};I?3(0yf8;R+8|UXJ3YO!2w~K!LH?qr%zafmnrOTqwQOvK{AVB0Y!WjlZ%Cac+ zAVN2WmSzO*VJhvC@tY^i8*=igUIoGIgopO$ZgQEfilbHM-$!g^`uMxt2|xtn$y0dJ zq$ct-(T}BhjvAi1h(~)rg#m*Q4Y@=ik4+N1yt>NiLJNC)7u9OoEgaS>52G#pb`|IX*(jG`B*8H#I$lcH3=mlLH}^yxzb_tojX zA9Yxc1!Ils^%H$uZd&s3YR%bK?ZR&M*y-(S^J1PNgC|RAy{Uj=&JShDJWC0$@jM`< z7Y`%~xh?x!hho1Rq3JFius|dA4++6*e7==>XB|a^N?a7+5bYwOm!$-aM{O||2Oo!u zaY+_9ob5SAKvoMIPAaN4iVzE}%)zyz?eZc1-E91^H1$-Y>gVzMb5wy%dGy_d%>SIs zY5Td@uv=dAb))7gS{T>v+KD2QCrxzgY=k)508;6Xdy%n1qzfqqN`=VabpDTrx>#pB zR>t~)gr_Rm$Ci=D%R(z?KX9T{Z-diM>LiH{s;YvysPk}nYB8GUR!+koO2C$&6J zk}Xv6;z#ou&+u%O9?go9&i-7^z&i=0BEP${ycFU&v^QZ2znP{P#sbR zp<0T7qojciZxS9VW*=Kl`jC(}s5)t@kfZ)(BXuv|(>z%_^QyV^xl@DTn(IHTPG8cF?-1E64sdCD9KxG@C10x7w3b zRxU*w4(qiuxRy&S2%jfU=PA-VOTU&2IdQ{y=3<`deAE7Do7qqnLL`)n5S<(;)3f19 z!d>SXU;#FlO$>1$SFYWmj%p5QmxzDXq9{ae67&KG%44MF(ip=IjE?}j(WV?lijuu! z&epN7_doMW|1+IgkaaNp>$i<*S^TGrubHz{)8}|jGay`rATlvZ0KoC@fH!3X4 z#5@x&>tj)mYuf7Q7{Gpe?L?mg4ccX64r+wH$ z;MeXnD5v}__M2_LZajWayyu*&HT|5@&tB!++y~+j3!y|$Hx9(sp9n2M(lH4etlYnU zrhYmUHUjYS1bk&7F3eUyDaHlI_#}BUy>LL&R)<+uv0RJT2t|L3dZPPX#}cb-^dFP{ zJM`E?Sw)`TZ0_ma-<-cF;Sr8jmwk=nj8!@IZ(}Tpr^@!5?dLfpan2+3aNPjxp+%vU d2>kyA7yufWWlEy`$JYP=002ovPDHLkV1j#PORN9@ literal 0 HcmV?d00001 diff --git a/public/assets/img/illustrations/profiles/profile-6.png b/public/assets/img/illustrations/profiles/profile-6.png new file mode 100644 index 0000000000000000000000000000000000000000..472aa6297f3986dd96feb993a507bcc9e1ac6f8a GIT binary patch literal 14208 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 P|HLWCs7lvJnuh)#X;r>h literal 0 HcmV?d00001 diff --git a/public/assets/img/illustrations/statistics.svg b/public/assets/img/illustrations/statistics.svg new file mode 100644 index 0000000..3643716 --- /dev/null +++ b/public/assets/img/illustrations/statistics.svg @@ -0,0 +1,759 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/team-spirit.svg b/public/assets/img/illustrations/team-spirit.svg new file mode 100644 index 0000000..3dd4317 --- /dev/null +++ b/public/assets/img/illustrations/team-spirit.svg @@ -0,0 +1,720 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/img/illustrations/windows.svg b/public/assets/img/illustrations/windows.svg new file mode 100644 index 0000000..effedf5 --- /dev/null +++ b/public/assets/img/illustrations/windows.svg @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/css/custom.css b/public/css/custom.css new file mode 100644 index 0000000..e026a07 --- /dev/null +++ b/public/css/custom.css @@ -0,0 +1,117 @@ +.text-center { + text-align: center; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.colorGray{ + color: gray; +} +.colorBlack{ + color: black; +} +.clear { + clear: both; +} +.sensitiveColumn { + display: none; +} + +#layoutSidenav, +#layoutSidenav_content, +#layoutSidenav_content > main, +#layoutSidenav_content > footer { + min-width: 0; +} + +@media (min-width: 576px) { + .contract-list-bulk-action { + width: auto !important; + } +} + +@media (max-width: 575.98px) { + .container-xl.px-4, + .container-fluid.px-4 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; + } + + .topnav .navbar-brand { + max-width: calc(100vw - 8rem); + overflow: hidden; + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + text-overflow: ellipsis; + white-space: nowrap; + } + + .responsive-page-header { + align-items: stretch !important; + flex-direction: column !important; + } + + .responsive-page-header > .d-flex { + flex-direction: column; + width: 100%; + } + + .responsive-page-header .btn { + width: 100%; + } + + .responsive-page-header .nav { + flex-wrap: wrap; + } + + .responsive-date-range { + display: grid; + grid-template-columns: 3rem minmax(0, 1fr); + } + + .responsive-date-range > * { + min-width: 0; + margin-left: 0 !important; + border-radius: 0 !important; + } + + .responsive-date-range > :first-child { + border-top-left-radius: var(--bs-border-radius) !important; + } + + .responsive-date-range > :nth-child(2) { + border-top-right-radius: var(--bs-border-radius) !important; + } + + .responsive-date-range > :nth-child(3) { + border-bottom-left-radius: var(--bs-border-radius) !important; + } + + .responsive-date-range > :last-child { + border-bottom-right-radius: var(--bs-border-radius) !important; + } + + .responsive-pagination .pagination { + flex-wrap: wrap; + justify-content: center; + } + + .responsive-pagination .pagination .page-item:not(:first-child):not(:last-child):not(.active) { + display: none; + } + + .card-body.p-4 { + padding: 1rem !important; + } + + .chart-container { + min-height: 250px; + } + + .modal-dialog { + margin: 0.5rem; + } +} diff --git a/public/css/styles.css b/public/css/styles.css new file mode 100644 index 0000000..2d9f224 --- /dev/null +++ b/public/css/styles.css @@ -0,0 +1,19620 @@ +@charset "UTF-8"; +/*! +* Start Bootstrap - SB Admin Pro v2.0.5 (https://shop.startbootstrap.com/product/sb-admin-pro) +* Copyright 2013-2023 Start Bootstrap +* Licensed under SEE_LICENSE (https://github.com/StartBootstrap/sb-admin-pro/blob/master/LICENSE) +*/ +/*! + * Bootstrap v5.2.3 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root { + --bs-blue: #0061f2; + --bs-indigo: #5800e8; + --bs-purple: #6900c7; + --bs-pink: #e30059; + --bs-red: #e81500; + --bs-orange: #f76400; + --bs-yellow: #f4a100; + --bs-green: #00ac69; + --bs-teal: #00ba94; + --bs-cyan: #00cfd5; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #69707a; + --bs-gray-dark: #363d47; + --bs-gray-100: #f2f6fc; + --bs-gray-200: #e0e5ec; + --bs-gray-300: #d4dae3; + --bs-gray-400: #c5ccd6; + --bs-gray-500: #a7aeb8; + --bs-gray-600: #69707a; + --bs-gray-700: #4a515b; + --bs-gray-800: #363d47; + --bs-gray-900: #212832; + --bs-primary: #0061f2; + --bs-secondary: #6900c7; + --bs-success: #00ac69; + --bs-info: #00cfd5; + --bs-warning: #f4a100; + --bs-danger: #e81500; + --bs-light: #f2f6fc; + --bs-dark: #212832; + --bs-black: #000; + --bs-white: #fff; + --bs-red: #e81500; + --bs-orange: #f76400; + --bs-yellow: #f4a100; + --bs-green: #00ac69; + --bs-teal: #00ba94; + --bs-cyan: #00cfd5; + --bs-blue: #0061f2; + --bs-indigo: #5800e8; + --bs-purple: #6900c7; + --bs-pink: #e30059; + --bs-red-soft: #f1e0e3; + --bs-orange-soft: #f3e7e3; + --bs-yellow-soft: #f2eee3; + --bs-green-soft: #daefed; + --bs-teal-soft: #daf0f2; + --bs-cyan-soft: #daf2f8; + --bs-blue-soft: #dae7fb; + --bs-indigo-soft: #e3ddfa; + --bs-purple-soft: #e4ddf7; + --bs-pink-soft: #f1ddec; + --bs-primary-soft: #dae7fb; + --bs-secondary-soft: #e4ddf7; + --bs-success-soft: #daefed; + --bs-info-soft: #daf2f8; + --bs-warning-soft: #f2eee3; + --bs-danger-soft: #f1e0e3; + --bs-primary-rgb: 0, 97, 242; + --bs-secondary-rgb: 105, 0, 199; + --bs-success-rgb: 0, 172, 105; + --bs-info-rgb: 0, 207, 213; + --bs-warning-rgb: 244, 161, 0; + --bs-danger-rgb: 232, 21, 0; + --bs-light-rgb: 242, 246, 252; + --bs-dark-rgb: 33, 40, 50; + --bs-black-rgb: 0, 0, 0; + --bs-white-rgb: 255, 255, 255; + --bs-red-rgb: 232, 21, 0; + --bs-orange-rgb: 247, 100, 0; + --bs-yellow-rgb: 244, 161, 0; + --bs-green-rgb: 0, 172, 105; + --bs-teal-rgb: 0, 186, 148; + --bs-cyan-rgb: 0, 207, 213; + --bs-blue-rgb: 0, 97, 242; + --bs-indigo-rgb: 88, 0, 232; + --bs-purple-rgb: 105, 0, 199; + --bs-pink-rgb: 227, 0, 89; + --bs-red-soft-rgb: 241, 224, 227; + --bs-orange-soft-rgb: 243, 231, 227; + --bs-yellow-soft-rgb: 242, 238, 227; + --bs-green-soft-rgb: 218, 239, 237; + --bs-teal-soft-rgb: 218, 240, 242; + --bs-cyan-soft-rgb: 218, 242, 248; + --bs-blue-soft-rgb: 218, 231, 251; + --bs-indigo-soft-rgb: 227, 221, 250; + --bs-purple-soft-rgb: 228, 221, 247; + --bs-pink-soft-rgb: 241, 221, 236; + --bs-primary-soft-rgb: 218, 231, 251; + --bs-secondary-soft-rgb: 228, 221, 247; + --bs-success-soft-rgb: 218, 239, 237; + --bs-info-soft-rgb: 218, 242, 248; + --bs-warning-soft-rgb: 242, 238, 227; + --bs-danger-soft-rgb: 241, 224, 227; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 105, 112, 122; + --bs-body-bg-rgb: 242, 246, 252; + --bs-font-sans-serif: "Metropolis", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: Metropolis, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #69707a; + --bs-body-bg: #f2f6fc; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #e0e5ec; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.35rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-2xl: 2rem; + --bs-border-radius-pill: 50rem; + --bs-link-color: #0061f2; + --bs-link-hover-color: #004ec2; + --bs-code-color: #e30059; + --bs-highlight-bg: #fdeccc; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: 1px solid; + opacity: 0.25; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + color: #363d47; +} + +h1, .h1 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + h1, .h1 { + font-size: 1.5rem; + } +} + +h2, .h2 { + font-size: calc(1.265rem + 0.18vw); +} +@media (min-width: 1200px) { + h2, .h2 { + font-size: 1.4rem; + } +} + +h3, .h3 { + font-size: calc(1.255rem + 0.06vw); +} +@media (min-width: 1200px) { + h3, .h3 { + font-size: 1.3rem; + } +} + +h4, .h4 { + font-size: 1.2rem; +} + +h5, .h5 { + font-size: 1.1rem; +} + +h6, .h6 { + font-size: 1rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 500; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 0.875em; +} + +mark, .mark { + padding: 0.1875em; + background-color: var(--bs-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: var(--bs-link-color); + text-decoration: none; +} +a:hover { + color: var(--bs-link-hover-color); + text-decoration: underline; +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; + color: #69707a; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.25rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #a7aeb8; + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: textfield; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 1.1rem; + font-weight: 400; +} + +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} + +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} + +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} + +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} + +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} + +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 0.875em; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #69707a; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #f2f6fc; + border: 1px solid var(--bs-border-color); + border-radius: 0.35rem; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 0.875em; + color: #69707a; +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1500px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1440px; + } +} +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333333%; +} + +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 2.5rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 2.5rem; +} + +.g-10, +.gx-10 { + --bs-gutter-x: 6rem; +} + +.g-10, +.gy-10 { + --bs-gutter-y: 6rem; +} + +.g-15, +.gx-15 { + --bs-gutter-x: 9rem; +} + +.g-15, +.gy-15 { + --bs-gutter-y: 9rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 2.5rem; + } + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 2.5rem; + } + .g-sm-10, + .gx-sm-10 { + --bs-gutter-x: 6rem; + } + .g-sm-10, + .gy-sm-10 { + --bs-gutter-y: 6rem; + } + .g-sm-15, + .gx-sm-15 { + --bs-gutter-x: 9rem; + } + .g-sm-15, + .gy-sm-15 { + --bs-gutter-y: 9rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 2.5rem; + } + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 2.5rem; + } + .g-md-10, + .gx-md-10 { + --bs-gutter-x: 6rem; + } + .g-md-10, + .gy-md-10 { + --bs-gutter-y: 6rem; + } + .g-md-15, + .gx-md-15 { + --bs-gutter-x: 9rem; + } + .g-md-15, + .gy-md-15 { + --bs-gutter-y: 9rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 2.5rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 2.5rem; + } + .g-lg-10, + .gx-lg-10 { + --bs-gutter-x: 6rem; + } + .g-lg-10, + .gy-lg-10 { + --bs-gutter-y: 6rem; + } + .g-lg-15, + .gx-lg-15 { + --bs-gutter-x: 9rem; + } + .g-lg-15, + .gy-lg-15 { + --bs-gutter-y: 9rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 2.5rem; + } + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 2.5rem; + } + .g-xl-10, + .gx-xl-10 { + --bs-gutter-x: 6rem; + } + .g-xl-10, + .gy-xl-10 { + --bs-gutter-y: 6rem; + } + .g-xl-15, + .gx-xl-15 { + --bs-gutter-x: 9rem; + } + .g-xl-15, + .gy-xl-15 { + --bs-gutter-y: 9rem; + } +} +@media (min-width: 1500px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 2.5rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 2.5rem; + } + .g-xxl-10, + .gx-xxl-10 { + --bs-gutter-x: 6rem; + } + .g-xxl-10, + .gy-xxl-10 { + --bs-gutter-y: 6rem; + } + .g-xxl-15, + .gx-xxl-15 { + --bs-gutter-x: 9rem; + } + .g-xxl-15, + .gy-xxl-15 { + --bs-gutter-y: 9rem; + } +} +.table, .datatable-table { + --bs-table-color: var(--bs-body-color); + --bs-table-bg: transparent; + --bs-table-border-color: #e0e5ec; + --bs-table-accent-bg: transparent; + --bs-table-striped-color: var(--bs-body-color); + --bs-table-striped-bg: rgba(0, 0, 0, 0.05); + --bs-table-active-color: var(--bs-body-color); + --bs-table-active-bg: rgba(0, 0, 0, 0.1); + --bs-table-hover-color: var(--bs-body-color); + --bs-table-hover-bg: rgba(224, 229, 236, 0.25); + width: 100%; + margin-bottom: 1rem; + color: var(--bs-table-color); + vertical-align: top; + border-color: var(--bs-table-border-color); +} +.table > :not(caption) > * > *, .datatable-table > :not(caption) > * > * { + padding: 0.75rem 0.75rem; + background-color: var(--bs-table-bg); + border-bottom-width: 1px; + box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); +} +.table > tbody, .datatable-table > tbody { + vertical-align: inherit; +} +.table > thead, .datatable-table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: 2px solid currentcolor; +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > *, .datatable-table > :not(caption) > * { + border-width: 1px 0; +} +.table-bordered > :not(caption) > * > *, .datatable-table > :not(caption) > * > * { + border-width: 0 1px; +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-active { + --bs-table-accent-bg: var(--bs-table-active-bg); + color: var(--bs-table-active-color); +} + +.table-hover > tbody > tr:hover > *, .datatable-table > tbody > tr:hover > * { + --bs-table-accent-bg: var(--bs-table-hover-bg); + color: var(--bs-table-hover-color); +} + +.table-primary { + --bs-table-color: #000; + --bs-table-bg: #ccdffc; + --bs-table-border-color: #b8c9e3; + --bs-table-striped-bg: #c2d4ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #b8c9e3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bdcee9; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-secondary { + --bs-table-color: #000; + --bs-table-bg: #e1ccf4; + --bs-table-border-color: #cbb8dc; + --bs-table-striped-bg: #d6c2e8; + --bs-table-striped-color: #000; + --bs-table-active-bg: #cbb8dc; + --bs-table-active-color: #000; + --bs-table-hover-bg: #d0bde2; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-success { + --bs-table-color: #000; + --bs-table-bg: #cceee1; + --bs-table-border-color: #b8d6cb; + --bs-table-striped-bg: #c2e2d6; + --bs-table-striped-color: #000; + --bs-table-active-bg: #b8d6cb; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bddcd0; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-info { + --bs-table-color: #000; + --bs-table-bg: #ccf5f7; + --bs-table-border-color: #b8ddde; + --bs-table-striped-bg: #c2e9eb; + --bs-table-striped-color: #000; + --bs-table-active-bg: #b8ddde; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bde3e4; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-warning { + --bs-table-color: #000; + --bs-table-bg: #fdeccc; + --bs-table-border-color: #e4d4b8; + --bs-table-striped-bg: #f0e0c2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e4d4b8; + --bs-table-active-color: #000; + --bs-table-hover-bg: #eadabd; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-danger { + --bs-table-color: #000; + --bs-table-bg: #fad0cc; + --bs-table-border-color: #e1bbb8; + --bs-table-striped-bg: #eec6c2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e1bbb8; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e7c0bd; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-light { + --bs-table-color: #000; + --bs-table-bg: #f2f6fc; + --bs-table-border-color: #dadde3; + --bs-table-striped-bg: #e6eaef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dadde3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e0e4e9; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-dark { + --bs-table-color: #fff; + --bs-table-bg: #212832; + --bs-table-border-color: #373e47; + --bs-table-striped-bg: #2c333c; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373e47; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323841; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-responsive, .datatable-wrapper .datatable-container { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1499.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; +} + +.col-form-label { + padding-top: calc(0.875rem + 1px); + padding-bottom: calc(0.875rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1; +} + +.col-form-label-lg { + padding-top: calc(1.125rem + 1px); + padding-bottom: calc(1.125rem + 1px); + font-size: 1rem; +} + +.col-form-label-sm { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 0.75rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: #a7aeb8; +} + +.form-control, .datatable-input { + display: block; + width: 100%; + padding: 0.875rem 1.125rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1; + color: #69707a; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #c5ccd6; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0.35rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control, .datatable-input { + transition: none; + } +} +.form-control[type=file], [type=file].datatable-input { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]), [type=file].datatable-input:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus, .datatable-input:focus { + color: #69707a; + background-color: #fff; + border-color: transparent; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(0, 97, 242, 0.25); +} +.form-control::-webkit-date-and-time-value, .datatable-input::-webkit-date-and-time-value { + height: 1em; +} +.form-control::-moz-placeholder, .datatable-input::-moz-placeholder { + color: #a7aeb8; + opacity: 1; +} +.form-control::placeholder, .datatable-input::placeholder { + color: #a7aeb8; + opacity: 1; +} +.form-control:disabled, .datatable-input:disabled { + background-color: #e0e5ec; + opacity: 1; +} +.form-control::file-selector-button, .datatable-input::file-selector-button { + padding: 0.875rem 1.125rem; + margin: -0.875rem -1.125rem; + -webkit-margin-end: 1.125rem; + margin-inline-end: 1.125rem; + color: #69707a; + background-color: #fff; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::file-selector-button, .datatable-input::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button, .datatable-input:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: #f2f2f2; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.875rem 0; + margin-bottom: 0; + line-height: 1; + color: #69707a; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1em + 1rem + 2px); + padding: 0.5rem 0.75rem; + font-size: 0.75rem; + border-radius: 0.25rem; +} +.form-control-sm::file-selector-button { + padding: 0.5rem 0.75rem; + margin: -0.5rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; +} + +.form-control-lg { + min-height: calc(1em + 2.25rem + 2px); + padding: 1.125rem 1.5rem; + font-size: 1rem; + border-radius: 0.5rem; +} +.form-control-lg::file-selector-button { + padding: 1.125rem 1.5rem; + margin: -1.125rem -1.5rem; + -webkit-margin-end: 1.5rem; + margin-inline-end: 1.5rem; +} + +textarea.form-control, textarea.datatable-input { + min-height: calc(1em + 1.75rem + 2px); +} +textarea.form-control-sm { + min-height: calc(1em + 1rem + 2px); +} +textarea.form-control-lg { + min-height: calc(1em + 2.25rem + 2px); +} + +.form-control-color { + width: 3rem; + height: calc(1em + 1.75rem + 2px); + padding: 0.875rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: 0.35rem; +} +.form-control-color::-webkit-color-swatch { + border-radius: 0.35rem; +} +.form-control-color.form-control-sm { + height: calc(1em + 1rem + 2px); +} +.form-control-color.form-control-lg { + height: calc(1em + 2.25rem + 2px); +} + +.form-select, .datatable-selector { + display: block; + width: 100%; + padding: 0.875rem 3.375rem 0.875rem 1.125rem; + -moz-padding-start: calc(1.125rem - 3px); + font-size: 0.875rem; + font-weight: 400; + line-height: 1; + color: #69707a; + background-color: #fff; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23363d47' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 1.125rem center; + background-size: 16px 12px; + border: 1px solid #c5ccd6; + border-radius: 0.35rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-select, .datatable-selector { + transition: none; + } +} +.form-select:focus, .datatable-selector:focus { + border-color: transparent; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(0, 97, 242, 0.25); +} +.form-select[multiple], [multiple].datatable-selector, .form-select[size]:not([size="1"]), [size].datatable-selector:not([size="1"]) { + padding-right: 1.125rem; + background-image: none; +} +.form-select:disabled, .datatable-selector:disabled { + background-color: #e0e5ec; +} +.form-select:-moz-focusring, .datatable-selector:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #69707a; +} + +.form-select-sm { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + font-size: 0.75rem; + border-radius: 0.25rem; +} + +.form-select-lg { + padding-top: 1.125rem; + padding-bottom: 1.125rem; + padding-left: 1.5rem; + font-size: 1rem; + border-radius: 0.5rem; +} + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; +} +.form-check .form-check-input { + float: left; + margin-left: -1.5em; +} + +.form-check-reverse { + padding-right: 1.5em; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -1.5em; + margin-left: 0; +} + +.form-check-input { + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + background-color: #fff; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: 1px solid rgba(0, 0, 0, 0.25); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-print-color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: 0.25em; +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: transparent; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(0, 97, 242, 0.25); +} +.form-check-input:checked { + background-color: #0061f2; + border-color: #0061f2; +} +.form-check-input:checked[type=checkbox] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: #0061f2; + border-color: #0061f2; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.5; +} + +.form-switch { + padding-left: 2.5em; +} +.form-switch .form-check-input { + width: 2em; + margin-left: -2.5em; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='transparent'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-right: 2.5em; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5em; + margin-left: 0; +} + +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #f2f6fc, 0 0 0 0.25rem rgba(0, 97, 242, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #f2f6fc, 0 0 0 0.25rem rgba(0, 97, 242, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #0061f2; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #b3d0fb; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #d4dae3; + border-color: transparent; + border-radius: 1rem; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #0061f2; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #b3d0fb; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #d4dae3; + border-color: transparent; + border-radius: 1rem; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: #a7aeb8; +} +.form-range:disabled::-moz-range-thumb { + background-color: #a7aeb8; +} + +.form-floating { + position: relative; +} +.form-floating > .form-control, .form-floating > .datatable-input, +.form-floating > .form-control-plaintext, +.form-floating > .form-select, +.form-floating > .datatable-selector { + height: calc(3.5rem + 2px); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 1rem 1.125rem; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: 1px solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control, .form-floating > .datatable-input, +.form-floating > .form-control-plaintext { + padding: 1rem 1.125rem; +} +.form-floating > .form-control::-moz-placeholder, .form-floating > .datatable-input::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder { + color: transparent; +} +.form-floating > .form-control::placeholder, .form-floating > .datatable-input::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .datatable-input:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .datatable-input:focus, .form-floating > .form-control:not(:placeholder-shown), .form-floating > .datatable-input:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, .form-floating > .datatable-input:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select, .form-floating > .datatable-selector { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label, .form-floating > .datatable-input:not(:-moz-placeholder-shown) ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:focus ~ label, .form-floating > .datatable-input:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .datatable-input:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label, +.form-floating > .datatable-selector ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:-webkit-autofill ~ label, .form-floating > .datatable-input:-webkit-autofill ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: 1px 0; +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, .input-group > .datatable-input, +.input-group > .form-select, +.input-group > .datatable-selector, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, .input-group > .datatable-input:focus, +.input-group > .form-select:focus, +.input-group > .datatable-selector:focus, +.input-group > .form-floating:focus-within { + z-index: 5; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 5; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.875rem 1.125rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1; + color: #69707a; + text-align: center; + white-space: nowrap; + background-color: #fff; + border: 1px solid #c5ccd6; + border-radius: 0.35rem; +} + +.input-group-lg > .form-control, .input-group-lg > .datatable-input, +.input-group-lg > .form-select, +.input-group-lg > .datatable-selector, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 1.125rem 1.5rem; + font-size: 1rem; + border-radius: 0.5rem; +} + +.input-group-sm > .form-control, .input-group-sm > .datatable-input, +.input-group-sm > .form-select, +.input-group-sm > .datatable-selector, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.5rem 0.75rem; + font-size: 0.75rem; + border-radius: 0.25rem; +} + +.input-group-lg > .form-select, .input-group-lg > .datatable-selector, +.input-group-sm > .form-select, +.input-group-sm > .datatable-selector { + padding-right: 4.5rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .datatable-input, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .datatable-selector { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .datatable-input, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .datatable-selector { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, .input-group > .form-floating:not(:first-child) > .datatable-input, +.input-group > .form-floating:not(:first-child) > .form-select, +.input-group > .form-floating:not(:first-child) > .datatable-selector { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #00ac69; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(0, 172, 105, 0.9); + border-radius: 0.35rem; +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .was-validated .datatable-input:valid, .form-control.is-valid, .is-valid.datatable-input { + border-color: #00ac69; + padding-right: calc(1em + 1.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300ac69' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.25em + 0.4375rem) center; + background-size: calc(0.5em + 0.875rem) calc(0.5em + 0.875rem); +} +.was-validated .form-control:valid:focus, .was-validated .datatable-input:valid:focus, .form-control.is-valid:focus, .is-valid.datatable-input:focus { + border-color: #00ac69; + box-shadow: 0 0 0 0.25rem rgba(0, 172, 105, 0.25); +} + +.was-validated textarea.form-control:valid, .was-validated textarea.datatable-input:valid, textarea.form-control.is-valid, textarea.is-valid.datatable-input { + padding-right: calc(1em + 1.75rem); + background-position: top calc(0.25em + 0.4375rem) right calc(0.25em + 0.4375rem); +} + +.was-validated .form-select:valid, .was-validated .datatable-selector:valid, .form-select.is-valid, .is-valid.datatable-selector { + border-color: #00ac69; +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .datatable-selector:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .was-validated .datatable-selector:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .is-valid.datatable-selector:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"], .is-valid.datatable-selector:not([multiple])[size="1"] { + padding-right: 6.1875rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23363d47' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300ac69' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-position: right 1.125rem center, center right 3.375rem; + background-size: 16px 12px, calc(0.5em + 0.875rem) calc(0.5em + 0.875rem); +} +.was-validated .form-select:valid:focus, .was-validated .datatable-selector:valid:focus, .form-select.is-valid:focus, .is-valid.datatable-selector:focus { + border-color: #00ac69; + box-shadow: 0 0 0 0.25rem rgba(0, 172, 105, 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1em + 1.75rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: #00ac69; +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: #00ac69; +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(0, 172, 105, 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #00ac69; +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .was-validated .input-group > .datatable-input:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, .input-group > .datatable-input:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.was-validated .input-group > .datatable-selector:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.input-group > .datatable-selector:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #e81500; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(232, 21, 0, 0.9); + border-radius: 0.35rem; +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .was-validated .datatable-input:invalid, .form-control.is-invalid, .is-invalid.datatable-input { + border-color: #e81500; + padding-right: calc(1em + 1.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e81500'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e81500' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.25em + 0.4375rem) center; + background-size: calc(0.5em + 0.875rem) calc(0.5em + 0.875rem); +} +.was-validated .form-control:invalid:focus, .was-validated .datatable-input:invalid:focus, .form-control.is-invalid:focus, .is-invalid.datatable-input:focus { + border-color: #e81500; + box-shadow: 0 0 0 0.25rem rgba(232, 21, 0, 0.25); +} + +.was-validated textarea.form-control:invalid, .was-validated textarea.datatable-input:invalid, textarea.form-control.is-invalid, textarea.is-invalid.datatable-input { + padding-right: calc(1em + 1.75rem); + background-position: top calc(0.25em + 0.4375rem) right calc(0.25em + 0.4375rem); +} + +.was-validated .form-select:invalid, .was-validated .datatable-selector:invalid, .form-select.is-invalid, .is-invalid.datatable-selector { + border-color: #e81500; +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .datatable-selector:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .was-validated .datatable-selector:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .is-invalid.datatable-selector:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"], .is-invalid.datatable-selector:not([multiple])[size="1"] { + padding-right: 6.1875rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23363d47' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e81500'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e81500' stroke='none'/%3e%3c/svg%3e"); + background-position: right 1.125rem center, center right 3.375rem; + background-size: 16px 12px, calc(0.5em + 0.875rem) calc(0.5em + 0.875rem); +} +.was-validated .form-select:invalid:focus, .was-validated .datatable-selector:invalid:focus, .form-select.is-invalid:focus, .is-invalid.datatable-selector:focus { + border-color: #e81500; + box-shadow: 0 0 0 0.25rem rgba(232, 21, 0, 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1em + 1.75rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: #e81500; +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: #e81500; +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(232, 21, 0, 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #e81500; +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .was-validated .input-group > .datatable-input:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, .input-group > .datatable-input:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.was-validated .input-group > .datatable-selector:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.input-group > .datatable-selector:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --bs-btn-padding-x: 1.125rem; + --bs-btn-padding-y: 0.875rem; + --bs-btn-font-family: ; + --bs-btn-font-size: 0.875rem; + --bs-btn-font-weight: 400; + --bs-btn-line-height: 1; + --bs-btn-color: #69707a; + --bs-btn-bg: transparent; + --bs-btn-border-width: 1px; + --bs-btn-border-color: transparent; + --bs-btn-border-radius: 0.35rem; + --bs-btn-hover-border-color: transparent; + --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--bs-btn-hover-color); + text-decoration: none; + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--bs-btn-color); + background-color: var(--bs-btn-bg); + border-color: var(--bs-btn-border-color); +} +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); +} +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); +} + +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: #0061f2; + --bs-btn-border-color: #0061f2; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0052ce; + --bs-btn-hover-border-color: #004ec2; + --bs-btn-focus-shadow-rgb: 38, 121, 244; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #004ec2; + --bs-btn-active-border-color: #0049b6; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #0061f2; + --bs-btn-disabled-border-color: #0061f2; +} + +.btn-secondary { + --bs-btn-color: #fff; + --bs-btn-bg: #6900c7; + --bs-btn-border-color: #6900c7; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5900a9; + --bs-btn-hover-border-color: #54009f; + --bs-btn-focus-shadow-rgb: 128, 38, 207; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #54009f; + --bs-btn-active-border-color: #4f0095; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #6900c7; + --bs-btn-disabled-border-color: #6900c7; +} + +.btn-success { + --bs-btn-color: #fff; + --bs-btn-bg: #00ac69; + --bs-btn-border-color: #00ac69; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #009259; + --bs-btn-hover-border-color: #008a54; + --bs-btn-focus-shadow-rgb: 38, 184, 128; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #008a54; + --bs-btn-active-border-color: #00814f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #00ac69; + --bs-btn-disabled-border-color: #00ac69; +} + +.btn-info { + --bs-btn-color: #fff; + --bs-btn-bg: #00cfd5; + --bs-btn-border-color: #00cfd5; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #00b0b5; + --bs-btn-hover-border-color: #00a6aa; + --bs-btn-focus-shadow-rgb: 38, 214, 219; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #00a6aa; + --bs-btn-active-border-color: #009ba0; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #00cfd5; + --bs-btn-disabled-border-color: #00cfd5; +} + +.btn-warning { + --bs-btn-color: #fff; + --bs-btn-bg: #f4a100; + --bs-btn-border-color: #f4a100; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #cf8900; + --bs-btn-hover-border-color: #c38100; + --bs-btn-focus-shadow-rgb: 246, 175, 38; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #c38100; + --bs-btn-active-border-color: #b77900; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #f4a100; + --bs-btn-disabled-border-color: #f4a100; +} + +.btn-danger { + --bs-btn-color: #fff; + --bs-btn-bg: #e81500; + --bs-btn-border-color: #e81500; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #c51200; + --bs-btn-hover-border-color: #ba1100; + --bs-btn-focus-shadow-rgb: 235, 56, 38; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #ba1100; + --bs-btn-active-border-color: #ae1000; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #e81500; + --bs-btn-disabled-border-color: #e81500; +} + +.btn-light { + --bs-btn-color: #000; + --bs-btn-bg: #f2f6fc; + --bs-btn-border-color: #f2f6fc; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ced1d6; + --bs-btn-hover-border-color: #c2c5ca; + --bs-btn-focus-shadow-rgb: 206, 209, 214; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #c2c5ca; + --bs-btn-active-border-color: #b6b9bd; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f2f6fc; + --bs-btn-disabled-border-color: #f2f6fc; +} + +.btn-dark { + --bs-btn-color: #fff; + --bs-btn-bg: #212832; + --bs-btn-border-color: #212832; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #424851; + --bs-btn-hover-border-color: #373e47; + --bs-btn-focus-shadow-rgb: 66, 72, 81; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #4d535b; + --bs-btn-active-border-color: #373e47; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #212832; + --bs-btn-disabled-border-color: #212832; +} + +.btn-black { + --bs-btn-color: #fff; + --bs-btn-bg: #000; + --bs-btn-border-color: #000; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: black; + --bs-btn-hover-border-color: black; + --bs-btn-focus-shadow-rgb: 38, 38, 38; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: black; + --bs-btn-active-border-color: black; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #000; + --bs-btn-disabled-border-color: #000; +} + +.btn-white { + --bs-btn-color: #000; + --bs-btn-bg: #fff; + --bs-btn-border-color: #fff; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: white; + --bs-btn-hover-border-color: white; + --bs-btn-focus-shadow-rgb: 217, 217, 217; + --bs-btn-active-color: #000; + --bs-btn-active-bg: white; + --bs-btn-active-border-color: white; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #fff; + --bs-btn-disabled-border-color: #fff; +} + +.btn-red { + --bs-btn-color: #fff; + --bs-btn-bg: #e81500; + --bs-btn-border-color: #e81500; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #c51200; + --bs-btn-hover-border-color: #ba1100; + --bs-btn-focus-shadow-rgb: 235, 56, 38; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #ba1100; + --bs-btn-active-border-color: #ae1000; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #e81500; + --bs-btn-disabled-border-color: #e81500; +} + +.btn-orange { + --bs-btn-color: #fff; + --bs-btn-bg: #f76400; + --bs-btn-border-color: #f76400; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #d25500; + --bs-btn-hover-border-color: #c65000; + --bs-btn-focus-shadow-rgb: 248, 123, 38; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #c65000; + --bs-btn-active-border-color: #b94b00; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #f76400; + --bs-btn-disabled-border-color: #f76400; +} + +.btn-yellow { + --bs-btn-color: #fff; + --bs-btn-bg: #f4a100; + --bs-btn-border-color: #f4a100; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #cf8900; + --bs-btn-hover-border-color: #c38100; + --bs-btn-focus-shadow-rgb: 246, 175, 38; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #c38100; + --bs-btn-active-border-color: #b77900; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #f4a100; + --bs-btn-disabled-border-color: #f4a100; +} + +.btn-green { + --bs-btn-color: #fff; + --bs-btn-bg: #00ac69; + --bs-btn-border-color: #00ac69; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #009259; + --bs-btn-hover-border-color: #008a54; + --bs-btn-focus-shadow-rgb: 38, 184, 128; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #008a54; + --bs-btn-active-border-color: #00814f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #00ac69; + --bs-btn-disabled-border-color: #00ac69; +} + +.btn-teal { + --bs-btn-color: #fff; + --bs-btn-bg: #00ba94; + --bs-btn-border-color: #00ba94; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #009e7e; + --bs-btn-hover-border-color: #009576; + --bs-btn-focus-shadow-rgb: 38, 196, 164; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #009576; + --bs-btn-active-border-color: #008c6f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #00ba94; + --bs-btn-disabled-border-color: #00ba94; +} + +.btn-cyan { + --bs-btn-color: #fff; + --bs-btn-bg: #00cfd5; + --bs-btn-border-color: #00cfd5; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #00b0b5; + --bs-btn-hover-border-color: #00a6aa; + --bs-btn-focus-shadow-rgb: 38, 214, 219; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #00a6aa; + --bs-btn-active-border-color: #009ba0; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #00cfd5; + --bs-btn-disabled-border-color: #00cfd5; +} + +.btn-blue { + --bs-btn-color: #fff; + --bs-btn-bg: #0061f2; + --bs-btn-border-color: #0061f2; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0052ce; + --bs-btn-hover-border-color: #004ec2; + --bs-btn-focus-shadow-rgb: 38, 121, 244; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #004ec2; + --bs-btn-active-border-color: #0049b6; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #0061f2; + --bs-btn-disabled-border-color: #0061f2; +} + +.btn-indigo { + --bs-btn-color: #fff; + --bs-btn-bg: #5800e8; + --bs-btn-border-color: #5800e8; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #4b00c5; + --bs-btn-hover-border-color: #4600ba; + --bs-btn-focus-shadow-rgb: 113, 38, 235; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #4600ba; + --bs-btn-active-border-color: #4200ae; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #5800e8; + --bs-btn-disabled-border-color: #5800e8; +} + +.btn-purple { + --bs-btn-color: #fff; + --bs-btn-bg: #6900c7; + --bs-btn-border-color: #6900c7; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5900a9; + --bs-btn-hover-border-color: #54009f; + --bs-btn-focus-shadow-rgb: 128, 38, 207; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #54009f; + --bs-btn-active-border-color: #4f0095; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #6900c7; + --bs-btn-disabled-border-color: #6900c7; +} + +.btn-pink { + --bs-btn-color: #fff; + --bs-btn-bg: #e30059; + --bs-btn-border-color: #e30059; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #c1004c; + --bs-btn-hover-border-color: #b60047; + --bs-btn-focus-shadow-rgb: 231, 38, 114; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #b60047; + --bs-btn-active-border-color: #aa0043; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #e30059; + --bs-btn-disabled-border-color: #e30059; +} + +.btn-red-soft { + --bs-btn-color: #000; + --bs-btn-bg: #f1e0e3; + --bs-btn-border-color: #f1e0e3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f3e5e7; + --bs-btn-hover-border-color: #f2e3e6; + --bs-btn-focus-shadow-rgb: 205, 190, 193; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f4e6e9; + --bs-btn-active-border-color: #f2e3e6; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f1e0e3; + --bs-btn-disabled-border-color: #f1e0e3; +} + +.btn-orange-soft { + --bs-btn-color: #000; + --bs-btn-bg: #f3e7e3; + --bs-btn-border-color: #f3e7e3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f5ebe7; + --bs-btn-hover-border-color: #f4e9e6; + --bs-btn-focus-shadow-rgb: 207, 196, 193; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f5ece9; + --bs-btn-active-border-color: #f4e9e6; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f3e7e3; + --bs-btn-disabled-border-color: #f3e7e3; +} + +.btn-yellow-soft { + --bs-btn-color: #000; + --bs-btn-bg: #f2eee3; + --bs-btn-border-color: #f2eee3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f4f1e7; + --bs-btn-hover-border-color: #f3f0e6; + --bs-btn-focus-shadow-rgb: 206, 202, 193; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f5f1e9; + --bs-btn-active-border-color: #f3f0e6; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f2eee3; + --bs-btn-disabled-border-color: #f2eee3; +} + +.btn-green-soft { + --bs-btn-color: #000; + --bs-btn-bg: #daefed; + --bs-btn-border-color: #daefed; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e0f1f0; + --bs-btn-hover-border-color: #def1ef; + --bs-btn-focus-shadow-rgb: 185, 203, 201; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e1f2f1; + --bs-btn-active-border-color: #def1ef; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #daefed; + --bs-btn-disabled-border-color: #daefed; +} + +.btn-teal-soft { + --bs-btn-color: #000; + --bs-btn-bg: #daf0f2; + --bs-btn-border-color: #daf0f2; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e0f2f4; + --bs-btn-hover-border-color: #def2f3; + --bs-btn-focus-shadow-rgb: 185, 204, 206; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e1f3f5; + --bs-btn-active-border-color: #def2f3; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #daf0f2; + --bs-btn-disabled-border-color: #daf0f2; +} + +.btn-cyan-soft { + --bs-btn-color: #000; + --bs-btn-bg: #daf2f8; + --bs-btn-border-color: #daf2f8; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e0f4f9; + --bs-btn-hover-border-color: #def3f9; + --bs-btn-focus-shadow-rgb: 185, 206, 211; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e1f5f9; + --bs-btn-active-border-color: #def3f9; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #daf2f8; + --bs-btn-disabled-border-color: #daf2f8; +} + +.btn-blue-soft { + --bs-btn-color: #000; + --bs-btn-bg: #dae7fb; + --bs-btn-border-color: #dae7fb; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e0ebfc; + --bs-btn-hover-border-color: #dee9fb; + --bs-btn-focus-shadow-rgb: 185, 196, 213; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e1ecfc; + --bs-btn-active-border-color: #dee9fb; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #dae7fb; + --bs-btn-disabled-border-color: #dae7fb; +} + +.btn-indigo-soft { + --bs-btn-color: #000; + --bs-btn-bg: #e3ddfa; + --bs-btn-border-color: #e3ddfa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e7e2fb; + --bs-btn-hover-border-color: #e6e0fb; + --bs-btn-focus-shadow-rgb: 193, 188, 213; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e9e4fb; + --bs-btn-active-border-color: #e6e0fb; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #e3ddfa; + --bs-btn-disabled-border-color: #e3ddfa; +} + +.btn-purple-soft { + --bs-btn-color: #000; + --bs-btn-bg: #e4ddf7; + --bs-btn-border-color: #e4ddf7; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e8e2f8; + --bs-btn-hover-border-color: #e7e0f8; + --bs-btn-focus-shadow-rgb: 194, 188, 210; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e9e4f9; + --bs-btn-active-border-color: #e7e0f8; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #e4ddf7; + --bs-btn-disabled-border-color: #e4ddf7; +} + +.btn-pink-soft { + --bs-btn-color: #000; + --bs-btn-bg: #f1ddec; + --bs-btn-border-color: #f1ddec; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f3e2ef; + --bs-btn-hover-border-color: #f2e0ee; + --bs-btn-focus-shadow-rgb: 205, 188, 201; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f4e4f0; + --bs-btn-active-border-color: #f2e0ee; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f1ddec; + --bs-btn-disabled-border-color: #f1ddec; +} + +.btn-primary-soft { + --bs-btn-color: #000; + --bs-btn-bg: #dae7fb; + --bs-btn-border-color: #dae7fb; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e0ebfc; + --bs-btn-hover-border-color: #dee9fb; + --bs-btn-focus-shadow-rgb: 185, 196, 213; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e1ecfc; + --bs-btn-active-border-color: #dee9fb; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #dae7fb; + --bs-btn-disabled-border-color: #dae7fb; +} + +.btn-secondary-soft { + --bs-btn-color: #000; + --bs-btn-bg: #e4ddf7; + --bs-btn-border-color: #e4ddf7; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e8e2f8; + --bs-btn-hover-border-color: #e7e0f8; + --bs-btn-focus-shadow-rgb: 194, 188, 210; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e9e4f9; + --bs-btn-active-border-color: #e7e0f8; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #e4ddf7; + --bs-btn-disabled-border-color: #e4ddf7; +} + +.btn-success-soft { + --bs-btn-color: #000; + --bs-btn-bg: #daefed; + --bs-btn-border-color: #daefed; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e0f1f0; + --bs-btn-hover-border-color: #def1ef; + --bs-btn-focus-shadow-rgb: 185, 203, 201; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e1f2f1; + --bs-btn-active-border-color: #def1ef; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #daefed; + --bs-btn-disabled-border-color: #daefed; +} + +.btn-info-soft { + --bs-btn-color: #000; + --bs-btn-bg: #daf2f8; + --bs-btn-border-color: #daf2f8; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e0f4f9; + --bs-btn-hover-border-color: #def3f9; + --bs-btn-focus-shadow-rgb: 185, 206, 211; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e1f5f9; + --bs-btn-active-border-color: #def3f9; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #daf2f8; + --bs-btn-disabled-border-color: #daf2f8; +} + +.btn-warning-soft { + --bs-btn-color: #000; + --bs-btn-bg: #f2eee3; + --bs-btn-border-color: #f2eee3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f4f1e7; + --bs-btn-hover-border-color: #f3f0e6; + --bs-btn-focus-shadow-rgb: 206, 202, 193; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f5f1e9; + --bs-btn-active-border-color: #f3f0e6; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f2eee3; + --bs-btn-disabled-border-color: #f2eee3; +} + +.btn-danger-soft { + --bs-btn-color: #000; + --bs-btn-bg: #f1e0e3; + --bs-btn-border-color: #f1e0e3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f3e5e7; + --bs-btn-hover-border-color: #f2e3e6; + --bs-btn-focus-shadow-rgb: 205, 190, 193; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f4e6e9; + --bs-btn-active-border-color: #f2e3e6; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f1e0e3; + --bs-btn-disabled-border-color: #f1e0e3; +} + +.btn-outline-primary { + --bs-btn-color: #0061f2; + --bs-btn-border-color: #0061f2; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0061f2; + --bs-btn-hover-border-color: #0061f2; + --bs-btn-focus-shadow-rgb: 0, 97, 242; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0061f2; + --bs-btn-active-border-color: #0061f2; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0061f2; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0061f2; + --bs-gradient: none; +} + +.btn-outline-secondary { + --bs-btn-color: #6900c7; + --bs-btn-border-color: #6900c7; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6900c7; + --bs-btn-hover-border-color: #6900c7; + --bs-btn-focus-shadow-rgb: 105, 0, 199; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6900c7; + --bs-btn-active-border-color: #6900c7; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #6900c7; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6900c7; + --bs-gradient: none; +} + +.btn-outline-success { + --bs-btn-color: #00ac69; + --bs-btn-border-color: #00ac69; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #00ac69; + --bs-btn-hover-border-color: #00ac69; + --bs-btn-focus-shadow-rgb: 0, 172, 105; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #00ac69; + --bs-btn-active-border-color: #00ac69; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #00ac69; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #00ac69; + --bs-gradient: none; +} + +.btn-outline-info { + --bs-btn-color: #00cfd5; + --bs-btn-border-color: #00cfd5; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #00cfd5; + --bs-btn-hover-border-color: #00cfd5; + --bs-btn-focus-shadow-rgb: 0, 207, 213; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #00cfd5; + --bs-btn-active-border-color: #00cfd5; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #00cfd5; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #00cfd5; + --bs-gradient: none; +} + +.btn-outline-warning { + --bs-btn-color: #f4a100; + --bs-btn-border-color: #f4a100; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #f4a100; + --bs-btn-hover-border-color: #f4a100; + --bs-btn-focus-shadow-rgb: 244, 161, 0; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #f4a100; + --bs-btn-active-border-color: #f4a100; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f4a100; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f4a100; + --bs-gradient: none; +} + +.btn-outline-danger { + --bs-btn-color: #e81500; + --bs-btn-border-color: #e81500; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #e81500; + --bs-btn-hover-border-color: #e81500; + --bs-btn-focus-shadow-rgb: 232, 21, 0; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #e81500; + --bs-btn-active-border-color: #e81500; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #e81500; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #e81500; + --bs-gradient: none; +} + +.btn-outline-light { + --bs-btn-color: #f2f6fc; + --bs-btn-border-color: #f2f6fc; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f2f6fc; + --bs-btn-hover-border-color: #f2f6fc; + --bs-btn-focus-shadow-rgb: 242, 246, 252; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f2f6fc; + --bs-btn-active-border-color: #f2f6fc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f2f6fc; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f2f6fc; + --bs-gradient: none; +} + +.btn-outline-dark { + --bs-btn-color: #212832; + --bs-btn-border-color: #212832; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #212832; + --bs-btn-hover-border-color: #212832; + --bs-btn-focus-shadow-rgb: 33, 40, 50; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #212832; + --bs-btn-active-border-color: #212832; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #212832; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #212832; + --bs-gradient: none; +} + +.btn-outline-black { + --bs-btn-color: #000; + --bs-btn-border-color: #000; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #000; + --bs-btn-hover-border-color: #000; + --bs-btn-focus-shadow-rgb: 0, 0, 0; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #000; + --bs-btn-active-border-color: #000; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #000; + --bs-gradient: none; +} + +.btn-outline-white { + --bs-btn-color: #fff; + --bs-btn-border-color: #fff; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #fff; + --bs-btn-hover-border-color: #fff; + --bs-btn-focus-shadow-rgb: 255, 255, 255; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #fff; + --bs-btn-active-border-color: #fff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #fff; + --bs-gradient: none; +} + +.btn-outline-red { + --bs-btn-color: #e81500; + --bs-btn-border-color: #e81500; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #e81500; + --bs-btn-hover-border-color: #e81500; + --bs-btn-focus-shadow-rgb: 232, 21, 0; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #e81500; + --bs-btn-active-border-color: #e81500; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #e81500; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #e81500; + --bs-gradient: none; +} + +.btn-outline-orange { + --bs-btn-color: #f76400; + --bs-btn-border-color: #f76400; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #f76400; + --bs-btn-hover-border-color: #f76400; + --bs-btn-focus-shadow-rgb: 247, 100, 0; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #f76400; + --bs-btn-active-border-color: #f76400; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f76400; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f76400; + --bs-gradient: none; +} + +.btn-outline-yellow { + --bs-btn-color: #f4a100; + --bs-btn-border-color: #f4a100; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #f4a100; + --bs-btn-hover-border-color: #f4a100; + --bs-btn-focus-shadow-rgb: 244, 161, 0; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #f4a100; + --bs-btn-active-border-color: #f4a100; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f4a100; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f4a100; + --bs-gradient: none; +} + +.btn-outline-green { + --bs-btn-color: #00ac69; + --bs-btn-border-color: #00ac69; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #00ac69; + --bs-btn-hover-border-color: #00ac69; + --bs-btn-focus-shadow-rgb: 0, 172, 105; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #00ac69; + --bs-btn-active-border-color: #00ac69; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #00ac69; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #00ac69; + --bs-gradient: none; +} + +.btn-outline-teal { + --bs-btn-color: #00ba94; + --bs-btn-border-color: #00ba94; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #00ba94; + --bs-btn-hover-border-color: #00ba94; + --bs-btn-focus-shadow-rgb: 0, 186, 148; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #00ba94; + --bs-btn-active-border-color: #00ba94; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #00ba94; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #00ba94; + --bs-gradient: none; +} + +.btn-outline-cyan { + --bs-btn-color: #00cfd5; + --bs-btn-border-color: #00cfd5; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #00cfd5; + --bs-btn-hover-border-color: #00cfd5; + --bs-btn-focus-shadow-rgb: 0, 207, 213; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #00cfd5; + --bs-btn-active-border-color: #00cfd5; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #00cfd5; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #00cfd5; + --bs-gradient: none; +} + +.btn-outline-blue { + --bs-btn-color: #0061f2; + --bs-btn-border-color: #0061f2; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0061f2; + --bs-btn-hover-border-color: #0061f2; + --bs-btn-focus-shadow-rgb: 0, 97, 242; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0061f2; + --bs-btn-active-border-color: #0061f2; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0061f2; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0061f2; + --bs-gradient: none; +} + +.btn-outline-indigo { + --bs-btn-color: #5800e8; + --bs-btn-border-color: #5800e8; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5800e8; + --bs-btn-hover-border-color: #5800e8; + --bs-btn-focus-shadow-rgb: 88, 0, 232; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #5800e8; + --bs-btn-active-border-color: #5800e8; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #5800e8; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #5800e8; + --bs-gradient: none; +} + +.btn-outline-purple { + --bs-btn-color: #6900c7; + --bs-btn-border-color: #6900c7; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6900c7; + --bs-btn-hover-border-color: #6900c7; + --bs-btn-focus-shadow-rgb: 105, 0, 199; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6900c7; + --bs-btn-active-border-color: #6900c7; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #6900c7; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6900c7; + --bs-gradient: none; +} + +.btn-outline-pink { + --bs-btn-color: #e30059; + --bs-btn-border-color: #e30059; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #e30059; + --bs-btn-hover-border-color: #e30059; + --bs-btn-focus-shadow-rgb: 227, 0, 89; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #e30059; + --bs-btn-active-border-color: #e30059; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #e30059; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #e30059; + --bs-gradient: none; +} + +.btn-outline-red-soft { + --bs-btn-color: #f1e0e3; + --bs-btn-border-color: #f1e0e3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f1e0e3; + --bs-btn-hover-border-color: #f1e0e3; + --bs-btn-focus-shadow-rgb: 241, 224, 227; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f1e0e3; + --bs-btn-active-border-color: #f1e0e3; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f1e0e3; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f1e0e3; + --bs-gradient: none; +} + +.btn-outline-orange-soft { + --bs-btn-color: #f3e7e3; + --bs-btn-border-color: #f3e7e3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f3e7e3; + --bs-btn-hover-border-color: #f3e7e3; + --bs-btn-focus-shadow-rgb: 243, 231, 227; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f3e7e3; + --bs-btn-active-border-color: #f3e7e3; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f3e7e3; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f3e7e3; + --bs-gradient: none; +} + +.btn-outline-yellow-soft { + --bs-btn-color: #f2eee3; + --bs-btn-border-color: #f2eee3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f2eee3; + --bs-btn-hover-border-color: #f2eee3; + --bs-btn-focus-shadow-rgb: 242, 238, 227; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f2eee3; + --bs-btn-active-border-color: #f2eee3; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f2eee3; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f2eee3; + --bs-gradient: none; +} + +.btn-outline-green-soft { + --bs-btn-color: #daefed; + --bs-btn-border-color: #daefed; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #daefed; + --bs-btn-hover-border-color: #daefed; + --bs-btn-focus-shadow-rgb: 218, 239, 237; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #daefed; + --bs-btn-active-border-color: #daefed; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #daefed; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #daefed; + --bs-gradient: none; +} + +.btn-outline-teal-soft { + --bs-btn-color: #daf0f2; + --bs-btn-border-color: #daf0f2; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #daf0f2; + --bs-btn-hover-border-color: #daf0f2; + --bs-btn-focus-shadow-rgb: 218, 240, 242; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #daf0f2; + --bs-btn-active-border-color: #daf0f2; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #daf0f2; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #daf0f2; + --bs-gradient: none; +} + +.btn-outline-cyan-soft { + --bs-btn-color: #daf2f8; + --bs-btn-border-color: #daf2f8; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #daf2f8; + --bs-btn-hover-border-color: #daf2f8; + --bs-btn-focus-shadow-rgb: 218, 242, 248; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #daf2f8; + --bs-btn-active-border-color: #daf2f8; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #daf2f8; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #daf2f8; + --bs-gradient: none; +} + +.btn-outline-blue-soft { + --bs-btn-color: #dae7fb; + --bs-btn-border-color: #dae7fb; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #dae7fb; + --bs-btn-hover-border-color: #dae7fb; + --bs-btn-focus-shadow-rgb: 218, 231, 251; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #dae7fb; + --bs-btn-active-border-color: #dae7fb; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #dae7fb; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #dae7fb; + --bs-gradient: none; +} + +.btn-outline-indigo-soft { + --bs-btn-color: #e3ddfa; + --bs-btn-border-color: #e3ddfa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e3ddfa; + --bs-btn-hover-border-color: #e3ddfa; + --bs-btn-focus-shadow-rgb: 227, 221, 250; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e3ddfa; + --bs-btn-active-border-color: #e3ddfa; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #e3ddfa; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #e3ddfa; + --bs-gradient: none; +} + +.btn-outline-purple-soft { + --bs-btn-color: #e4ddf7; + --bs-btn-border-color: #e4ddf7; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e4ddf7; + --bs-btn-hover-border-color: #e4ddf7; + --bs-btn-focus-shadow-rgb: 228, 221, 247; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e4ddf7; + --bs-btn-active-border-color: #e4ddf7; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #e4ddf7; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #e4ddf7; + --bs-gradient: none; +} + +.btn-outline-pink-soft { + --bs-btn-color: #f1ddec; + --bs-btn-border-color: #f1ddec; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f1ddec; + --bs-btn-hover-border-color: #f1ddec; + --bs-btn-focus-shadow-rgb: 241, 221, 236; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f1ddec; + --bs-btn-active-border-color: #f1ddec; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f1ddec; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f1ddec; + --bs-gradient: none; +} + +.btn-outline-primary-soft { + --bs-btn-color: #dae7fb; + --bs-btn-border-color: #dae7fb; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #dae7fb; + --bs-btn-hover-border-color: #dae7fb; + --bs-btn-focus-shadow-rgb: 218, 231, 251; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #dae7fb; + --bs-btn-active-border-color: #dae7fb; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #dae7fb; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #dae7fb; + --bs-gradient: none; +} + +.btn-outline-secondary-soft { + --bs-btn-color: #e4ddf7; + --bs-btn-border-color: #e4ddf7; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e4ddf7; + --bs-btn-hover-border-color: #e4ddf7; + --bs-btn-focus-shadow-rgb: 228, 221, 247; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e4ddf7; + --bs-btn-active-border-color: #e4ddf7; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #e4ddf7; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #e4ddf7; + --bs-gradient: none; +} + +.btn-outline-success-soft { + --bs-btn-color: #daefed; + --bs-btn-border-color: #daefed; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #daefed; + --bs-btn-hover-border-color: #daefed; + --bs-btn-focus-shadow-rgb: 218, 239, 237; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #daefed; + --bs-btn-active-border-color: #daefed; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #daefed; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #daefed; + --bs-gradient: none; +} + +.btn-outline-info-soft { + --bs-btn-color: #daf2f8; + --bs-btn-border-color: #daf2f8; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #daf2f8; + --bs-btn-hover-border-color: #daf2f8; + --bs-btn-focus-shadow-rgb: 218, 242, 248; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #daf2f8; + --bs-btn-active-border-color: #daf2f8; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #daf2f8; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #daf2f8; + --bs-gradient: none; +} + +.btn-outline-warning-soft { + --bs-btn-color: #f2eee3; + --bs-btn-border-color: #f2eee3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f2eee3; + --bs-btn-hover-border-color: #f2eee3; + --bs-btn-focus-shadow-rgb: 242, 238, 227; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f2eee3; + --bs-btn-active-border-color: #f2eee3; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f2eee3; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f2eee3; + --bs-gradient: none; +} + +.btn-outline-danger-soft { + --bs-btn-color: #f1e0e3; + --bs-btn-border-color: #f1e0e3; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f1e0e3; + --bs-btn-hover-border-color: #f1e0e3; + --bs-btn-focus-shadow-rgb: 241, 224, 227; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f1e0e3; + --bs-btn-active-border-color: #f1e0e3; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f1e0e3; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f1e0e3; + --bs-gradient: none; +} + +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: #69707a; + --bs-btn-disabled-border-color: transparent; + --bs-btn-box-shadow: none; + --bs-btn-focus-shadow-rgb: 38, 121, 244; + text-decoration: none; +} +.btn-link:hover, .btn-link:focus-visible { + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--bs-btn-color); +} +.btn-link:hover { + color: var(--bs-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --bs-btn-padding-y: 1.125rem; + --bs-btn-padding-x: 1.5rem; + --bs-btn-font-size: 1rem; + --bs-btn-border-radius: 0.5rem; +} + +.btn-sm, .btn-group-sm > .btn { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 0.75rem; + --bs-btn-font-size: 0.75rem; + --bs-btn-border-radius: 0.25rem; +} + +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: #69707a; + --bs-dropdown-bg: #fff; + --bs-dropdown-border-color: #e0e5ec; + --bs-dropdown-border-radius: 0.35rem; + --bs-dropdown-border-width: 1px; + --bs-dropdown-inner-border-radius: calc(0.35rem - 1px); + --bs-dropdown-divider-bg: #e0e5ec; + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); + --bs-dropdown-link-color: #212832; + --bs-dropdown-link-hover-color: #1e242d; + --bs-dropdown-link-hover-bg: #e0e5ec; + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0061f2; + --bs-dropdown-link-disabled-color: #a7aeb8; + --bs-dropdown-item-padding-x: 1rem; + --bs-dropdown-item-padding-y: 0.25rem; + --bs-dropdown-header-color: #69707a; + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + position: absolute; + z-index: var(--bs-dropdown-zindex); + display: none; + min-width: var(--bs-dropdown-min-width); + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--bs-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1500px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--bs-dropdown-spacer); +} +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--bs-dropdown-spacer); +} +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--bs-dropdown-spacer); +} +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--bs-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--bs-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--bs-dropdown-link-color); + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--bs-dropdown-link-hover-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--bs-dropdown-link-active-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--bs-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.875rem; + color: var(--bs-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + color: var(--bs-dropdown-link-color); +} + +.dropdown-menu-dark { + --bs-dropdown-color: #d4dae3; + --bs-dropdown-bg: #363d47; + --bs-dropdown-border-color: #e0e5ec; + --bs-dropdown-box-shadow: ; + --bs-dropdown-link-color: #d4dae3; + --bs-dropdown-link-hover-color: #fff; + --bs-dropdown-divider-bg: #e0e5ec; + --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0061f2; + --bs-dropdown-link-disabled-color: #a7aeb8; + --bs-dropdown-header-color: #a7aeb8; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group { + border-radius: 0.35rem; +} +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.84375rem; + padding-left: 0.84375rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 1.125rem; + padding-left: 1.125rem; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: #69707a; + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: var(--bs-nav-link-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: var(--bs-nav-link-hover-color); + text-decoration: none; +} +.nav-link.disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --bs-nav-tabs-border-width: 1px; + --bs-nav-tabs-border-color: #d4dae3; + --bs-nav-tabs-border-radius: 0.35rem; + --bs-nav-tabs-link-hover-border-color: #e0e5ec #e0e5ec #d4dae3; + --bs-nav-tabs-link-active-color: #4a515b; + --bs-nav-tabs-link-active-bg: #f2f6fc; + --bs-nav-tabs-link-active-border-color: #d4dae3 #d4dae3 #f2f6fc; + border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); + background: none; + border: var(--bs-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--bs-nav-tabs-border-radius); + border-top-right-radius: var(--bs-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--bs-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.disabled, .nav-tabs .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--bs-nav-tabs-link-active-color); + background-color: var(--bs-nav-tabs-link-active-bg); + border-color: var(--bs-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills { + --bs-nav-pills-border-radius: 0.35rem; + --bs-nav-pills-link-active-color: #fff; + --bs-nav-pills-link-active-bg: #0061f2; +} +.nav-pills .nav-link { + background: none; + border: 0; + border-radius: var(--bs-nav-pills-border-radius); +} +.nav-pills .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--bs-nav-pills-link-active-color); + background-color: var(--bs-nav-pills-link-active-bg); +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.navbar { + --bs-navbar-padding-x: 0; + --bs-navbar-padding-y: 0.5rem; + --bs-navbar-color: rgba(0, 0, 0, 0.55); + --bs-navbar-hover-color: rgba(0, 0, 0, 0.7); + --bs-navbar-disabled-color: rgba(0, 0, 0, 0.3); + --bs-navbar-active-color: rgba(0, 0, 0, 0.9); + --bs-navbar-brand-padding-y: 0.3125rem; + --bs-navbar-brand-margin-end: 1rem; + --bs-navbar-brand-font-size: 1.25rem; + --bs-navbar-brand-color: rgba(0, 0, 0, 0.9); + --bs-navbar-brand-hover-color: rgba(0, 0, 0, 0.9); + --bs-navbar-nav-link-padding-x: 0.5rem; + --bs-navbar-toggler-padding-y: 0.25rem; + --bs-navbar-toggler-padding-x: 0.75rem; + --bs-navbar-toggler-font-size: 1.25rem; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(0, 0, 0, 0.1); + --bs-navbar-toggler-border-radius: 0.35rem; + --bs-navbar-toggler-focus-width: 0.25rem; + --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--bs-navbar-brand-padding-y); + padding-bottom: var(--bs-navbar-brand-padding-y); + margin-right: var(--bs-navbar-brand-margin-end); + font-size: var(--bs-navbar-brand-font-size); + color: var(--bs-navbar-brand-color); + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--bs-navbar-brand-hover-color); + text-decoration: none; +} + +.navbar-nav { + --bs-nav-link-padding-x: 0; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-navbar-color); + --bs-nav-link-hover-color: var(--bs-navbar-hover-color); + --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .show > .nav-link, +.navbar-nav .nav-link.active { + color: var(--bs-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--bs-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x); + font-size: var(--bs-navbar-toggler-font-size); + line-height: 1; + color: var(--bs-navbar-color); + background-color: transparent; + border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); + border-radius: var(--bs-navbar-toggler-border-radius); + transition: var(--bs-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--bs-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1500px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-dark { + --bs-navbar-color: rgba(255, 255, 255, 0.55); + --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); + --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --bs-navbar-active-color: #fff; + --bs-navbar-brand-color: #fff; + --bs-navbar-brand-hover-color: #fff; + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --bs-card-spacer-y: 1.35rem; + --bs-card-spacer-x: 1.35rem; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-border-width: 1px; + --bs-card-border-color: rgba(33, 40, 50, 0.125); + --bs-card-border-radius: 0.35rem; + --bs-card-box-shadow: ; + --bs-card-inner-border-radius: 0.35rem; + --bs-card-cap-padding-y: 1rem; + --bs-card-cap-padding-x: 1.35rem; + --bs-card-cap-bg: rgba(33, 40, 50, 0.03); + --bs-card-cap-color: ; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: #fff; + --bs-card-img-overlay-padding: 1rem; + --bs-card-group-margin: 0.75rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); +} + +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--bs-card-title-spacer-y)); + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} +.card-link + .card-link { + margin-left: var(--bs-card-spacer-x); +} + +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius); +} + +.card-header-tabs { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--bs-card-bg); + border-bottom-color: var(--bs-card-bg); +} + +.card-header-pills { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--bs-card-img-overlay-padding); + border-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--bs-card-group-margin); +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion { + --bs-accordion-color: #69707a; + --bs-accordion-bg: #fff; + --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --bs-accordion-border-color: var(--bs-border-color); + --bs-accordion-border-width: 1px; + --bs-accordion-border-radius: 0.35rem; + --bs-accordion-inner-border-radius: calc(0.35rem - 1px); + --bs-accordion-btn-padding-x: 1.25rem; + --bs-accordion-btn-padding-y: 1rem; + --bs-accordion-btn-color: #69707a; + --bs-accordion-btn-bg: var(--bs-accordion-bg); + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2369707a'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-icon-width: 1.25rem; + --bs-accordion-btn-icon-transform: rotate(-180deg); + --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230057da'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-focus-border-color: transparent; + --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(0, 97, 242, 0.25); + --bs-accordion-body-padding-x: 1.25rem; + --bs-accordion-body-padding-y: 1rem; + --bs-accordion-active-color: #0057da; + --bs-accordion-active-bg: #e6effe; +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); + font-size: 1rem; + color: var(--bs-accordion-btn-color); + text-align: left; + background-color: var(--bs-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--bs-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--bs-accordion-active-color); + background-color: var(--bs-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--bs-accordion-btn-active-icon); + transform: var(--bs-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--bs-accordion-btn-icon-width); + height: var(--bs-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--bs-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--bs-accordion-btn-icon-width); + transition: var(--bs-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + border-color: var(--bs-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--bs-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--bs-accordion-color); + background-color: var(--bs-accordion-bg); + border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--bs-accordion-border-radius); + border-top-right-radius: var(--bs-accordion-border-radius); +} +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: var(--bs-accordion-inner-border-radius); + border-top-right-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: var(--bs-accordion-inner-border-radius); + border-bottom-left-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} + +.accordion-body { + padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; +} + +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + --bs-breadcrumb-divider-color: #69707a; + --bs-breadcrumb-item-padding-x: 0.5rem; + --bs-breadcrumb-item-active-color: #69707a; + display: flex; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--bs-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--bs-breadcrumb-item-padding-x); + color: var(--bs-breadcrumb-divider-color); + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: var(--bs-breadcrumb-item-active-color); +} + +.pagination, .datatable-pagination ul { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 1rem; + --bs-pagination-color: var(--bs-link-color); + --bs-pagination-bg: #fff; + --bs-pagination-border-width: 1px; + --bs-pagination-border-color: #d4dae3; + --bs-pagination-border-radius: 0.35rem; + --bs-pagination-hover-color: var(--bs-link-hover-color); + --bs-pagination-hover-bg: #e0e5ec; + --bs-pagination-hover-border-color: #d4dae3; + --bs-pagination-focus-color: var(--bs-link-hover-color); + --bs-pagination-focus-bg: #e0e5ec; + --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(0, 97, 242, 0.25); + --bs-pagination-active-color: #fff; + --bs-pagination-active-bg: #0061f2; + --bs-pagination-active-border-color: #0061f2; + --bs-pagination-disabled-color: #69707a; + --bs-pagination-disabled-bg: #fff; + --bs-pagination-disabled-border-color: #d4dae3; + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link, .datatable-pagination a { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link, .datatable-pagination a { + transition: none; + } +} +.page-link:hover, .datatable-pagination a:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + text-decoration: none; + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} +.page-link:focus, .datatable-pagination a:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + box-shadow: var(--bs-pagination-focus-box-shadow); +} +.page-link.active, .datatable-pagination a.active, .active > .page-link, .datatable-pagination .active > a { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); +} +.page-link.disabled, .datatable-pagination a.disabled, .disabled > .page-link, .datatable-pagination .disabled > a { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link, .page-item:not(:first-child) .datatable-pagination a, .datatable-pagination .page-item:not(:first-child) a, .datatable-pagination li:not(:first-child) .page-link, .datatable-pagination li:not(:first-child) a { + margin-left: -1px; +} +.page-item:first-child .page-link, .page-item:first-child .datatable-pagination a, .datatable-pagination .page-item:first-child a, .datatable-pagination li:first-child .page-link, .datatable-pagination li:first-child a { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); +} +.page-item:last-child .page-link, .page-item:last-child .datatable-pagination a, .datatable-pagination .page-item:last-child a, .datatable-pagination li:last-child .page-link, .datatable-pagination li:last-child a { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); +} + +.pagination-lg { + --bs-pagination-padding-x: 1.5rem; + --bs-pagination-padding-y: 0.75rem; + --bs-pagination-font-size: 1.25rem; + --bs-pagination-border-radius: 0.5rem; +} + +.pagination-sm { + --bs-pagination-padding-x: 0.5rem; + --bs-pagination-padding-y: 0.25rem; + --bs-pagination-font-size: 0.875rem; + --bs-pagination-border-radius: 0.25rem; +} + +.badge { + --bs-badge-padding-x: 0.65em; + --bs-badge-padding-y: 0.35em; + --bs-badge-font-size: 0.75em; + --bs-badge-font-weight: 400; + --bs-badge-color: #fff; + --bs-badge-border-radius: 0.35rem; + display: inline-block; + padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); + font-size: var(--bs-badge-font-size); + font-weight: var(--bs-badge-font-weight); + line-height: 1; + color: var(--bs-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--bs-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1.25rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: 1px solid var(--bs-alert-border-color); + --bs-alert-border-radius: 0.35rem; + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 500; +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.5625rem 1rem; +} + +.alert-primary { + --bs-alert-color: #003a91; + --bs-alert-bg: #ccdffc; + --bs-alert-border-color: #b3d0fb; +} +.alert-primary .alert-link { + color: #002e74; +} + +.alert-secondary { + --bs-alert-color: #3f0077; + --bs-alert-bg: #e1ccf4; + --bs-alert-border-color: #d2b3ee; +} +.alert-secondary .alert-link { + color: #32005f; +} + +.alert-success { + --bs-alert-color: #00673f; + --bs-alert-bg: #cceee1; + --bs-alert-border-color: #b3e6d2; +} +.alert-success .alert-link { + color: #005232; +} + +.alert-info { + --bs-alert-color: #007c80; + --bs-alert-bg: #ccf5f7; + --bs-alert-border-color: #b3f1f2; +} +.alert-info .alert-link { + color: #006366; +} + +.alert-warning { + --bs-alert-color: #926100; + --bs-alert-bg: #fdeccc; + --bs-alert-border-color: #fce3b3; +} +.alert-warning .alert-link { + color: #754e00; +} + +.alert-danger { + --bs-alert-color: #8b0d00; + --bs-alert-bg: #fad0cc; + --bs-alert-border-color: #f8b9b3; +} +.alert-danger .alert-link { + color: #6f0a00; +} + +.alert-light { + --bs-alert-color: #919497; + --bs-alert-bg: #fcfdfe; + --bs-alert-border-color: #fbfcfe; +} +.alert-light .alert-link { + color: #747679; +} + +.alert-dark { + --bs-alert-color: #14181e; + --bs-alert-bg: #d3d4d6; + --bs-alert-border-color: #bcbfc2; +} +.alert-dark .alert-link { + color: #101318; +} + +.alert-black { + --bs-alert-color: black; + --bs-alert-bg: #cccccc; + --bs-alert-border-color: #b3b3b3; +} +.alert-black .alert-link { + color: black; +} + +.alert-white { + --bs-alert-color: #999999; + --bs-alert-bg: white; + --bs-alert-border-color: white; +} +.alert-white .alert-link { + color: #7a7a7a; +} + +.alert-red { + --bs-alert-color: #8b0d00; + --bs-alert-bg: #fad0cc; + --bs-alert-border-color: #f8b9b3; +} +.alert-red .alert-link { + color: #6f0a00; +} + +.alert-orange { + --bs-alert-color: #943c00; + --bs-alert-bg: #fde0cc; + --bs-alert-border-color: #fdd1b3; +} +.alert-orange .alert-link { + color: #763000; +} + +.alert-yellow { + --bs-alert-color: #926100; + --bs-alert-bg: #fdeccc; + --bs-alert-border-color: #fce3b3; +} +.alert-yellow .alert-link { + color: #754e00; +} + +.alert-green { + --bs-alert-color: #00673f; + --bs-alert-bg: #cceee1; + --bs-alert-border-color: #b3e6d2; +} +.alert-green .alert-link { + color: #005232; +} + +.alert-teal { + --bs-alert-color: #007059; + --bs-alert-bg: #ccf1ea; + --bs-alert-border-color: #b3eadf; +} +.alert-teal .alert-link { + color: #005a47; +} + +.alert-cyan { + --bs-alert-color: #007c80; + --bs-alert-bg: #ccf5f7; + --bs-alert-border-color: #b3f1f2; +} +.alert-cyan .alert-link { + color: #006366; +} + +.alert-blue { + --bs-alert-color: #003a91; + --bs-alert-bg: #ccdffc; + --bs-alert-border-color: #b3d0fb; +} +.alert-blue .alert-link { + color: #002e74; +} + +.alert-indigo { + --bs-alert-color: #35008b; + --bs-alert-bg: #deccfa; + --bs-alert-border-color: #cdb3f8; +} +.alert-indigo .alert-link { + color: #2a006f; +} + +.alert-purple { + --bs-alert-color: #3f0077; + --bs-alert-bg: #e1ccf4; + --bs-alert-border-color: #d2b3ee; +} +.alert-purple .alert-link { + color: #32005f; +} + +.alert-pink { + --bs-alert-color: #880035; + --bs-alert-bg: #f9ccde; + --bs-alert-border-color: #f7b3cd; +} +.alert-pink .alert-link { + color: #6d002a; +} + +.alert-red-soft { + --bs-alert-color: #918688; + --bs-alert-bg: #fcf9f9; + --bs-alert-border-color: #fbf6f7; +} +.alert-red-soft .alert-link { + color: #746b6d; +} + +.alert-orange-soft { + --bs-alert-color: #928b88; + --bs-alert-bg: #fdfaf9; + --bs-alert-border-color: #fbf8f7; +} +.alert-orange-soft .alert-link { + color: #756f6d; +} + +.alert-yellow-soft { + --bs-alert-color: #918f88; + --bs-alert-bg: #fcfcf9; + --bs-alert-border-color: #fbfaf7; +} +.alert-yellow-soft .alert-link { + color: #74726d; +} + +.alert-green-soft { + --bs-alert-color: #838f8e; + --bs-alert-bg: #f8fcfb; + --bs-alert-border-color: #f4fafa; +} +.alert-green-soft .alert-link { + color: #697272; +} + +.alert-teal-soft { + --bs-alert-color: #839091; + --bs-alert-bg: #f8fcfc; + --bs-alert-border-color: #f4fbfb; +} +.alert-teal-soft .alert-link { + color: #697374; +} + +.alert-cyan-soft { + --bs-alert-color: #839195; + --bs-alert-bg: #f8fcfe; + --bs-alert-border-color: #f4fbfd; +} +.alert-cyan-soft .alert-link { + color: #697477; +} + +.alert-blue-soft { + --bs-alert-color: #838b97; + --bs-alert-bg: #f8fafe; + --bs-alert-border-color: #f4f8fe; +} +.alert-blue-soft .alert-link { + color: #696f79; +} + +.alert-indigo-soft { + --bs-alert-color: #888596; + --bs-alert-bg: #f9f8fe; + --bs-alert-border-color: #f7f5fe; +} +.alert-indigo-soft .alert-link { + color: #6d6a78; +} + +.alert-purple-soft { + --bs-alert-color: #898594; + --bs-alert-bg: #faf8fd; + --bs-alert-border-color: #f7f5fd; +} +.alert-purple-soft .alert-link { + color: #6e6a76; +} + +.alert-pink-soft { + --bs-alert-color: #91858e; + --bs-alert-bg: #fcf8fb; + --bs-alert-border-color: #fbf5f9; +} +.alert-pink-soft .alert-link { + color: #746a72; +} + +.alert-primary-soft { + --bs-alert-color: #838b97; + --bs-alert-bg: #f8fafe; + --bs-alert-border-color: #f4f8fe; +} +.alert-primary-soft .alert-link { + color: #696f79; +} + +.alert-secondary-soft { + --bs-alert-color: #898594; + --bs-alert-bg: #faf8fd; + --bs-alert-border-color: #f7f5fd; +} +.alert-secondary-soft .alert-link { + color: #6e6a76; +} + +.alert-success-soft { + --bs-alert-color: #838f8e; + --bs-alert-bg: #f8fcfb; + --bs-alert-border-color: #f4fafa; +} +.alert-success-soft .alert-link { + color: #697272; +} + +.alert-info-soft { + --bs-alert-color: #839195; + --bs-alert-bg: #f8fcfe; + --bs-alert-border-color: #f4fbfd; +} +.alert-info-soft .alert-link { + color: #697477; +} + +.alert-warning-soft { + --bs-alert-color: #918f88; + --bs-alert-bg: #fcfcf9; + --bs-alert-border-color: #fbfaf7; +} +.alert-warning-soft .alert-link { + color: #74726d; +} + +.alert-danger-soft { + --bs-alert-color: #918688; + --bs-alert-bg: #fcf9f9; + --bs-alert-border-color: #fbf6f7; +} +.alert-danger-soft .alert-link { + color: #746b6d; +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress { + --bs-progress-height: 1rem; + --bs-progress-font-size: 0.75rem; + --bs-progress-bg: #e0e5ec; + --bs-progress-border-radius: 0.35rem; + --bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-progress-bar-color: #fff; + --bs-progress-bar-bg: #0061f2; + --bs-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--bs-progress-height); + overflow: hidden; + font-size: var(--bs-progress-font-size); + background-color: var(--bs-progress-bg); + border-radius: var(--bs-progress-border-radius); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--bs-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-progress-bar-bg); + transition: var(--bs-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--bs-progress-height) var(--bs-progress-height); +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + --bs-list-group-color: #212832; + --bs-list-group-bg: #fff; + --bs-list-group-border-color: rgba(0, 0, 0, 0.125); + --bs-list-group-border-width: 1px; + --bs-list-group-border-radius: 0.35rem; + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-action-color: #4a515b; + --bs-list-group-action-hover-color: #4a515b; + --bs-list-group-action-hover-bg: #f2f6fc; + --bs-list-group-action-active-color: #69707a; + --bs-list-group-action-active-bg: #e0e5ec; + --bs-list-group-disabled-color: #69707a; + --bs-list-group-disabled-bg: #fff; + --bs-list-group-active-color: #fff; + --bs-list-group-active-bg: #0061f2; + --bs-list-group-active-border-color: #0061f2; + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--bs-list-group-border-radius); +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: var(--bs-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--bs-list-group-action-hover-color); + text-decoration: none; + background-color: var(--bs-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--bs-list-group-action-active-color); + background-color: var(--bs-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1500px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--bs-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + color: #003a91; + background-color: #ccdffc; +} +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #003a91; + background-color: #b8c9e3; +} +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #003a91; + border-color: #003a91; +} + +.list-group-item-secondary { + color: #3f0077; + background-color: #e1ccf4; +} +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #3f0077; + background-color: #cbb8dc; +} +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #3f0077; + border-color: #3f0077; +} + +.list-group-item-success { + color: #00673f; + background-color: #cceee1; +} +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #00673f; + background-color: #b8d6cb; +} +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #00673f; + border-color: #00673f; +} + +.list-group-item-info { + color: #007c80; + background-color: #ccf5f7; +} +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #007c80; + background-color: #b8ddde; +} +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #007c80; + border-color: #007c80; +} + +.list-group-item-warning { + color: #926100; + background-color: #fdeccc; +} +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #926100; + background-color: #e4d4b8; +} +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #926100; + border-color: #926100; +} + +.list-group-item-danger { + color: #8b0d00; + background-color: #fad0cc; +} +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #8b0d00; + background-color: #e1bbb8; +} +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #8b0d00; + border-color: #8b0d00; +} + +.list-group-item-light { + color: #919497; + background-color: #fcfdfe; +} +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #919497; + background-color: #e3e4e5; +} +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #919497; + border-color: #919497; +} + +.list-group-item-dark { + color: #14181e; + background-color: #d3d4d6; +} +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #14181e; + background-color: #bebfc1; +} +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #14181e; + border-color: #14181e; +} + +.list-group-item-black { + color: black; + background-color: #cccccc; +} +.list-group-item-black.list-group-item-action:hover, .list-group-item-black.list-group-item-action:focus { + color: black; + background-color: #b8b8b8; +} +.list-group-item-black.list-group-item-action.active { + color: #fff; + background-color: black; + border-color: black; +} + +.list-group-item-white { + color: #999999; + background-color: white; +} +.list-group-item-white.list-group-item-action:hover, .list-group-item-white.list-group-item-action:focus { + color: #999999; + background-color: #e6e6e6; +} +.list-group-item-white.list-group-item-action.active { + color: #fff; + background-color: #999999; + border-color: #999999; +} + +.list-group-item-red { + color: #8b0d00; + background-color: #fad0cc; +} +.list-group-item-red.list-group-item-action:hover, .list-group-item-red.list-group-item-action:focus { + color: #8b0d00; + background-color: #e1bbb8; +} +.list-group-item-red.list-group-item-action.active { + color: #fff; + background-color: #8b0d00; + border-color: #8b0d00; +} + +.list-group-item-orange { + color: #943c00; + background-color: #fde0cc; +} +.list-group-item-orange.list-group-item-action:hover, .list-group-item-orange.list-group-item-action:focus { + color: #943c00; + background-color: #e4cab8; +} +.list-group-item-orange.list-group-item-action.active { + color: #fff; + background-color: #943c00; + border-color: #943c00; +} + +.list-group-item-yellow { + color: #926100; + background-color: #fdeccc; +} +.list-group-item-yellow.list-group-item-action:hover, .list-group-item-yellow.list-group-item-action:focus { + color: #926100; + background-color: #e4d4b8; +} +.list-group-item-yellow.list-group-item-action.active { + color: #fff; + background-color: #926100; + border-color: #926100; +} + +.list-group-item-green { + color: #00673f; + background-color: #cceee1; +} +.list-group-item-green.list-group-item-action:hover, .list-group-item-green.list-group-item-action:focus { + color: #00673f; + background-color: #b8d6cb; +} +.list-group-item-green.list-group-item-action.active { + color: #fff; + background-color: #00673f; + border-color: #00673f; +} + +.list-group-item-teal { + color: #007059; + background-color: #ccf1ea; +} +.list-group-item-teal.list-group-item-action:hover, .list-group-item-teal.list-group-item-action:focus { + color: #007059; + background-color: #b8d9d3; +} +.list-group-item-teal.list-group-item-action.active { + color: #fff; + background-color: #007059; + border-color: #007059; +} + +.list-group-item-cyan { + color: #007c80; + background-color: #ccf5f7; +} +.list-group-item-cyan.list-group-item-action:hover, .list-group-item-cyan.list-group-item-action:focus { + color: #007c80; + background-color: #b8ddde; +} +.list-group-item-cyan.list-group-item-action.active { + color: #fff; + background-color: #007c80; + border-color: #007c80; +} + +.list-group-item-blue { + color: #003a91; + background-color: #ccdffc; +} +.list-group-item-blue.list-group-item-action:hover, .list-group-item-blue.list-group-item-action:focus { + color: #003a91; + background-color: #b8c9e3; +} +.list-group-item-blue.list-group-item-action.active { + color: #fff; + background-color: #003a91; + border-color: #003a91; +} + +.list-group-item-indigo { + color: #35008b; + background-color: #deccfa; +} +.list-group-item-indigo.list-group-item-action:hover, .list-group-item-indigo.list-group-item-action:focus { + color: #35008b; + background-color: #c8b8e1; +} +.list-group-item-indigo.list-group-item-action.active { + color: #fff; + background-color: #35008b; + border-color: #35008b; +} + +.list-group-item-purple { + color: #3f0077; + background-color: #e1ccf4; +} +.list-group-item-purple.list-group-item-action:hover, .list-group-item-purple.list-group-item-action:focus { + color: #3f0077; + background-color: #cbb8dc; +} +.list-group-item-purple.list-group-item-action.active { + color: #fff; + background-color: #3f0077; + border-color: #3f0077; +} + +.list-group-item-pink { + color: #880035; + background-color: #f9ccde; +} +.list-group-item-pink.list-group-item-action:hover, .list-group-item-pink.list-group-item-action:focus { + color: #880035; + background-color: #e0b8c8; +} +.list-group-item-pink.list-group-item-action.active { + color: #fff; + background-color: #880035; + border-color: #880035; +} + +.list-group-item-red-soft { + color: #918688; + background-color: #fcf9f9; +} +.list-group-item-red-soft.list-group-item-action:hover, .list-group-item-red-soft.list-group-item-action:focus { + color: #918688; + background-color: #e3e0e0; +} +.list-group-item-red-soft.list-group-item-action.active { + color: #fff; + background-color: #918688; + border-color: #918688; +} + +.list-group-item-orange-soft { + color: #928b88; + background-color: #fdfaf9; +} +.list-group-item-orange-soft.list-group-item-action:hover, .list-group-item-orange-soft.list-group-item-action:focus { + color: #928b88; + background-color: #e4e1e0; +} +.list-group-item-orange-soft.list-group-item-action.active { + color: #fff; + background-color: #928b88; + border-color: #928b88; +} + +.list-group-item-yellow-soft { + color: #918f88; + background-color: #fcfcf9; +} +.list-group-item-yellow-soft.list-group-item-action:hover, .list-group-item-yellow-soft.list-group-item-action:focus { + color: #918f88; + background-color: #e3e3e0; +} +.list-group-item-yellow-soft.list-group-item-action.active { + color: #fff; + background-color: #918f88; + border-color: #918f88; +} + +.list-group-item-green-soft { + color: #838f8e; + background-color: #f8fcfb; +} +.list-group-item-green-soft.list-group-item-action:hover, .list-group-item-green-soft.list-group-item-action:focus { + color: #838f8e; + background-color: #dfe3e2; +} +.list-group-item-green-soft.list-group-item-action.active { + color: #fff; + background-color: #838f8e; + border-color: #838f8e; +} + +.list-group-item-teal-soft { + color: #839091; + background-color: #f8fcfc; +} +.list-group-item-teal-soft.list-group-item-action:hover, .list-group-item-teal-soft.list-group-item-action:focus { + color: #839091; + background-color: #dfe3e3; +} +.list-group-item-teal-soft.list-group-item-action.active { + color: #fff; + background-color: #839091; + border-color: #839091; +} + +.list-group-item-cyan-soft { + color: #839195; + background-color: #f8fcfe; +} +.list-group-item-cyan-soft.list-group-item-action:hover, .list-group-item-cyan-soft.list-group-item-action:focus { + color: #839195; + background-color: #dfe3e5; +} +.list-group-item-cyan-soft.list-group-item-action.active { + color: #fff; + background-color: #839195; + border-color: #839195; +} + +.list-group-item-blue-soft { + color: #838b97; + background-color: #f8fafe; +} +.list-group-item-blue-soft.list-group-item-action:hover, .list-group-item-blue-soft.list-group-item-action:focus { + color: #838b97; + background-color: #dfe1e5; +} +.list-group-item-blue-soft.list-group-item-action.active { + color: #fff; + background-color: #838b97; + border-color: #838b97; +} + +.list-group-item-indigo-soft { + color: #888596; + background-color: #f9f8fe; +} +.list-group-item-indigo-soft.list-group-item-action:hover, .list-group-item-indigo-soft.list-group-item-action:focus { + color: #888596; + background-color: #e0dfe5; +} +.list-group-item-indigo-soft.list-group-item-action.active { + color: #fff; + background-color: #888596; + border-color: #888596; +} + +.list-group-item-purple-soft { + color: #898594; + background-color: #faf8fd; +} +.list-group-item-purple-soft.list-group-item-action:hover, .list-group-item-purple-soft.list-group-item-action:focus { + color: #898594; + background-color: #e1dfe4; +} +.list-group-item-purple-soft.list-group-item-action.active { + color: #fff; + background-color: #898594; + border-color: #898594; +} + +.list-group-item-pink-soft { + color: #91858e; + background-color: #fcf8fb; +} +.list-group-item-pink-soft.list-group-item-action:hover, .list-group-item-pink-soft.list-group-item-action:focus { + color: #91858e; + background-color: #e3dfe2; +} +.list-group-item-pink-soft.list-group-item-action.active { + color: #fff; + background-color: #91858e; + border-color: #91858e; +} + +.list-group-item-primary-soft { + color: #838b97; + background-color: #f8fafe; +} +.list-group-item-primary-soft.list-group-item-action:hover, .list-group-item-primary-soft.list-group-item-action:focus { + color: #838b97; + background-color: #dfe1e5; +} +.list-group-item-primary-soft.list-group-item-action.active { + color: #fff; + background-color: #838b97; + border-color: #838b97; +} + +.list-group-item-secondary-soft { + color: #898594; + background-color: #faf8fd; +} +.list-group-item-secondary-soft.list-group-item-action:hover, .list-group-item-secondary-soft.list-group-item-action:focus { + color: #898594; + background-color: #e1dfe4; +} +.list-group-item-secondary-soft.list-group-item-action.active { + color: #fff; + background-color: #898594; + border-color: #898594; +} + +.list-group-item-success-soft { + color: #838f8e; + background-color: #f8fcfb; +} +.list-group-item-success-soft.list-group-item-action:hover, .list-group-item-success-soft.list-group-item-action:focus { + color: #838f8e; + background-color: #dfe3e2; +} +.list-group-item-success-soft.list-group-item-action.active { + color: #fff; + background-color: #838f8e; + border-color: #838f8e; +} + +.list-group-item-info-soft { + color: #839195; + background-color: #f8fcfe; +} +.list-group-item-info-soft.list-group-item-action:hover, .list-group-item-info-soft.list-group-item-action:focus { + color: #839195; + background-color: #dfe3e5; +} +.list-group-item-info-soft.list-group-item-action.active { + color: #fff; + background-color: #839195; + border-color: #839195; +} + +.list-group-item-warning-soft { + color: #918f88; + background-color: #fcfcf9; +} +.list-group-item-warning-soft.list-group-item-action:hover, .list-group-item-warning-soft.list-group-item-action:focus { + color: #918f88; + background-color: #e3e3e0; +} +.list-group-item-warning-soft.list-group-item-action.active { + color: #fff; + background-color: #918f88; + border-color: #918f88; +} + +.list-group-item-danger-soft { + color: #918688; + background-color: #fcf9f9; +} +.list-group-item-danger-soft.list-group-item-action:hover, .list-group-item-danger-soft.list-group-item-action:focus { + color: #918688; + background-color: #e3e0e0; +} +.list-group-item-danger-soft.list-group-item-action.active { + color: #fff; + background-color: #918688; + border-color: #918688; +} + +.btn-close { + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: #000; + background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat; + border: 0; + border-radius: 0.35rem; + opacity: 0.5; +} +.btn-close:hover { + color: #000; + text-decoration: none; + opacity: 0.75; +} +.btn-close:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(0, 97, 242, 0.25); + opacity: 1; +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + opacity: 0.25; +} + +.btn-close-white { + filter: invert(1) grayscale(100%) brightness(200%); +} + +.toast { + --bs-toast-zindex: 1090; + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-spacing: 1.5rem; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: ; + --bs-toast-bg: rgba(255, 255, 255, 0.85); + --bs-toast-border-width: 1px; + --bs-toast-border-color: var(--bs-border-color-translucent); + --bs-toast-border-radius: 0.35rem; + --bs-toast-box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); + --bs-toast-header-color: #69707a; + --bs-toast-header-bg: rgba(255, 255, 255, 0.85); + --bs-toast-header-border-color: rgba(0, 0, 0, 0.05); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --bs-toast-zindex: 1090; + position: absolute; + z-index: var(--bs-toast-zindex); + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--bs-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color); + border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); + border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); +} + +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --bs-modal-zindex: 1055; + --bs-modal-width: 500px; + --bs-modal-padding: 1rem; + --bs-modal-margin: 0.5rem; + --bs-modal-color: ; + --bs-modal-bg: #fff; + --bs-modal-border-color: var(--bs-border-color-translucent); + --bs-modal-border-width: 1px; + --bs-modal-border-radius: 0.5rem; + --bs-modal-box-shadow: 0 0.125rem 0.25rem 0 rgba(33, 40, 50, 0.2); + --bs-modal-inner-border-radius: calc(0.5rem - 1px); + --bs-modal-header-padding-x: 1rem; + --bs-modal-header-padding-y: 1rem; + --bs-modal-header-padding: 1rem 1rem; + --bs-modal-header-border-color: var(--bs-border-color); + --bs-modal-header-border-width: 1px; + --bs-modal-title-line-height: 1.5; + --bs-modal-footer-gap: 0.5rem; + --bs-modal-footer-bg: ; + --bs-modal-footer-border-color: var(--bs-border-color); + --bs-modal-footer-border-width: 1px; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--bs-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--bs-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--bs-modal-color); + pointer-events: auto; + background-color: var(--bs-modal-bg); + background-clip: padding-box; + border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); + border-radius: var(--bs-modal-border-radius); + outline: 0; +} + +.modal-backdrop { + --bs-backdrop-zindex: 1050; + --bs-backdrop-bg: #000; + --bs-backdrop-opacity: 0.5; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--bs-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--bs-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--bs-modal-header-padding); + border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); + border-top-left-radius: var(--bs-modal-inner-border-radius); + border-top-right-radius: var(--bs-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto; +} + +.modal-title { + margin-bottom: 0; + line-height: var(--bs-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--bs-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5); + background-color: var(--bs-modal-footer-bg); + border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color); + border-bottom-right-radius: var(--bs-modal-inner-border-radius); + border-bottom-left-radius: var(--bs-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--bs-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --bs-modal-margin: 1.75rem; + --bs-modal-box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); + } + .modal-dialog { + max-width: var(--bs-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --bs-modal-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --bs-modal-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --bs-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header, + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header, + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header, + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header, + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1499.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 0.5rem; + --bs-tooltip-padding-y: 0.25rem; + --bs-tooltip-margin: ; + --bs-tooltip-font-size: 0.875rem; + --bs-tooltip-color: #fff; + --bs-tooltip-bg: #000; + --bs-tooltip-border-radius: 0.35rem; + --bs-tooltip-opacity: 0.9; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + padding: var(--bs-tooltip-arrow-height); + margin: var(--bs-tooltip-margin); + font-family: "Metropolis", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: 0; +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: 0; +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} + +.popover { + --bs-popover-zindex: 1070; + --bs-popover-max-width: 276px; + --bs-popover-font-size: 0.875rem; + --bs-popover-bg: #fff; + --bs-popover-border-width: 1px; + --bs-popover-border-color: var(--bs-border-color-translucent); + --bs-popover-border-radius: 0.5rem; + --bs-popover-inner-border-radius: calc(0.5rem - 1px); + --bs-popover-box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); + --bs-popover-header-padding-x: 1rem; + --bs-popover-header-padding-y: 0.5rem; + --bs-popover-header-font-size: 1rem; + --bs-popover-header-color: #363d47; + --bs-popover-header-bg: #f0f0f0; + --bs-popover-body-padding-x: 1rem; + --bs-popover-body-padding-y: 1rem; + --bs-popover-body-color: #69707a; + --bs-popover-arrow-width: 1rem; + --bs-popover-arrow-height: 0.5rem; + --bs-popover-arrow-border: var(--bs-popover-border-color); + z-index: var(--bs-popover-zindex); + display: block; + max-width: var(--bs-popover-max-width); + font-family: "Metropolis", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-popover-font-size); + word-wrap: break-word; + background-color: var(--bs-popover-bg); + background-clip: padding-box; + border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-radius: var(--bs-popover-border-radius); +} +.popover .popover-arrow { + display: block; + width: var(--bs-popover-arrow-width); + height: var(--bs-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--bs-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--bs-popover-border-width); + border-top-color: var(--bs-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--bs-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--bs-popover-border-width); + border-right-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--bs-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--bs-popover-border-width); + border-bottom-color: var(--bs-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--bs-popover-arrow-width); + margin-left: calc(-0.5 * var(--bs-popover-arrow-width)); + content: ""; + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--bs-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--bs-popover-border-width); + border-left-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--bs-popover-header-font-size); + color: var(--bs-popover-header-color); + background-color: var(--bs-popover-header-bg); + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-top-left-radius: var(--bs-popover-inner-border-radius); + border-top-right-radius: var(--bs-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); + color: var(--bs-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; + list-style: none; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.carousel-dark .carousel-caption { + color: #000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--bs-spinner-width); + height: var(--bs-spinner-height); + vertical-align: var(--bs-spinner-vertical-align); + border-radius: 50%; + animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-border-width: 0.25em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-border; + border: var(--bs-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.2em; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --bs-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --bs-offcanvas-zindex: 1045; + --bs-offcanvas-width: 400px; + --bs-offcanvas-height: 30vh; + --bs-offcanvas-padding-x: 1rem; + --bs-offcanvas-padding-y: 1rem; + --bs-offcanvas-color: ; + --bs-offcanvas-bg: #fff; + --bs-offcanvas-border-width: 1px; + --bs-offcanvas-border-color: var(--bs-border-color-translucent); + --bs-offcanvas-box-shadow: 0 0.125rem 0.25rem 0 rgba(33, 40, 50, 0.2); +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1499.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 1499.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1499.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 1499.98px) { + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 1499.98px) { + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 1499.98px) { + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 1499.98px) { + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 1499.98px) { + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1500px) { + .offcanvas-xxl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: 1.5; +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-primary { + color: #fff !important; + background-color: RGBA(0, 97, 242, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fff !important; + background-color: RGBA(105, 0, 199, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fff !important; + background-color: RGBA(0, 172, 105, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #fff !important; + background-color: RGBA(0, 207, 213, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #fff !important; + background-color: RGBA(244, 161, 0, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fff !important; + background-color: RGBA(232, 21, 0, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #000 !important; + background-color: RGBA(242, 246, 252, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fff !important; + background-color: RGBA(33, 40, 50, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-black { + color: #fff !important; + background-color: RGBA(0, 0, 0, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-white { + color: #000 !important; + background-color: RGBA(255, 255, 255, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-red { + color: #fff !important; + background-color: RGBA(232, 21, 0, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-orange { + color: #fff !important; + background-color: RGBA(247, 100, 0, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-yellow { + color: #fff !important; + background-color: RGBA(244, 161, 0, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-green { + color: #fff !important; + background-color: RGBA(0, 172, 105, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-teal { + color: #fff !important; + background-color: RGBA(0, 186, 148, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-cyan { + color: #fff !important; + background-color: RGBA(0, 207, 213, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-blue { + color: #fff !important; + background-color: RGBA(0, 97, 242, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-indigo { + color: #fff !important; + background-color: RGBA(88, 0, 232, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-purple { + color: #fff !important; + background-color: RGBA(105, 0, 199, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-pink { + color: #fff !important; + background-color: RGBA(227, 0, 89, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-red-soft { + color: #000 !important; + background-color: RGBA(241, 224, 227, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-orange-soft { + color: #000 !important; + background-color: RGBA(243, 231, 227, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-yellow-soft { + color: #000 !important; + background-color: RGBA(242, 238, 227, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-green-soft { + color: #000 !important; + background-color: RGBA(218, 239, 237, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-teal-soft { + color: #000 !important; + background-color: RGBA(218, 240, 242, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-cyan-soft { + color: #000 !important; + background-color: RGBA(218, 242, 248, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-blue-soft { + color: #000 !important; + background-color: RGBA(218, 231, 251, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-indigo-soft { + color: #000 !important; + background-color: RGBA(227, 221, 250, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-purple-soft { + color: #000 !important; + background-color: RGBA(228, 221, 247, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-pink-soft { + color: #000 !important; + background-color: RGBA(241, 221, 236, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-primary-soft { + color: #000 !important; + background-color: RGBA(218, 231, 251, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-secondary-soft { + color: #000 !important; + background-color: RGBA(228, 221, 247, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-success-soft { + color: #000 !important; + background-color: RGBA(218, 239, 237, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-info-soft { + color: #000 !important; + background-color: RGBA(218, 242, 248, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-warning-soft { + color: #000 !important; + background-color: RGBA(242, 238, 227, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-danger-soft { + color: #000 !important; + background-color: RGBA(241, 224, 227, var(--bs-bg-opacity, 1)) !important; +} + +.link-primary { + color: #0061f2 !important; +} +.link-primary:hover, .link-primary:focus { + color: #004ec2 !important; +} + +.link-secondary { + color: #6900c7 !important; +} +.link-secondary:hover, .link-secondary:focus { + color: #54009f !important; +} + +.link-success { + color: #00ac69 !important; +} +.link-success:hover, .link-success:focus { + color: #008a54 !important; +} + +.link-info { + color: #00cfd5 !important; +} +.link-info:hover, .link-info:focus { + color: #00a6aa !important; +} + +.link-warning { + color: #f4a100 !important; +} +.link-warning:hover, .link-warning:focus { + color: #c38100 !important; +} + +.link-danger { + color: #e81500 !important; +} +.link-danger:hover, .link-danger:focus { + color: #ba1100 !important; +} + +.link-light { + color: #f2f6fc !important; +} +.link-light:hover, .link-light:focus { + color: #f5f8fd !important; +} + +.link-dark { + color: #212832 !important; +} +.link-dark:hover, .link-dark:focus { + color: #1a2028 !important; +} + +.link-black { + color: #000 !important; +} +.link-black:hover, .link-black:focus { + color: black !important; +} + +.link-white { + color: #fff !important; +} +.link-white:hover, .link-white:focus { + color: white !important; +} + +.link-red { + color: #e81500 !important; +} +.link-red:hover, .link-red:focus { + color: #ba1100 !important; +} + +.link-orange { + color: #f76400 !important; +} +.link-orange:hover, .link-orange:focus { + color: #c65000 !important; +} + +.link-yellow { + color: #f4a100 !important; +} +.link-yellow:hover, .link-yellow:focus { + color: #c38100 !important; +} + +.link-green { + color: #00ac69 !important; +} +.link-green:hover, .link-green:focus { + color: #008a54 !important; +} + +.link-teal { + color: #00ba94 !important; +} +.link-teal:hover, .link-teal:focus { + color: #009576 !important; +} + +.link-cyan { + color: #00cfd5 !important; +} +.link-cyan:hover, .link-cyan:focus { + color: #00a6aa !important; +} + +.link-blue { + color: #0061f2 !important; +} +.link-blue:hover, .link-blue:focus { + color: #004ec2 !important; +} + +.link-indigo { + color: #5800e8 !important; +} +.link-indigo:hover, .link-indigo:focus { + color: #4600ba !important; +} + +.link-purple { + color: #6900c7 !important; +} +.link-purple:hover, .link-purple:focus { + color: #54009f !important; +} + +.link-pink { + color: #e30059 !important; +} +.link-pink:hover, .link-pink:focus { + color: #b60047 !important; +} + +.link-red-soft { + color: #f1e0e3 !important; +} +.link-red-soft:hover, .link-red-soft:focus { + color: #f4e6e9 !important; +} + +.link-orange-soft { + color: #f3e7e3 !important; +} +.link-orange-soft:hover, .link-orange-soft:focus { + color: #f5ece9 !important; +} + +.link-yellow-soft { + color: #f2eee3 !important; +} +.link-yellow-soft:hover, .link-yellow-soft:focus { + color: #f5f1e9 !important; +} + +.link-green-soft { + color: #daefed !important; +} +.link-green-soft:hover, .link-green-soft:focus { + color: #e1f2f1 !important; +} + +.link-teal-soft { + color: #daf0f2 !important; +} +.link-teal-soft:hover, .link-teal-soft:focus { + color: #e1f3f5 !important; +} + +.link-cyan-soft { + color: #daf2f8 !important; +} +.link-cyan-soft:hover, .link-cyan-soft:focus { + color: #e1f5f9 !important; +} + +.link-blue-soft { + color: #dae7fb !important; +} +.link-blue-soft:hover, .link-blue-soft:focus { + color: #e1ecfc !important; +} + +.link-indigo-soft { + color: #e3ddfa !important; +} +.link-indigo-soft:hover, .link-indigo-soft:focus { + color: #e9e4fb !important; +} + +.link-purple-soft { + color: #e4ddf7 !important; +} +.link-purple-soft:hover, .link-purple-soft:focus { + color: #e9e4f9 !important; +} + +.link-pink-soft { + color: #f1ddec !important; +} +.link-pink-soft:hover, .link-pink-soft:focus { + color: #f4e4f0 !important; +} + +.link-primary-soft { + color: #dae7fb !important; +} +.link-primary-soft:hover, .link-primary-soft:focus { + color: #e1ecfc !important; +} + +.link-secondary-soft { + color: #e4ddf7 !important; +} +.link-secondary-soft:hover, .link-secondary-soft:focus { + color: #e9e4f9 !important; +} + +.link-success-soft { + color: #daefed !important; +} +.link-success-soft:hover, .link-success-soft:focus { + color: #e1f2f1 !important; +} + +.link-info-soft { + color: #daf2f8 !important; +} +.link-info-soft:hover, .link-info-soft:focus { + color: #e1f5f9 !important; +} + +.link-warning-soft { + color: #f2eee3 !important; +} +.link-warning-soft:hover, .link-warning-soft:focus { + color: #f5f1e9 !important; +} + +.link-danger-soft { + color: #f1e0e3 !important; +} +.link-danger-soft:hover, .link-danger-soft:focus { + color: #f4e6e9 !important; +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} + +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} + +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} + +.fixed-top, .nav-fixed #layoutSidenav #layoutSidenav_nav, .nav-fixed .topnav { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top, .nav-sticky { + position: sticky; + top: 0; + z-index: 1020; +} + +.sticky-bottom { + position: sticky; + bottom: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1500px) { + .sticky-xxl-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentcolor; + opacity: 0.25; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15) !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem 0 rgba(33, 40, 50, 0.2) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-50 { + left: 50% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-50 { + right: 50% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; +} + +.border-secondary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important; +} + +.border-success { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; +} + +.border-info { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; +} + +.border-warning { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important; +} + +.border-danger { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; +} + +.border-light { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; +} + +.border-dark { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; +} + +.border-black { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important; +} + +.border-white { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; +} + +.border-red { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-red-rgb), var(--bs-border-opacity)) !important; +} + +.border-orange { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-orange-rgb), var(--bs-border-opacity)) !important; +} + +.border-yellow { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-yellow-rgb), var(--bs-border-opacity)) !important; +} + +.border-green { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-green-rgb), var(--bs-border-opacity)) !important; +} + +.border-teal { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-teal-rgb), var(--bs-border-opacity)) !important; +} + +.border-cyan { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-cyan-rgb), var(--bs-border-opacity)) !important; +} + +.border-blue { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-blue-rgb), var(--bs-border-opacity)) !important; +} + +.border-indigo { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-indigo-rgb), var(--bs-border-opacity)) !important; +} + +.border-purple { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-purple-rgb), var(--bs-border-opacity)) !important; +} + +.border-pink { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-pink-rgb), var(--bs-border-opacity)) !important; +} + +.border-red-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-red-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-orange-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-orange-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-yellow-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-yellow-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-green-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-green-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-teal-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-teal-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-cyan-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-cyan-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-blue-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-blue-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-indigo-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-indigo-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-purple-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-purple-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-pink-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-pink-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-primary-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-primary-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-secondary-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-secondary-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-success-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-info-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-warning-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-warning-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-danger-soft { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-danger-soft-rgb), var(--bs-border-opacity)) !important; +} + +.border-1 { + --bs-border-width: 1px; +} + +.border-2 { + --bs-border-width: 2px; +} + +.border-3 { + --bs-border-width: 3px; +} + +.border-4 { + --bs-border-width: 4px; +} + +.border-5 { + --bs-border-width: 5px; +} + +.border-opacity-10 { + --bs-border-opacity: 0.1; +} + +.border-opacity-25 { + --bs-border-opacity: 0.25; +} + +.border-opacity-50 { + --bs-border-opacity: 0.5; +} + +.border-opacity-75 { + --bs-border-opacity: 0.75; +} + +.border-opacity-100 { + --bs-border-opacity: 1; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 2.5rem !important; +} + +.m-10 { + margin: 6rem !important; +} + +.m-15 { + margin: 9rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; +} + +.mx-10 { + margin-right: 6rem !important; + margin-left: 6rem !important; +} + +.mx-15 { + margin-right: 9rem !important; + margin-left: 9rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; +} + +.my-10 { + margin-top: 6rem !important; + margin-bottom: 6rem !important; +} + +.my-15 { + margin-top: 9rem !important; + margin-bottom: 9rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 2.5rem !important; +} + +.mt-10 { + margin-top: 6rem !important; +} + +.mt-15 { + margin-top: 9rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 2.5rem !important; +} + +.me-10 { + margin-right: 6rem !important; +} + +.me-15 { + margin-right: 9rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 2.5rem !important; +} + +.mb-10 { + margin-bottom: 6rem !important; +} + +.mb-15 { + margin-bottom: 9rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 2.5rem !important; +} + +.ms-10 { + margin-left: 6rem !important; +} + +.ms-15 { + margin-left: 9rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.m-n3 { + margin: -1rem !important; +} + +.m-n4 { + margin: -1.5rem !important; +} + +.m-n5 { + margin: -2.5rem !important; +} + +.m-n10 { + margin: -6rem !important; +} + +.m-n15 { + margin: -9rem !important; +} + +.mx-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; +} + +.mx-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; +} + +.mx-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; +} + +.mx-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; +} + +.mx-n5 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; +} + +.mx-n10 { + margin-right: -6rem !important; + margin-left: -6rem !important; +} + +.mx-n15 { + margin-right: -9rem !important; + margin-left: -9rem !important; +} + +.my-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; +} + +.my-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; +} + +.my-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; +} + +.my-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; +} + +.my-n5 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; +} + +.my-n10 { + margin-top: -6rem !important; + margin-bottom: -6rem !important; +} + +.my-n15 { + margin-top: -9rem !important; + margin-bottom: -9rem !important; +} + +.mt-n1 { + margin-top: -0.25rem !important; +} + +.mt-n2 { + margin-top: -0.5rem !important; +} + +.mt-n3 { + margin-top: -1rem !important; +} + +.mt-n4 { + margin-top: -1.5rem !important; +} + +.mt-n5 { + margin-top: -2.5rem !important; +} + +.mt-n10 { + margin-top: -6rem !important; +} + +.mt-n15 { + margin-top: -9rem !important; +} + +.me-n1 { + margin-right: -0.25rem !important; +} + +.me-n2 { + margin-right: -0.5rem !important; +} + +.me-n3 { + margin-right: -1rem !important; +} + +.me-n4 { + margin-right: -1.5rem !important; +} + +.me-n5 { + margin-right: -2.5rem !important; +} + +.me-n10 { + margin-right: -6rem !important; +} + +.me-n15 { + margin-right: -9rem !important; +} + +.mb-n1 { + margin-bottom: -0.25rem !important; +} + +.mb-n2 { + margin-bottom: -0.5rem !important; +} + +.mb-n3 { + margin-bottom: -1rem !important; +} + +.mb-n4 { + margin-bottom: -1.5rem !important; +} + +.mb-n5 { + margin-bottom: -2.5rem !important; +} + +.mb-n10 { + margin-bottom: -6rem !important; +} + +.mb-n15 { + margin-bottom: -9rem !important; +} + +.ms-n1 { + margin-left: -0.25rem !important; +} + +.ms-n2 { + margin-left: -0.5rem !important; +} + +.ms-n3 { + margin-left: -1rem !important; +} + +.ms-n4 { + margin-left: -1.5rem !important; +} + +.ms-n5 { + margin-left: -2.5rem !important; +} + +.ms-n10 { + margin-left: -6rem !important; +} + +.ms-n15 { + margin-left: -9rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 2.5rem !important; +} + +.p-10 { + padding: 6rem !important; +} + +.p-15 { + padding: 9rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; +} + +.px-10 { + padding-right: 6rem !important; + padding-left: 6rem !important; +} + +.px-15 { + padding-right: 9rem !important; + padding-left: 9rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; +} + +.py-10 { + padding-top: 6rem !important; + padding-bottom: 6rem !important; +} + +.py-15 { + padding-top: 9rem !important; + padding-bottom: 9rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 2.5rem !important; +} + +.pt-10 { + padding-top: 6rem !important; +} + +.pt-15 { + padding-top: 9rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 2.5rem !important; +} + +.pe-10 { + padding-right: 6rem !important; +} + +.pe-15 { + padding-right: 9rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 2.5rem !important; +} + +.pb-10 { + padding-bottom: 6rem !important; +} + +.pb-15 { + padding-bottom: 9rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 2.5rem !important; +} + +.ps-10 { + padding-left: 6rem !important; +} + +.ps-15 { + padding-left: 9rem !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 2.5rem !important; +} + +.gap-10 { + gap: 6rem !important; +} + +.gap-15 { + gap: 9rem !important; +} + +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} + +.fs-1 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-2 { + font-size: calc(1.265rem + 0.18vw) !important; +} + +.fs-3 { + font-size: calc(1.255rem + 0.06vw) !important; +} + +.fs-4 { + font-size: 1.2rem !important; +} + +.fs-5 { + font-size: 1.1rem !important; +} + +.fs-6 { + font-size: 1rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-bold { + font-weight: 500 !important; +} + +.fw-semibold { + font-weight: 600 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 2 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} + +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} + +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} + +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} + +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} + +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} + +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} + +.text-red { + --bs-text-opacity: 1; + color: rgba(var(--bs-red-rgb), var(--bs-text-opacity)) !important; +} + +.text-orange { + --bs-text-opacity: 1; + color: rgba(var(--bs-orange-rgb), var(--bs-text-opacity)) !important; +} + +.text-yellow { + --bs-text-opacity: 1; + color: rgba(var(--bs-yellow-rgb), var(--bs-text-opacity)) !important; +} + +.text-green { + --bs-text-opacity: 1; + color: rgba(var(--bs-green-rgb), var(--bs-text-opacity)) !important; +} + +.text-teal { + --bs-text-opacity: 1; + color: rgba(var(--bs-teal-rgb), var(--bs-text-opacity)) !important; +} + +.text-cyan { + --bs-text-opacity: 1; + color: rgba(var(--bs-cyan-rgb), var(--bs-text-opacity)) !important; +} + +.text-blue { + --bs-text-opacity: 1; + color: rgba(var(--bs-blue-rgb), var(--bs-text-opacity)) !important; +} + +.text-indigo { + --bs-text-opacity: 1; + color: rgba(var(--bs-indigo-rgb), var(--bs-text-opacity)) !important; +} + +.text-purple { + --bs-text-opacity: 1; + color: rgba(var(--bs-purple-rgb), var(--bs-text-opacity)) !important; +} + +.text-pink { + --bs-text-opacity: 1; + color: rgba(var(--bs-pink-rgb), var(--bs-text-opacity)) !important; +} + +.text-red-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-red-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-orange-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-orange-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-yellow-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-yellow-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-green-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-green-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-teal-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-teal-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-cyan-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-cyan-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-blue-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-blue-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-indigo-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-indigo-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-purple-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-purple-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-pink-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-pink-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-primary-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-success-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-info-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger-soft { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-soft-rgb), var(--bs-text-opacity)) !important; +} + +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} + +.text-muted { + --bs-text-opacity: 1; + color: #a7aeb8 !important; +} + +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-reset, .footer-admin a { + --bs-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --bs-text-opacity: 0.25; +} + +.text-opacity-50 { + --bs-text-opacity: 0.5; +} + +.text-opacity-75 { + --bs-text-opacity: 0.75; +} + +.text-opacity-100 { + --bs-text-opacity: 1; +} + +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-red { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-red-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-orange { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-orange-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-yellow { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-yellow-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-green { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-green-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-teal { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-teal-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-cyan { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-cyan-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-blue { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-blue-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-indigo { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-indigo-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-purple { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-purple-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-pink { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-pink-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-red-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-red-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-orange-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-orange-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-yellow-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-yellow-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-green-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-green-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-teal-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-teal-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-cyan-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-cyan-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-blue-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-blue-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-indigo-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-indigo-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-purple-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-purple-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-pink-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-pink-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-primary-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger-soft { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-soft-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --bs-bg-opacity: 1; +} + +.bg-gradient { + background-image: var(--bs-gradient) !important; +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--bs-border-radius-2xl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-top { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 2.5rem !important; + } + .m-sm-10 { + margin: 6rem !important; + } + .m-sm-15 { + margin: 9rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-sm-10 { + margin-right: 6rem !important; + margin-left: 6rem !important; + } + .mx-sm-15 { + margin-right: 9rem !important; + margin-left: 9rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-sm-10 { + margin-top: 6rem !important; + margin-bottom: 6rem !important; + } + .my-sm-15 { + margin-top: 9rem !important; + margin-bottom: 9rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 2.5rem !important; + } + .mt-sm-10 { + margin-top: 6rem !important; + } + .mt-sm-15 { + margin-top: 9rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 2.5rem !important; + } + .me-sm-10 { + margin-right: 6rem !important; + } + .me-sm-15 { + margin-right: 9rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 2.5rem !important; + } + .mb-sm-10 { + margin-bottom: 6rem !important; + } + .mb-sm-15 { + margin-bottom: 9rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 2.5rem !important; + } + .ms-sm-10 { + margin-left: 6rem !important; + } + .ms-sm-15 { + margin-left: 9rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .m-sm-n3 { + margin: -1rem !important; + } + .m-sm-n4 { + margin: -1.5rem !important; + } + .m-sm-n5 { + margin: -2.5rem !important; + } + .m-sm-n10 { + margin: -6rem !important; + } + .m-sm-n15 { + margin: -9rem !important; + } + .mx-sm-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-sm-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-sm-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-sm-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-sm-n5 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-sm-n10 { + margin-right: -6rem !important; + margin-left: -6rem !important; + } + .mx-sm-n15 { + margin-right: -9rem !important; + margin-left: -9rem !important; + } + .my-sm-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-sm-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-sm-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-sm-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-sm-n5 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-sm-n10 { + margin-top: -6rem !important; + margin-bottom: -6rem !important; + } + .my-sm-n15 { + margin-top: -9rem !important; + margin-bottom: -9rem !important; + } + .mt-sm-n1 { + margin-top: -0.25rem !important; + } + .mt-sm-n2 { + margin-top: -0.5rem !important; + } + .mt-sm-n3 { + margin-top: -1rem !important; + } + .mt-sm-n4 { + margin-top: -1.5rem !important; + } + .mt-sm-n5 { + margin-top: -2.5rem !important; + } + .mt-sm-n10 { + margin-top: -6rem !important; + } + .mt-sm-n15 { + margin-top: -9rem !important; + } + .me-sm-n1 { + margin-right: -0.25rem !important; + } + .me-sm-n2 { + margin-right: -0.5rem !important; + } + .me-sm-n3 { + margin-right: -1rem !important; + } + .me-sm-n4 { + margin-right: -1.5rem !important; + } + .me-sm-n5 { + margin-right: -2.5rem !important; + } + .me-sm-n10 { + margin-right: -6rem !important; + } + .me-sm-n15 { + margin-right: -9rem !important; + } + .mb-sm-n1 { + margin-bottom: -0.25rem !important; + } + .mb-sm-n2 { + margin-bottom: -0.5rem !important; + } + .mb-sm-n3 { + margin-bottom: -1rem !important; + } + .mb-sm-n4 { + margin-bottom: -1.5rem !important; + } + .mb-sm-n5 { + margin-bottom: -2.5rem !important; + } + .mb-sm-n10 { + margin-bottom: -6rem !important; + } + .mb-sm-n15 { + margin-bottom: -9rem !important; + } + .ms-sm-n1 { + margin-left: -0.25rem !important; + } + .ms-sm-n2 { + margin-left: -0.5rem !important; + } + .ms-sm-n3 { + margin-left: -1rem !important; + } + .ms-sm-n4 { + margin-left: -1.5rem !important; + } + .ms-sm-n5 { + margin-left: -2.5rem !important; + } + .ms-sm-n10 { + margin-left: -6rem !important; + } + .ms-sm-n15 { + margin-left: -9rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 2.5rem !important; + } + .p-sm-10 { + padding: 6rem !important; + } + .p-sm-15 { + padding: 9rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-sm-10 { + padding-right: 6rem !important; + padding-left: 6rem !important; + } + .px-sm-15 { + padding-right: 9rem !important; + padding-left: 9rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-sm-10 { + padding-top: 6rem !important; + padding-bottom: 6rem !important; + } + .py-sm-15 { + padding-top: 9rem !important; + padding-bottom: 9rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 2.5rem !important; + } + .pt-sm-10 { + padding-top: 6rem !important; + } + .pt-sm-15 { + padding-top: 9rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 2.5rem !important; + } + .pe-sm-10 { + padding-right: 6rem !important; + } + .pe-sm-15 { + padding-right: 9rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 2.5rem !important; + } + .pb-sm-10 { + padding-bottom: 6rem !important; + } + .pb-sm-15 { + padding-bottom: 9rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 2.5rem !important; + } + .ps-sm-10 { + padding-left: 6rem !important; + } + .ps-sm-15 { + padding-left: 9rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 2.5rem !important; + } + .gap-sm-10 { + gap: 6rem !important; + } + .gap-sm-15 { + gap: 9rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + .float-md-end { + float: right !important; + } + .float-md-none { + float: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 2.5rem !important; + } + .m-md-10 { + margin: 6rem !important; + } + .m-md-15 { + margin: 9rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-md-10 { + margin-right: 6rem !important; + margin-left: 6rem !important; + } + .mx-md-15 { + margin-right: 9rem !important; + margin-left: 9rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-md-10 { + margin-top: 6rem !important; + margin-bottom: 6rem !important; + } + .my-md-15 { + margin-top: 9rem !important; + margin-bottom: 9rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 2.5rem !important; + } + .mt-md-10 { + margin-top: 6rem !important; + } + .mt-md-15 { + margin-top: 9rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 2.5rem !important; + } + .me-md-10 { + margin-right: 6rem !important; + } + .me-md-15 { + margin-right: 9rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 2.5rem !important; + } + .mb-md-10 { + margin-bottom: 6rem !important; + } + .mb-md-15 { + margin-bottom: 9rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 2.5rem !important; + } + .ms-md-10 { + margin-left: 6rem !important; + } + .ms-md-15 { + margin-left: 9rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .m-md-n3 { + margin: -1rem !important; + } + .m-md-n4 { + margin: -1.5rem !important; + } + .m-md-n5 { + margin: -2.5rem !important; + } + .m-md-n10 { + margin: -6rem !important; + } + .m-md-n15 { + margin: -9rem !important; + } + .mx-md-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-md-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-md-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-md-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-md-n5 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-md-n10 { + margin-right: -6rem !important; + margin-left: -6rem !important; + } + .mx-md-n15 { + margin-right: -9rem !important; + margin-left: -9rem !important; + } + .my-md-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-md-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-md-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-md-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-md-n5 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-md-n10 { + margin-top: -6rem !important; + margin-bottom: -6rem !important; + } + .my-md-n15 { + margin-top: -9rem !important; + margin-bottom: -9rem !important; + } + .mt-md-n1 { + margin-top: -0.25rem !important; + } + .mt-md-n2 { + margin-top: -0.5rem !important; + } + .mt-md-n3 { + margin-top: -1rem !important; + } + .mt-md-n4 { + margin-top: -1.5rem !important; + } + .mt-md-n5 { + margin-top: -2.5rem !important; + } + .mt-md-n10 { + margin-top: -6rem !important; + } + .mt-md-n15 { + margin-top: -9rem !important; + } + .me-md-n1 { + margin-right: -0.25rem !important; + } + .me-md-n2 { + margin-right: -0.5rem !important; + } + .me-md-n3 { + margin-right: -1rem !important; + } + .me-md-n4 { + margin-right: -1.5rem !important; + } + .me-md-n5 { + margin-right: -2.5rem !important; + } + .me-md-n10 { + margin-right: -6rem !important; + } + .me-md-n15 { + margin-right: -9rem !important; + } + .mb-md-n1 { + margin-bottom: -0.25rem !important; + } + .mb-md-n2 { + margin-bottom: -0.5rem !important; + } + .mb-md-n3 { + margin-bottom: -1rem !important; + } + .mb-md-n4 { + margin-bottom: -1.5rem !important; + } + .mb-md-n5 { + margin-bottom: -2.5rem !important; + } + .mb-md-n10 { + margin-bottom: -6rem !important; + } + .mb-md-n15 { + margin-bottom: -9rem !important; + } + .ms-md-n1 { + margin-left: -0.25rem !important; + } + .ms-md-n2 { + margin-left: -0.5rem !important; + } + .ms-md-n3 { + margin-left: -1rem !important; + } + .ms-md-n4 { + margin-left: -1.5rem !important; + } + .ms-md-n5 { + margin-left: -2.5rem !important; + } + .ms-md-n10 { + margin-left: -6rem !important; + } + .ms-md-n15 { + margin-left: -9rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 2.5rem !important; + } + .p-md-10 { + padding: 6rem !important; + } + .p-md-15 { + padding: 9rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-md-10 { + padding-right: 6rem !important; + padding-left: 6rem !important; + } + .px-md-15 { + padding-right: 9rem !important; + padding-left: 9rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-md-10 { + padding-top: 6rem !important; + padding-bottom: 6rem !important; + } + .py-md-15 { + padding-top: 9rem !important; + padding-bottom: 9rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 2.5rem !important; + } + .pt-md-10 { + padding-top: 6rem !important; + } + .pt-md-15 { + padding-top: 9rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 2.5rem !important; + } + .pe-md-10 { + padding-right: 6rem !important; + } + .pe-md-15 { + padding-right: 9rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 2.5rem !important; + } + .pb-md-10 { + padding-bottom: 6rem !important; + } + .pb-md-15 { + padding-bottom: 9rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 2.5rem !important; + } + .ps-md-10 { + padding-left: 6rem !important; + } + .ps-md-15 { + padding-left: 9rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.5rem !important; + } + .gap-md-5 { + gap: 2.5rem !important; + } + .gap-md-10 { + gap: 6rem !important; + } + .gap-md-15 { + gap: 9rem !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + .float-lg-end { + float: right !important; + } + .float-lg-none { + float: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 2.5rem !important; + } + .m-lg-10 { + margin: 6rem !important; + } + .m-lg-15 { + margin: 9rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-lg-10 { + margin-right: 6rem !important; + margin-left: 6rem !important; + } + .mx-lg-15 { + margin-right: 9rem !important; + margin-left: 9rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-lg-10 { + margin-top: 6rem !important; + margin-bottom: 6rem !important; + } + .my-lg-15 { + margin-top: 9rem !important; + margin-bottom: 9rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 2.5rem !important; + } + .mt-lg-10 { + margin-top: 6rem !important; + } + .mt-lg-15 { + margin-top: 9rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 2.5rem !important; + } + .me-lg-10 { + margin-right: 6rem !important; + } + .me-lg-15 { + margin-right: 9rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 2.5rem !important; + } + .mb-lg-10 { + margin-bottom: 6rem !important; + } + .mb-lg-15 { + margin-bottom: 9rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 2.5rem !important; + } + .ms-lg-10 { + margin-left: 6rem !important; + } + .ms-lg-15 { + margin-left: 9rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .m-lg-n3 { + margin: -1rem !important; + } + .m-lg-n4 { + margin: -1.5rem !important; + } + .m-lg-n5 { + margin: -2.5rem !important; + } + .m-lg-n10 { + margin: -6rem !important; + } + .m-lg-n15 { + margin: -9rem !important; + } + .mx-lg-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-lg-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-lg-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-lg-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-lg-n5 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-lg-n10 { + margin-right: -6rem !important; + margin-left: -6rem !important; + } + .mx-lg-n15 { + margin-right: -9rem !important; + margin-left: -9rem !important; + } + .my-lg-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-lg-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-lg-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-lg-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-lg-n5 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-lg-n10 { + margin-top: -6rem !important; + margin-bottom: -6rem !important; + } + .my-lg-n15 { + margin-top: -9rem !important; + margin-bottom: -9rem !important; + } + .mt-lg-n1 { + margin-top: -0.25rem !important; + } + .mt-lg-n2 { + margin-top: -0.5rem !important; + } + .mt-lg-n3 { + margin-top: -1rem !important; + } + .mt-lg-n4 { + margin-top: -1.5rem !important; + } + .mt-lg-n5 { + margin-top: -2.5rem !important; + } + .mt-lg-n10 { + margin-top: -6rem !important; + } + .mt-lg-n15 { + margin-top: -9rem !important; + } + .me-lg-n1 { + margin-right: -0.25rem !important; + } + .me-lg-n2 { + margin-right: -0.5rem !important; + } + .me-lg-n3 { + margin-right: -1rem !important; + } + .me-lg-n4 { + margin-right: -1.5rem !important; + } + .me-lg-n5 { + margin-right: -2.5rem !important; + } + .me-lg-n10 { + margin-right: -6rem !important; + } + .me-lg-n15 { + margin-right: -9rem !important; + } + .mb-lg-n1 { + margin-bottom: -0.25rem !important; + } + .mb-lg-n2 { + margin-bottom: -0.5rem !important; + } + .mb-lg-n3 { + margin-bottom: -1rem !important; + } + .mb-lg-n4 { + margin-bottom: -1.5rem !important; + } + .mb-lg-n5 { + margin-bottom: -2.5rem !important; + } + .mb-lg-n10 { + margin-bottom: -6rem !important; + } + .mb-lg-n15 { + margin-bottom: -9rem !important; + } + .ms-lg-n1 { + margin-left: -0.25rem !important; + } + .ms-lg-n2 { + margin-left: -0.5rem !important; + } + .ms-lg-n3 { + margin-left: -1rem !important; + } + .ms-lg-n4 { + margin-left: -1.5rem !important; + } + .ms-lg-n5 { + margin-left: -2.5rem !important; + } + .ms-lg-n10 { + margin-left: -6rem !important; + } + .ms-lg-n15 { + margin-left: -9rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 2.5rem !important; + } + .p-lg-10 { + padding: 6rem !important; + } + .p-lg-15 { + padding: 9rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-lg-10 { + padding-right: 6rem !important; + padding-left: 6rem !important; + } + .px-lg-15 { + padding-right: 9rem !important; + padding-left: 9rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-lg-10 { + padding-top: 6rem !important; + padding-bottom: 6rem !important; + } + .py-lg-15 { + padding-top: 9rem !important; + padding-bottom: 9rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 2.5rem !important; + } + .pt-lg-10 { + padding-top: 6rem !important; + } + .pt-lg-15 { + padding-top: 9rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 2.5rem !important; + } + .pe-lg-10 { + padding-right: 6rem !important; + } + .pe-lg-15 { + padding-right: 9rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 2.5rem !important; + } + .pb-lg-10 { + padding-bottom: 6rem !important; + } + .pb-lg-15 { + padding-bottom: 9rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 2.5rem !important; + } + .ps-lg-10 { + padding-left: 6rem !important; + } + .ps-lg-15 { + padding-left: 9rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.5rem !important; + } + .gap-lg-5 { + gap: 2.5rem !important; + } + .gap-lg-10 { + gap: 6rem !important; + } + .gap-lg-15 { + gap: 9rem !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 2.5rem !important; + } + .m-xl-10 { + margin: 6rem !important; + } + .m-xl-15 { + margin: 9rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-xl-10 { + margin-right: 6rem !important; + margin-left: 6rem !important; + } + .mx-xl-15 { + margin-right: 9rem !important; + margin-left: 9rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-xl-10 { + margin-top: 6rem !important; + margin-bottom: 6rem !important; + } + .my-xl-15 { + margin-top: 9rem !important; + margin-bottom: 9rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 2.5rem !important; + } + .mt-xl-10 { + margin-top: 6rem !important; + } + .mt-xl-15 { + margin-top: 9rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 2.5rem !important; + } + .me-xl-10 { + margin-right: 6rem !important; + } + .me-xl-15 { + margin-right: 9rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 2.5rem !important; + } + .mb-xl-10 { + margin-bottom: 6rem !important; + } + .mb-xl-15 { + margin-bottom: 9rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 2.5rem !important; + } + .ms-xl-10 { + margin-left: 6rem !important; + } + .ms-xl-15 { + margin-left: 9rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .m-xl-n3 { + margin: -1rem !important; + } + .m-xl-n4 { + margin: -1.5rem !important; + } + .m-xl-n5 { + margin: -2.5rem !important; + } + .m-xl-n10 { + margin: -6rem !important; + } + .m-xl-n15 { + margin: -9rem !important; + } + .mx-xl-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-xl-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-xl-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-xl-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-xl-n5 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-xl-n10 { + margin-right: -6rem !important; + margin-left: -6rem !important; + } + .mx-xl-n15 { + margin-right: -9rem !important; + margin-left: -9rem !important; + } + .my-xl-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-xl-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-xl-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-xl-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-xl-n5 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-xl-n10 { + margin-top: -6rem !important; + margin-bottom: -6rem !important; + } + .my-xl-n15 { + margin-top: -9rem !important; + margin-bottom: -9rem !important; + } + .mt-xl-n1 { + margin-top: -0.25rem !important; + } + .mt-xl-n2 { + margin-top: -0.5rem !important; + } + .mt-xl-n3 { + margin-top: -1rem !important; + } + .mt-xl-n4 { + margin-top: -1.5rem !important; + } + .mt-xl-n5 { + margin-top: -2.5rem !important; + } + .mt-xl-n10 { + margin-top: -6rem !important; + } + .mt-xl-n15 { + margin-top: -9rem !important; + } + .me-xl-n1 { + margin-right: -0.25rem !important; + } + .me-xl-n2 { + margin-right: -0.5rem !important; + } + .me-xl-n3 { + margin-right: -1rem !important; + } + .me-xl-n4 { + margin-right: -1.5rem !important; + } + .me-xl-n5 { + margin-right: -2.5rem !important; + } + .me-xl-n10 { + margin-right: -6rem !important; + } + .me-xl-n15 { + margin-right: -9rem !important; + } + .mb-xl-n1 { + margin-bottom: -0.25rem !important; + } + .mb-xl-n2 { + margin-bottom: -0.5rem !important; + } + .mb-xl-n3 { + margin-bottom: -1rem !important; + } + .mb-xl-n4 { + margin-bottom: -1.5rem !important; + } + .mb-xl-n5 { + margin-bottom: -2.5rem !important; + } + .mb-xl-n10 { + margin-bottom: -6rem !important; + } + .mb-xl-n15 { + margin-bottom: -9rem !important; + } + .ms-xl-n1 { + margin-left: -0.25rem !important; + } + .ms-xl-n2 { + margin-left: -0.5rem !important; + } + .ms-xl-n3 { + margin-left: -1rem !important; + } + .ms-xl-n4 { + margin-left: -1.5rem !important; + } + .ms-xl-n5 { + margin-left: -2.5rem !important; + } + .ms-xl-n10 { + margin-left: -6rem !important; + } + .ms-xl-n15 { + margin-left: -9rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 2.5rem !important; + } + .p-xl-10 { + padding: 6rem !important; + } + .p-xl-15 { + padding: 9rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-xl-10 { + padding-right: 6rem !important; + padding-left: 6rem !important; + } + .px-xl-15 { + padding-right: 9rem !important; + padding-left: 9rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-xl-10 { + padding-top: 6rem !important; + padding-bottom: 6rem !important; + } + .py-xl-15 { + padding-top: 9rem !important; + padding-bottom: 9rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 2.5rem !important; + } + .pt-xl-10 { + padding-top: 6rem !important; + } + .pt-xl-15 { + padding-top: 9rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 2.5rem !important; + } + .pe-xl-10 { + padding-right: 6rem !important; + } + .pe-xl-15 { + padding-right: 9rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 2.5rem !important; + } + .pb-xl-10 { + padding-bottom: 6rem !important; + } + .pb-xl-15 { + padding-bottom: 9rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 2.5rem !important; + } + .ps-xl-10 { + padding-left: 6rem !important; + } + .ps-xl-15 { + padding-left: 9rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 2.5rem !important; + } + .gap-xl-10 { + gap: 6rem !important; + } + .gap-xl-15 { + gap: 9rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} +@media (min-width: 1500px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 2.5rem !important; + } + .m-xxl-10 { + margin: 6rem !important; + } + .m-xxl-15 { + margin: 9rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-xxl-10 { + margin-right: 6rem !important; + margin-left: 6rem !important; + } + .mx-xxl-15 { + margin-right: 9rem !important; + margin-left: 9rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-xxl-10 { + margin-top: 6rem !important; + margin-bottom: 6rem !important; + } + .my-xxl-15 { + margin-top: 9rem !important; + margin-bottom: 9rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 2.5rem !important; + } + .mt-xxl-10 { + margin-top: 6rem !important; + } + .mt-xxl-15 { + margin-top: 9rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 2.5rem !important; + } + .me-xxl-10 { + margin-right: 6rem !important; + } + .me-xxl-15 { + margin-right: 9rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 2.5rem !important; + } + .mb-xxl-10 { + margin-bottom: 6rem !important; + } + .mb-xxl-15 { + margin-bottom: 9rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 2.5rem !important; + } + .ms-xxl-10 { + margin-left: 6rem !important; + } + .ms-xxl-15 { + margin-left: 9rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .m-xxl-n1 { + margin: -0.25rem !important; + } + .m-xxl-n2 { + margin: -0.5rem !important; + } + .m-xxl-n3 { + margin: -1rem !important; + } + .m-xxl-n4 { + margin: -1.5rem !important; + } + .m-xxl-n5 { + margin: -2.5rem !important; + } + .m-xxl-n10 { + margin: -6rem !important; + } + .m-xxl-n15 { + margin: -9rem !important; + } + .mx-xxl-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-xxl-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-xxl-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-xxl-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-xxl-n5 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-xxl-n10 { + margin-right: -6rem !important; + margin-left: -6rem !important; + } + .mx-xxl-n15 { + margin-right: -9rem !important; + margin-left: -9rem !important; + } + .my-xxl-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-xxl-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-xxl-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-xxl-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-xxl-n5 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-xxl-n10 { + margin-top: -6rem !important; + margin-bottom: -6rem !important; + } + .my-xxl-n15 { + margin-top: -9rem !important; + margin-bottom: -9rem !important; + } + .mt-xxl-n1 { + margin-top: -0.25rem !important; + } + .mt-xxl-n2 { + margin-top: -0.5rem !important; + } + .mt-xxl-n3 { + margin-top: -1rem !important; + } + .mt-xxl-n4 { + margin-top: -1.5rem !important; + } + .mt-xxl-n5 { + margin-top: -2.5rem !important; + } + .mt-xxl-n10 { + margin-top: -6rem !important; + } + .mt-xxl-n15 { + margin-top: -9rem !important; + } + .me-xxl-n1 { + margin-right: -0.25rem !important; + } + .me-xxl-n2 { + margin-right: -0.5rem !important; + } + .me-xxl-n3 { + margin-right: -1rem !important; + } + .me-xxl-n4 { + margin-right: -1.5rem !important; + } + .me-xxl-n5 { + margin-right: -2.5rem !important; + } + .me-xxl-n10 { + margin-right: -6rem !important; + } + .me-xxl-n15 { + margin-right: -9rem !important; + } + .mb-xxl-n1 { + margin-bottom: -0.25rem !important; + } + .mb-xxl-n2 { + margin-bottom: -0.5rem !important; + } + .mb-xxl-n3 { + margin-bottom: -1rem !important; + } + .mb-xxl-n4 { + margin-bottom: -1.5rem !important; + } + .mb-xxl-n5 { + margin-bottom: -2.5rem !important; + } + .mb-xxl-n10 { + margin-bottom: -6rem !important; + } + .mb-xxl-n15 { + margin-bottom: -9rem !important; + } + .ms-xxl-n1 { + margin-left: -0.25rem !important; + } + .ms-xxl-n2 { + margin-left: -0.5rem !important; + } + .ms-xxl-n3 { + margin-left: -1rem !important; + } + .ms-xxl-n4 { + margin-left: -1.5rem !important; + } + .ms-xxl-n5 { + margin-left: -2.5rem !important; + } + .ms-xxl-n10 { + margin-left: -6rem !important; + } + .ms-xxl-n15 { + margin-left: -9rem !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 2.5rem !important; + } + .p-xxl-10 { + padding: 6rem !important; + } + .p-xxl-15 { + padding: 9rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-xxl-10 { + padding-right: 6rem !important; + padding-left: 6rem !important; + } + .px-xxl-15 { + padding-right: 9rem !important; + padding-left: 9rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-xxl-10 { + padding-top: 6rem !important; + padding-bottom: 6rem !important; + } + .py-xxl-15 { + padding-top: 9rem !important; + padding-bottom: 9rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 2.5rem !important; + } + .pt-xxl-10 { + padding-top: 6rem !important; + } + .pt-xxl-15 { + padding-top: 9rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 2.5rem !important; + } + .pe-xxl-10 { + padding-right: 6rem !important; + } + .pe-xxl-15 { + padding-right: 9rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 2.5rem !important; + } + .pb-xxl-10 { + padding-bottom: 6rem !important; + } + .pb-xxl-15 { + padding-bottom: 9rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 2.5rem !important; + } + .ps-xxl-10 { + padding-left: 6rem !important; + } + .ps-xxl-15 { + padding-left: 9rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.5rem !important; + } + .gap-xxl-5 { + gap: 2.5rem !important; + } + .gap-xxl-10 { + gap: 6rem !important; + } + .gap-xxl-15 { + gap: 9rem !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .fs-1 { + font-size: 1.5rem !important; + } + .fs-2 { + font-size: 1.4rem !important; + } + .fs-3 { + font-size: 1.3rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +html, +body { + height: 100%; +} + +body { + overflow-x: hidden; +} + +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-Thin.otf"); + font-weight: 100; + font-style: normal; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-ThinItalic.otf"); + font-weight: 100; + font-style: italic; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-ExtraLight.otf"); + font-weight: 200; + font-style: normal; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-ExtraLightItalic.otf"); + font-weight: 200; + font-style: italic; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-Light.otf"); + font-weight: 300; + font-style: normal; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-LightItalic.otf"); + font-weight: 300; + font-style: italic; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-Regular.otf"); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-RegularItalic.otf"); + font-weight: 400; + font-style: italic; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-Medium.otf"); + font-weight: 500; + font-style: normal; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-MediumItalic.otf"); + font-weight: 500; + font-style: italic; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-SemiBold.otf"); + font-weight: 600; + font-style: normal; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-SemiBoldItalic.otf"); + font-weight: 600; + font-style: italic; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-Bold.otf"); + font-weight: 700; + font-style: normal; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-BoldItalic.otf"); + font-weight: 700; + font-style: italic; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-ExtraBold.otf"); + font-weight: 800; + font-style: normal; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-ExtraBoldItalic.otf"); + font-weight: 800; + font-style: italic; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-Black.otf"); + font-weight: 800; + font-style: normal; +} +@font-face { + font-family: "Metropolis"; + src: url("../assets/fonts/metropolis/Metropolis-BlackItalic.otf"); + font-weight: 800; + font-style: italic; +} +#layoutAuthentication { + display: flex; + flex-direction: column; + min-height: 100vh; +} +#layoutAuthentication #layoutAuthentication_content { + min-width: 0; + flex-grow: 1; +} +#layoutAuthentication #layoutAuthentication_footer { + min-width: 0; +} + +#layoutError { + display: flex; + flex-direction: column; + min-height: 100vh; +} +#layoutError #layoutError_content { + min-width: 0; + flex-grow: 1; +} +#layoutError #layoutError_footer { + min-width: 0; +} + +.img-error { + max-width: 20rem; +} + +@keyframes fadeInUp { + 0% { + opacity: 0; + margin-top: 0.75rem; + } + 100% { + opacity: 1; + margin-top: 0; + } +} +.animated--fade-in-up { + animation-name: fadeInUp; + animation-duration: 300ms; + animation-timing-function: margin cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1); +} +.animated--fade-in-up.dropdown-menu { + margin-top: 0; + top: 0.125rem !important; +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +.animated--fade-in { + animation-name: fadeIn; + animation-duration: 300ms; + animation-timing-function: opacity cubic-bezier(0, 1, 0.4, 1); +} + +.bg-gradient-primary-to-secondary { + background-color: #0061f2 !important; + background-image: linear-gradient(135deg, #0061f2 0%, rgba(105, 0, 199, 0.8) 100%) !important; +} + +.bg-transparent-light { + color: rgba(255, 255, 255, 0.5) !important; + background-color: rgba(0, 0, 0, 0.1) !important; +} + +.bg-transparent-dark { + color: rgba(33, 40, 50, 0.5) !important; + background-color: rgba(33, 40, 50, 0.8) !important; +} + +.bg-gray-100 { + background-color: #f2f6fc !important; +} + +.bg-gray-200 { + background-color: #e0e5ec !important; +} + +.bg-gray-300 { + background-color: #d4dae3 !important; +} + +.bg-gray-400 { + background-color: #c5ccd6 !important; +} + +.bg-gray-500 { + background-color: #a7aeb8 !important; +} + +.bg-gray-600 { + background-color: #69707a !important; +} + +.bg-gray-700 { + background-color: #4a515b !important; +} + +.bg-gray-800 { + background-color: #363d47 !important; +} + +.bg-gray-900 { + background-color: #212832 !important; +} + +.bg-white-25 { + background-color: rgba(255, 255, 255, 0.25) !important; +} + +.bg-img-cover { + background-position: center; + background-size: cover; + background-repeat: no-repeat; +} + +.bg-img-repeat { + background-position: top left; + background-repeat: repeat; +} + +.overlay { + position: relative; +} +.overlay:before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #000; + opacity: 0.5; +} + +.overlay-primary:before { + background-color: #0061f2 !important; +} + +.overlay-secondary:before { + background-color: #6900c7 !important; +} + +.overlay-success:before { + background-color: #00ac69 !important; +} + +.overlay-info:before { + background-color: #00cfd5 !important; +} + +.overlay-warning:before { + background-color: #f4a100 !important; +} + +.overlay-danger:before { + background-color: #e81500 !important; +} + +.overlay-light:before { + background-color: #f2f6fc !important; +} + +.overlay-dark:before { + background-color: #212832 !important; +} + +.overlay-black:before { + background-color: #000 !important; +} + +.overlay-white:before { + background-color: #fff !important; +} + +.overlay-red:before { + background-color: #e81500 !important; +} + +.overlay-orange:before { + background-color: #f76400 !important; +} + +.overlay-yellow:before { + background-color: #f4a100 !important; +} + +.overlay-green:before { + background-color: #00ac69 !important; +} + +.overlay-teal:before { + background-color: #00ba94 !important; +} + +.overlay-cyan:before { + background-color: #00cfd5 !important; +} + +.overlay-blue:before { + background-color: #0061f2 !important; +} + +.overlay-indigo:before { + background-color: #5800e8 !important; +} + +.overlay-purple:before { + background-color: #6900c7 !important; +} + +.overlay-pink:before { + background-color: #e30059 !important; +} + +.overlay-red-soft:before { + background-color: #f1e0e3 !important; +} + +.overlay-orange-soft:before { + background-color: #f3e7e3 !important; +} + +.overlay-yellow-soft:before { + background-color: #f2eee3 !important; +} + +.overlay-green-soft:before { + background-color: #daefed !important; +} + +.overlay-teal-soft:before { + background-color: #daf0f2 !important; +} + +.overlay-cyan-soft:before { + background-color: #daf2f8 !important; +} + +.overlay-blue-soft:before { + background-color: #dae7fb !important; +} + +.overlay-indigo-soft:before { + background-color: #e3ddfa !important; +} + +.overlay-purple-soft:before { + background-color: #e4ddf7 !important; +} + +.overlay-pink-soft:before { + background-color: #f1ddec !important; +} + +.overlay-primary-soft:before { + background-color: #dae7fb !important; +} + +.overlay-secondary-soft:before { + background-color: #e4ddf7 !important; +} + +.overlay-success-soft:before { + background-color: #daefed !important; +} + +.overlay-info-soft:before { + background-color: #daf2f8 !important; +} + +.overlay-warning-soft:before { + background-color: #f2eee3 !important; +} + +.overlay-danger-soft:before { + background-color: #f1e0e3 !important; +} + +.overlay-10:before { + opacity: 0.1; +} + +.overlay-20:before { + opacity: 0.2; +} + +.overlay-30:before { + opacity: 0.3; +} + +.overlay-40:before { + opacity: 0.4; +} + +.overlay-50:before { + opacity: 0.5; +} + +.overlay-60:before { + opacity: 0.6; +} + +.overlay-70:before { + opacity: 0.7; +} + +.overlay-80:before { + opacity: 0.8; +} + +.overlay-90:before { + opacity: 0.9; +} + +.border-lg { + border-width: 0.25rem !important; +} + +.border-top-lg { + border-top-width: 0.25rem !important; +} + +.border-end-lg { + border-right-width: 0.25rem !important; +} + +.border-bottom-lg { + border-bottom-width: 0.25rem !important; +} + +.border-start-lg { + border-left-width: 0.25rem !important; +} + +.border-primary { + border-color: #0061f2 !important; +} + +.border-secondary { + border-color: #6900c7 !important; +} + +.border-success { + border-color: #00ac69 !important; +} + +.border-info { + border-color: #00cfd5 !important; +} + +.border-warning { + border-color: #f4a100 !important; +} + +.border-danger { + border-color: #e81500 !important; +} + +.border-light { + border-color: #f2f6fc !important; +} + +.border-dark { + border-color: #212832 !important; +} + +.border-black { + border-color: #000 !important; +} + +.border-white { + border-color: #fff !important; +} + +.border-red { + border-color: #e81500 !important; +} + +.border-orange { + border-color: #f76400 !important; +} + +.border-yellow { + border-color: #f4a100 !important; +} + +.border-green { + border-color: #00ac69 !important; +} + +.border-teal { + border-color: #00ba94 !important; +} + +.border-cyan { + border-color: #00cfd5 !important; +} + +.border-blue { + border-color: #0061f2 !important; +} + +.border-indigo { + border-color: #5800e8 !important; +} + +.border-purple { + border-color: #6900c7 !important; +} + +.border-pink { + border-color: #e30059 !important; +} + +.border-red-soft { + border-color: #f1e0e3 !important; +} + +.border-orange-soft { + border-color: #f3e7e3 !important; +} + +.border-yellow-soft { + border-color: #f2eee3 !important; +} + +.border-green-soft { + border-color: #daefed !important; +} + +.border-teal-soft { + border-color: #daf0f2 !important; +} + +.border-cyan-soft { + border-color: #daf2f8 !important; +} + +.border-blue-soft { + border-color: #dae7fb !important; +} + +.border-indigo-soft { + border-color: #e3ddfa !important; +} + +.border-purple-soft { + border-color: #e4ddf7 !important; +} + +.border-pink-soft { + border-color: #f1ddec !important; +} + +.border-primary-soft { + border-color: #dae7fb !important; +} + +.border-secondary-soft { + border-color: #e4ddf7 !important; +} + +.border-success-soft { + border-color: #daefed !important; +} + +.border-info-soft { + border-color: #daf2f8 !important; +} + +.border-warning-soft { + border-color: #f2eee3 !important; +} + +.border-danger-soft { + border-color: #f1e0e3 !important; +} + +.border-start-primary { + border-left-color: #0061f2 !important; +} + +.border-start-secondary { + border-left-color: #6900c7 !important; +} + +.border-start-success { + border-left-color: #00ac69 !important; +} + +.border-start-info { + border-left-color: #00cfd5 !important; +} + +.border-start-warning { + border-left-color: #f4a100 !important; +} + +.border-start-danger { + border-left-color: #e81500 !important; +} + +.border-start-light { + border-left-color: #f2f6fc !important; +} + +.border-start-dark { + border-left-color: #212832 !important; +} + +.border-start-black { + border-left-color: #000 !important; +} + +.border-start-white { + border-left-color: #fff !important; +} + +.border-start-red { + border-left-color: #e81500 !important; +} + +.border-start-orange { + border-left-color: #f76400 !important; +} + +.border-start-yellow { + border-left-color: #f4a100 !important; +} + +.border-start-green { + border-left-color: #00ac69 !important; +} + +.border-start-teal { + border-left-color: #00ba94 !important; +} + +.border-start-cyan { + border-left-color: #00cfd5 !important; +} + +.border-start-blue { + border-left-color: #0061f2 !important; +} + +.border-start-indigo { + border-left-color: #5800e8 !important; +} + +.border-start-purple { + border-left-color: #6900c7 !important; +} + +.border-start-pink { + border-left-color: #e30059 !important; +} + +.border-start-red-soft { + border-left-color: #f1e0e3 !important; +} + +.border-start-orange-soft { + border-left-color: #f3e7e3 !important; +} + +.border-start-yellow-soft { + border-left-color: #f2eee3 !important; +} + +.border-start-green-soft { + border-left-color: #daefed !important; +} + +.border-start-teal-soft { + border-left-color: #daf0f2 !important; +} + +.border-start-cyan-soft { + border-left-color: #daf2f8 !important; +} + +.border-start-blue-soft { + border-left-color: #dae7fb !important; +} + +.border-start-indigo-soft { + border-left-color: #e3ddfa !important; +} + +.border-start-purple-soft { + border-left-color: #e4ddf7 !important; +} + +.border-start-pink-soft { + border-left-color: #f1ddec !important; +} + +.border-start-primary-soft { + border-left-color: #dae7fb !important; +} + +.border-start-secondary-soft { + border-left-color: #e4ddf7 !important; +} + +.border-start-success-soft { + border-left-color: #daefed !important; +} + +.border-start-info-soft { + border-left-color: #daf2f8 !important; +} + +.border-start-warning-soft { + border-left-color: #f2eee3 !important; +} + +.border-start-danger-soft { + border-left-color: #f1e0e3 !important; +} + +.border-end-primary { + border-right-color: #0061f2 !important; +} + +.border-end-secondary { + border-right-color: #6900c7 !important; +} + +.border-end-success { + border-right-color: #00ac69 !important; +} + +.border-end-info { + border-right-color: #00cfd5 !important; +} + +.border-end-warning { + border-right-color: #f4a100 !important; +} + +.border-end-danger { + border-right-color: #e81500 !important; +} + +.border-end-light { + border-right-color: #f2f6fc !important; +} + +.border-end-dark { + border-right-color: #212832 !important; +} + +.border-end-black { + border-right-color: #000 !important; +} + +.border-end-white { + border-right-color: #fff !important; +} + +.border-end-red { + border-right-color: #e81500 !important; +} + +.border-end-orange { + border-right-color: #f76400 !important; +} + +.border-end-yellow { + border-right-color: #f4a100 !important; +} + +.border-end-green { + border-right-color: #00ac69 !important; +} + +.border-end-teal { + border-right-color: #00ba94 !important; +} + +.border-end-cyan { + border-right-color: #00cfd5 !important; +} + +.border-end-blue { + border-right-color: #0061f2 !important; +} + +.border-end-indigo { + border-right-color: #5800e8 !important; +} + +.border-end-purple { + border-right-color: #6900c7 !important; +} + +.border-end-pink { + border-right-color: #e30059 !important; +} + +.border-end-red-soft { + border-right-color: #f1e0e3 !important; +} + +.border-end-orange-soft { + border-right-color: #f3e7e3 !important; +} + +.border-end-yellow-soft { + border-right-color: #f2eee3 !important; +} + +.border-end-green-soft { + border-right-color: #daefed !important; +} + +.border-end-teal-soft { + border-right-color: #daf0f2 !important; +} + +.border-end-cyan-soft { + border-right-color: #daf2f8 !important; +} + +.border-end-blue-soft { + border-right-color: #dae7fb !important; +} + +.border-end-indigo-soft { + border-right-color: #e3ddfa !important; +} + +.border-end-purple-soft { + border-right-color: #e4ddf7 !important; +} + +.border-end-pink-soft { + border-right-color: #f1ddec !important; +} + +.border-end-primary-soft { + border-right-color: #dae7fb !important; +} + +.border-end-secondary-soft { + border-right-color: #e4ddf7 !important; +} + +.border-end-success-soft { + border-right-color: #daefed !important; +} + +.border-end-info-soft { + border-right-color: #daf2f8 !important; +} + +.border-end-warning-soft { + border-right-color: #f2eee3 !important; +} + +.border-end-danger-soft { + border-right-color: #f1e0e3 !important; +} + +.border-top-primary { + border-top-color: #0061f2 !important; +} + +.border-top-secondary { + border-top-color: #6900c7 !important; +} + +.border-top-success { + border-top-color: #00ac69 !important; +} + +.border-top-info { + border-top-color: #00cfd5 !important; +} + +.border-top-warning { + border-top-color: #f4a100 !important; +} + +.border-top-danger { + border-top-color: #e81500 !important; +} + +.border-top-light { + border-top-color: #f2f6fc !important; +} + +.border-top-dark { + border-top-color: #212832 !important; +} + +.border-top-black { + border-top-color: #000 !important; +} + +.border-top-white { + border-top-color: #fff !important; +} + +.border-top-red { + border-top-color: #e81500 !important; +} + +.border-top-orange { + border-top-color: #f76400 !important; +} + +.border-top-yellow { + border-top-color: #f4a100 !important; +} + +.border-top-green { + border-top-color: #00ac69 !important; +} + +.border-top-teal { + border-top-color: #00ba94 !important; +} + +.border-top-cyan { + border-top-color: #00cfd5 !important; +} + +.border-top-blue { + border-top-color: #0061f2 !important; +} + +.border-top-indigo { + border-top-color: #5800e8 !important; +} + +.border-top-purple { + border-top-color: #6900c7 !important; +} + +.border-top-pink { + border-top-color: #e30059 !important; +} + +.border-top-red-soft { + border-top-color: #f1e0e3 !important; +} + +.border-top-orange-soft { + border-top-color: #f3e7e3 !important; +} + +.border-top-yellow-soft { + border-top-color: #f2eee3 !important; +} + +.border-top-green-soft { + border-top-color: #daefed !important; +} + +.border-top-teal-soft { + border-top-color: #daf0f2 !important; +} + +.border-top-cyan-soft { + border-top-color: #daf2f8 !important; +} + +.border-top-blue-soft { + border-top-color: #dae7fb !important; +} + +.border-top-indigo-soft { + border-top-color: #e3ddfa !important; +} + +.border-top-purple-soft { + border-top-color: #e4ddf7 !important; +} + +.border-top-pink-soft { + border-top-color: #f1ddec !important; +} + +.border-top-primary-soft { + border-top-color: #dae7fb !important; +} + +.border-top-secondary-soft { + border-top-color: #e4ddf7 !important; +} + +.border-top-success-soft { + border-top-color: #daefed !important; +} + +.border-top-info-soft { + border-top-color: #daf2f8 !important; +} + +.border-top-warning-soft { + border-top-color: #f2eee3 !important; +} + +.border-top-danger-soft { + border-top-color: #f1e0e3 !important; +} + +.border-bottom-primary { + border-bottom-color: #0061f2 !important; +} + +.border-bottom-secondary { + border-bottom-color: #6900c7 !important; +} + +.border-bottom-success { + border-bottom-color: #00ac69 !important; +} + +.border-bottom-info { + border-bottom-color: #00cfd5 !important; +} + +.border-bottom-warning { + border-bottom-color: #f4a100 !important; +} + +.border-bottom-danger { + border-bottom-color: #e81500 !important; +} + +.border-bottom-light { + border-bottom-color: #f2f6fc !important; +} + +.border-bottom-dark { + border-bottom-color: #212832 !important; +} + +.border-bottom-black { + border-bottom-color: #000 !important; +} + +.border-bottom-white { + border-bottom-color: #fff !important; +} + +.border-bottom-red { + border-bottom-color: #e81500 !important; +} + +.border-bottom-orange { + border-bottom-color: #f76400 !important; +} + +.border-bottom-yellow { + border-bottom-color: #f4a100 !important; +} + +.border-bottom-green { + border-bottom-color: #00ac69 !important; +} + +.border-bottom-teal { + border-bottom-color: #00ba94 !important; +} + +.border-bottom-cyan { + border-bottom-color: #00cfd5 !important; +} + +.border-bottom-blue { + border-bottom-color: #0061f2 !important; +} + +.border-bottom-indigo { + border-bottom-color: #5800e8 !important; +} + +.border-bottom-purple { + border-bottom-color: #6900c7 !important; +} + +.border-bottom-pink { + border-bottom-color: #e30059 !important; +} + +.border-bottom-red-soft { + border-bottom-color: #f1e0e3 !important; +} + +.border-bottom-orange-soft { + border-bottom-color: #f3e7e3 !important; +} + +.border-bottom-yellow-soft { + border-bottom-color: #f2eee3 !important; +} + +.border-bottom-green-soft { + border-bottom-color: #daefed !important; +} + +.border-bottom-teal-soft { + border-bottom-color: #daf0f2 !important; +} + +.border-bottom-cyan-soft { + border-bottom-color: #daf2f8 !important; +} + +.border-bottom-blue-soft { + border-bottom-color: #dae7fb !important; +} + +.border-bottom-indigo-soft { + border-bottom-color: #e3ddfa !important; +} + +.border-bottom-purple-soft { + border-bottom-color: #e4ddf7 !important; +} + +.border-bottom-pink-soft { + border-bottom-color: #f1ddec !important; +} + +.border-bottom-primary-soft { + border-bottom-color: #dae7fb !important; +} + +.border-bottom-secondary-soft { + border-bottom-color: #e4ddf7 !important; +} + +.border-bottom-success-soft { + border-bottom-color: #daefed !important; +} + +.border-bottom-info-soft { + border-bottom-color: #daf2f8 !important; +} + +.border-bottom-warning-soft { + border-bottom-color: #f2eee3 !important; +} + +.border-bottom-danger-soft { + border-bottom-color: #f1e0e3 !important; +} + +.rounded-xl { + border-radius: 1rem !important; +} + +.border-gray-100 { + border-color: #f2f6fc !important; +} + +.border-gray-200 { + border-color: #e0e5ec !important; +} + +.border-gray-300 { + border-color: #d4dae3 !important; +} + +.border-gray-400 { + border-color: #c5ccd6 !important; +} + +.border-gray-500 { + border-color: #a7aeb8 !important; +} + +.border-gray-600 { + border-color: #69707a !important; +} + +.border-gray-700 { + border-color: #4a515b !important; +} + +.border-gray-800 { + border-color: #363d47 !important; +} + +.border-gray-900 { + border-color: #212832 !important; +} + +.no-caret .dropdown-toggle::after { + display: none; +} + +.pointer { + cursor: pointer !important; +} + +.no-highlight { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; +} + +.lift { + box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); + transition: transform 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.lift:hover { + transform: translateY(-0.3333333333rem); + box-shadow: 0 0.5rem 2rem 0 rgba(33, 40, 50, 0.25); +} +.lift:active { + transform: none; + box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); +} + +.lift-sm { + box-shadow: 0 0.125rem 0.25rem 0 rgba(33, 40, 50, 0.2); +} +.lift-sm:hover { + transform: translateY(-0.1666666667rem); + box-shadow: 0 0.25rem 1rem 0 rgba(33, 40, 50, 0.25); +} +.lift-sm:active { + transform: none; + box-shadow: 0 0.125rem 0.25rem 0 rgba(33, 40, 50, 0.2); +} + +.card.lift { + text-decoration: none; + color: inherit; +} + +.o-visible { + overflow: visible !important; +} + +.o-hidden { + overflow: hidden !important; +} + +.shadow-right-sm { + box-shadow: 0.125rem 0 0.25rem 0 rgba(33, 40, 50, 0.15) !important; +} + +.shadow-right { + box-shadow: 0.15rem 0 1.75rem 0 rgba(33, 40, 50, 0.15) !important; +} + +.shadow-right-lg { + box-shadow: 1rem 0 3rem 0 rgba(33, 40, 50, 0.15) !important; +} + +.shadow-left-sm { + box-shadow: -0.125rem 0 0.25rem 0 rgba(33, 40, 50, 0.15) !important; +} + +.shadow-left { + box-shadow: -0.15rem 0 1.75rem 0 rgba(33, 40, 50, 0.15) !important; +} + +.shadow-left-lg { + box-shadow: -1rem 0 3rem 0 rgba(33, 40, 50, 0.15) !important; +} + +.content-skewed { + perspective: 1500px !important; + transform-style: preserve-3d !important; +} + +.content-skewed-right { + perspective-origin: right center !important; +} +.content-skewed-right .content-skewed-item { + transform: rotateY(30deg) rotateX(15deg) !important; + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; +} + +.content-skewed-left { + perspective-origin: left center !important; +} +.content-skewed-left .content-skewed-item { + transform: rotateY(-30deg) rotateX(15deg) !important; + -webkit-backface-visibility: hidden !important; + backface-visibility: hidden !important; +} + +.text-gray-100 { + color: #f2f6fc !important; +} + +.text-gray-200 { + color: #e0e5ec !important; +} + +.text-gray-300 { + color: #d4dae3 !important; +} + +.text-gray-400 { + color: #c5ccd6 !important; +} + +.text-gray-500 { + color: #a7aeb8 !important; +} + +.text-gray-600 { + color: #69707a !important; +} + +.text-gray-700 { + color: #4a515b !important; +} + +.text-gray-800 { + color: #363d47 !important; +} + +.text-gray-900 { + color: #212832 !important; +} + +.fw-100 { + font-weight: 100 !important; +} + +.fw-200 { + font-weight: 200 !important; +} + +.fw-300 { + font-weight: 300 !important; +} + +.fw-400 { + font-weight: 400 !important; +} + +.fw-500 { + font-weight: 500 !important; +} + +.fw-600 { + font-weight: 600 !important; +} + +.fw-700 { + font-weight: 700 !important; +} + +.fw-800 { + font-weight: 800 !important; +} + +.fw-900 { + font-weight: 900 !important; +} + +.text-white-75 { + color: rgba(255, 255, 255, 0.75) !important; +} + +.text-white-25 { + color: rgba(255, 255, 255, 0.25) !important; +} + +.text-black-75 { + color: rgba(0, 0, 0, 0.75) !important; +} + +.text-black-25 { + color: rgba(0, 0, 0, 0.25) !important; +} + +.text-xs { + font-size: 0.75rem !important; +} + +.text-sm { + font-size: 0.875rem !important; +} + +.text-lg { + font-size: 1.25rem !important; +} + +.text-xl { + font-size: 2.5rem !important; +} + +.text-uppercase-expanded { + font-weight: 700; + letter-spacing: 0.125em; + text-transform: uppercase; +} + +.text-arrow-icon { + line-height: 1; + display: inline-flex; + align-items: center; +} +.text-arrow-icon svg { + margin-left: 0.25rem; +} +.text-arrow-icon.small svg { + height: 0.875rem; + width: 0.875rem; +} + +.line-height-normal { + line-height: normal !important; +} + +.feather-sm { + height: 0.875rem !important; + width: 0.875rem !important; +} + +.feather-lg { + height: 1.25rem !important; + width: 1.25rem !important; +} + +.feather-xl { + height: 2.5rem !important; + width: 2.5rem !important; +} + +.z-1 { + z-index: 1 !important; + position: relative !important; +} + +.z-2 { + z-index: 2 !important; + position: relative !important; +} + +.alert-icon { + position: relative; + display: flex; + padding: 0; +} +.alert-icon button.btn-close { + position: absolute; + top: 1.25rem; + right: 1rem; +} +.alert-icon .alert-icon-aside { + display: flex; + align-items: center; + justify-content: center; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + padding-left: 1rem; + font-size: 1.5rem; +} +.alert-icon .alert-icon-aside svg.feather, +.alert-icon .alert-icon-aside svg, +.alert-icon .alert-icon-aside i { + height: 1.5rem; + width: 1.5rem; +} +.alert-icon .alert-icon-content { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + padding-left: 1rem; + padding-right: 1rem; +} + +.alert-primary.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #0061f2; + --bs-alert-border-color: #0061f2; +} +.alert-primary.alert-solid .alert-link { + color: #cccccc; +} + +.alert-secondary.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #6900c7; + --bs-alert-border-color: #6900c7; +} +.alert-secondary.alert-solid .alert-link { + color: #cccccc; +} + +.alert-success.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #00ac69; + --bs-alert-border-color: #00ac69; +} +.alert-success.alert-solid .alert-link { + color: #cccccc; +} + +.alert-info.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #00cfd5; + --bs-alert-border-color: #00cfd5; +} +.alert-info.alert-solid .alert-link { + color: #cccccc; +} + +.alert-warning.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #f4a100; + --bs-alert-border-color: #f4a100; +} +.alert-warning.alert-solid .alert-link { + color: #cccccc; +} + +.alert-danger.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #e81500; + --bs-alert-border-color: #e81500; +} +.alert-danger.alert-solid .alert-link { + color: #cccccc; +} + +.alert-light.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #f2f6fc; + --bs-alert-border-color: #f2f6fc; +} +.alert-light.alert-solid .alert-link { + color: black; +} + +.alert-dark.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #212832; + --bs-alert-border-color: #212832; +} +.alert-dark.alert-solid .alert-link { + color: #cccccc; +} + +.alert-black.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #000; + --bs-alert-border-color: #000; +} +.alert-black.alert-solid .alert-link { + color: #cccccc; +} + +.alert-white.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #fff; + --bs-alert-border-color: #fff; +} +.alert-white.alert-solid .alert-link { + color: black; +} + +.alert-red.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #e81500; + --bs-alert-border-color: #e81500; +} +.alert-red.alert-solid .alert-link { + color: #cccccc; +} + +.alert-orange.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #f76400; + --bs-alert-border-color: #f76400; +} +.alert-orange.alert-solid .alert-link { + color: #cccccc; +} + +.alert-yellow.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #f4a100; + --bs-alert-border-color: #f4a100; +} +.alert-yellow.alert-solid .alert-link { + color: #cccccc; +} + +.alert-green.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #00ac69; + --bs-alert-border-color: #00ac69; +} +.alert-green.alert-solid .alert-link { + color: #cccccc; +} + +.alert-teal.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #00ba94; + --bs-alert-border-color: #00ba94; +} +.alert-teal.alert-solid .alert-link { + color: #cccccc; +} + +.alert-cyan.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #00cfd5; + --bs-alert-border-color: #00cfd5; +} +.alert-cyan.alert-solid .alert-link { + color: #cccccc; +} + +.alert-blue.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #0061f2; + --bs-alert-border-color: #0061f2; +} +.alert-blue.alert-solid .alert-link { + color: #cccccc; +} + +.alert-indigo.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #5800e8; + --bs-alert-border-color: #5800e8; +} +.alert-indigo.alert-solid .alert-link { + color: #cccccc; +} + +.alert-purple.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #6900c7; + --bs-alert-border-color: #6900c7; +} +.alert-purple.alert-solid .alert-link { + color: #cccccc; +} + +.alert-pink.alert-solid { + --bs-alert-color: #fff; + --bs-alert-bg: #e30059; + --bs-alert-border-color: #e30059; +} +.alert-pink.alert-solid .alert-link { + color: #cccccc; +} + +.alert-red-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #f1e0e3; + --bs-alert-border-color: #f1e0e3; +} +.alert-red-soft.alert-solid .alert-link { + color: black; +} + +.alert-orange-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #f3e7e3; + --bs-alert-border-color: #f3e7e3; +} +.alert-orange-soft.alert-solid .alert-link { + color: black; +} + +.alert-yellow-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #f2eee3; + --bs-alert-border-color: #f2eee3; +} +.alert-yellow-soft.alert-solid .alert-link { + color: black; +} + +.alert-green-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #daefed; + --bs-alert-border-color: #daefed; +} +.alert-green-soft.alert-solid .alert-link { + color: black; +} + +.alert-teal-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #daf0f2; + --bs-alert-border-color: #daf0f2; +} +.alert-teal-soft.alert-solid .alert-link { + color: black; +} + +.alert-cyan-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #daf2f8; + --bs-alert-border-color: #daf2f8; +} +.alert-cyan-soft.alert-solid .alert-link { + color: black; +} + +.alert-blue-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #dae7fb; + --bs-alert-border-color: #dae7fb; +} +.alert-blue-soft.alert-solid .alert-link { + color: black; +} + +.alert-indigo-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #e3ddfa; + --bs-alert-border-color: #e3ddfa; +} +.alert-indigo-soft.alert-solid .alert-link { + color: black; +} + +.alert-purple-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #e4ddf7; + --bs-alert-border-color: #e4ddf7; +} +.alert-purple-soft.alert-solid .alert-link { + color: black; +} + +.alert-pink-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #f1ddec; + --bs-alert-border-color: #f1ddec; +} +.alert-pink-soft.alert-solid .alert-link { + color: black; +} + +.alert-primary-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #dae7fb; + --bs-alert-border-color: #dae7fb; +} +.alert-primary-soft.alert-solid .alert-link { + color: black; +} + +.alert-secondary-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #e4ddf7; + --bs-alert-border-color: #e4ddf7; +} +.alert-secondary-soft.alert-solid .alert-link { + color: black; +} + +.alert-success-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #daefed; + --bs-alert-border-color: #daefed; +} +.alert-success-soft.alert-solid .alert-link { + color: black; +} + +.alert-info-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #daf2f8; + --bs-alert-border-color: #daf2f8; +} +.alert-info-soft.alert-solid .alert-link { + color: black; +} + +.alert-warning-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #f2eee3; + --bs-alert-border-color: #f2eee3; +} +.alert-warning-soft.alert-solid .alert-link { + color: black; +} + +.alert-danger-soft.alert-solid { + --bs-alert-color: #000; + --bs-alert-bg: #f1e0e3; + --bs-alert-border-color: #f1e0e3; +} +.alert-danger-soft.alert-solid .alert-link { + color: black; +} + +.avatar { + display: inline-flex; + height: 2rem; + width: 2rem; + border-radius: 50%; + position: relative; + align-items: center; + justify-content: center; +} +.avatar .avatar-img { + border-radius: 100%; + -o-object-fit: cover; + object-fit: cover; + height: 2rem; + width: auto; +} + +.avatar-xs { + height: 1.25rem; + width: 1.25rem; +} +.avatar-xs .avatar-img { + height: 1rem; +} + +.avatar-sm { + height: 1.75rem; + width: 1.75rem; +} +.avatar-sm .avatar-img { + height: 1.5rem; +} + +.avatar-lg { + height: 2.5rem; + width: 2.5rem; +} +.avatar-lg .avatar-img { + height: 2.5rem; +} + +.avatar-xl { + height: 3rem; + width: 3rem; +} +.avatar-xl .avatar-img { + height: 3rem; +} + +.avatar-xxl { + height: 3.75rem; + width: 3.75rem; +} +.avatar-xxl .avatar-img { + height: 3.75rem; +} + +.avatar-busy::before, +.avatar-idle::before, +.avatar-offline::before, +.avatar-online::before { + content: ""; + position: absolute; + bottom: 5%; + right: 5%; + width: 20%; + height: 20%; + border-radius: 50%; + background-color: #d4dae3; + border: 0.0625rem solid #fff; +} + +.avatar-busy::before { + background-color: #e81500; +} + +.avatar-idle::before { + background-color: #f4a100; +} + +.avatar-offline::before { + background-color: #d4dae3; +} + +.avatar-online::before { + background-color: #00ac69; +} + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; +} + +.btn-icon { + padding: 0; + justify-content: center; + overflow: hidden; + border-radius: 100%; + flex-shrink: 0; + height: calc((0.875rem * 1) + (0.875rem * 2) + (2px)) !important; + width: calc((0.875rem * 1) + (0.875rem * 2) + (2px)) !important; +} +.btn-icon .feather { + margin-top: 0 !important; +} +.btn-icon.btn-xl { + height: calc((1.125rem * 1) + (1.25rem * 2) + (2px)) !important; + width: calc((1.125rem * 1) + (1.25rem * 2) + (2px)) !important; + border-radius: 100%; +} +.btn-icon.btn-lg, .btn-group-lg > .btn-icon.btn { + height: calc((1rem * 1) + (1.125rem * 2) + (2px)) !important; + width: calc((1rem * 1) + (1.125rem * 2) + (2px)) !important; +} +.btn-icon.btn-sm, .btn-group-sm > .btn-icon.btn { + height: calc((0.75rem * 1) + (0.5rem * 2) + (2px)) !important; + width: calc((0.75rem * 1) + (0.5rem * 2) + (2px)) !important; +} +.btn-icon.btn-xs { + height: calc((0.7rem * 1) + (0.25rem * 2) + (2px)) !important; + width: calc((0.7rem * 1) + (0.25rem * 2) + (2px)) !important; + border-radius: 100%; +} +.btn-icon.btn-link { + text-decoration: none; +} + +.btn .feather { + margin-top: -1px; + height: 0.875rem; + width: 0.875rem; +} + +.btn-lg .feather, .btn-group-lg > .btn .feather { + height: 1rem; + width: 1rem; +} + +.btn-sm .feather, .btn-group-sm > .btn .feather { + height: 0.75rem; + width: 0.75rem; +} + +.btn-xs .feather { + height: 0.7rem; + width: 0.7rem; +} + +.btn-xl .feather { + height: 1.125rem; + width: 1.125rem; +} + +.btn-xs { + padding: 0.25rem 0.5rem; + font-size: 0.7rem; + border-radius: 0.35rem; + line-height: 1; +} + +.btn-xl { + padding: 1.25rem 1.5rem; + font-size: 1.125rem; + border-radius: 0.5rem; +} + +.btn-facebook { + --bs-btn-color: #fff; + --bs-btn-bg: #3b5998; + --bs-btn-border-color: #3b5998; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #324c81; + --bs-btn-hover-border-color: #2f477a; + --bs-btn-focus-shadow-rgb: 88, 114, 167; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #2f477a; + --bs-btn-active-border-color: #2c4372; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #3b5998; + --bs-btn-disabled-border-color: #3b5998; +} + +.btn-github { + --bs-btn-color: #fff; + --bs-btn-bg: #333333; + --bs-btn-border-color: #333333; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #2b2b2b; + --bs-btn-hover-border-color: #292929; + --bs-btn-focus-shadow-rgb: 82, 82, 82; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #292929; + --bs-btn-active-border-color: #262626; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #333333; + --bs-btn-disabled-border-color: #333333; +} + +.btn-google { + --bs-btn-color: #fff; + --bs-btn-bg: #ea4335; + --bs-btn-border-color: #ea4335; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #c7392d; + --bs-btn-hover-border-color: #bb362a; + --bs-btn-focus-shadow-rgb: 237, 95, 83; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #bb362a; + --bs-btn-active-border-color: #b03228; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #ea4335; + --bs-btn-disabled-border-color: #ea4335; +} + +.btn-twitter { + --bs-btn-color: #fff; + --bs-btn-bg: #1da1f2; + --bs-btn-border-color: #1da1f2; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #1989ce; + --bs-btn-hover-border-color: #1781c2; + --bs-btn-focus-shadow-rgb: 63, 175, 244; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #1781c2; + --bs-btn-active-border-color: #1679b6; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #1da1f2; + --bs-btn-disabled-border-color: #1da1f2; +} + +.btn-transparent-dark { + --bs-btn-color: rgba(33, 40, 50, 0.5); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: rgba(33, 40, 50, 0.5); + --bs-btn-hover-bg: rgba(33, 40, 50, 0.1); + --bs-btn-hover-border-color: transparent; + --bs-btn-focus-shadow-rgb: 11, 14, 17; + --bs-btn-active-color: rgba(33, 40, 50, 0.5); + --bs-btn-active-bg: rgba(33, 40, 50, 0.2); + --bs-btn-active-border-color: transparent; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: rgba(33, 40, 50, 0.35); + --bs-btn-disabled-bg: rgba(33, 40, 50, 0.1); + --bs-btn-disabled-border-color: transparent; + color: rgba(33, 40, 50, 0.5) !important; +} +.btn-transparent-dark:focus { + box-shadow: 0 0 0 0.25rem rgba(33, 40, 50, 0.25) !important; +} + +.btn-transparent-light { + --bs-btn-color: rgba(255, 255, 255, 0.5); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: rgba(255, 255, 255, 0.5); + --bs-btn-hover-bg: rgba(255, 255, 255, 0.1); + --bs-btn-hover-border-color: transparent; + --bs-btn-focus-shadow-rgb: 88, 88, 88; + --bs-btn-active-color: rgba(255, 255, 255, 0.5); + --bs-btn-active-bg: rgba(255, 255, 255, 0.2); + --bs-btn-active-border-color: transparent; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: rgba(255, 255, 255, 0.35); + --bs-btn-disabled-bg: rgba(255, 255, 255, 0.1); + --bs-btn-disabled-border-color: transparent; + color: rgba(255, 255, 255, 0.5) !important; +} +.btn-transparent-light:focus { + box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.25) !important; +} + +.btn-white-10 { + --bs-btn-color: rgba(255, 255, 255, 0.5); + --bs-btn-bg: rgba(255, 255, 255, 0.1); + --bs-btn-border-color: transparent; + --bs-btn-hover-color: rgba(255, 255, 255, 0.5); + --bs-btn-hover-bg: rgba(255, 255, 255, 0.15); + --bs-btn-hover-border-color: transparent; + --bs-btn-focus-shadow-rgb: 88, 88, 88; + --bs-btn-active-color: rgba(255, 255, 255, 0.5); + --bs-btn-active-bg: rgba(255, 255, 255, 0.2); + --bs-btn-active-border-color: transparent; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: rgba(255, 255, 255, 0.35); + --bs-btn-disabled-bg: rgba(255, 255, 255, 0.1); + --bs-btn-disabled-border-color: transparent; + color: rgba(255, 255, 255, 0.5) !important; +} +.btn-white-10:focus { + box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.25) !important; +} + +.card { + box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); +} +.card .card-header { + font-weight: 500; +} +.card:not([class*=bg-]) .card-header { + color: #0061f2; +} + +.card.bg-dark .card-header, +.card.bg-dark .card-footer { + border-color: rgba(255, 255, 255, 0.15); +} + +.card .card-header .card-header-tabs .nav-link.active { + background-color: #fff; + border-bottom-color: #fff; +} + +.card-header-actions .card-header { + height: 3.5625rem; + display: flex; + align-items: center; + justify-content: space-between; + padding-top: 0.5625rem; + padding-bottom: 0.5625rem; +} +.card-header-actions .card-header .dropdown-menu { + margin-top: 0; + top: 0.5625rem !important; +} + +.card-collapsable .card-header[data-bs-toggle=collapse], +.card-collapsable .card-header[data-toggle=collapse] { + display: flex; + text-decoration: none; + position: relative; + align-items: center; + justify-content: space-between; +} +.card-collapsable .card-header[data-bs-toggle=collapse] .card-collapsable-arrow, +.card-collapsable .card-header[data-toggle=collapse] .card-collapsable-arrow { + height: 0.9rem; + width: 0.9rem; + display: inline-flex; + font-size: 0.9rem; + transition: transform 0.1s ease-in-out; +} +.card-collapsable .card-header[data-bs-toggle=collapse] .card-collapsable-arrow svg, +.card-collapsable .card-header[data-bs-toggle=collapse] .card-collapsable-arrow i, +.card-collapsable .card-header[data-bs-toggle=collapse] .card-collapsable-arrow .feather, +.card-collapsable .card-header[data-toggle=collapse] .card-collapsable-arrow svg, +.card-collapsable .card-header[data-toggle=collapse] .card-collapsable-arrow i, +.card-collapsable .card-header[data-toggle=collapse] .card-collapsable-arrow .feather { + height: 0.9rem; + width: 0.9rem; +} +.card-collapsable .card-header[data-bs-toggle=collapse].collapsed, +.card-collapsable .card-header[data-toggle=collapse].collapsed { + border-radius: 0.35rem; +} +.card-collapsable .card-header[data-bs-toggle=collapse].collapsed .card-collapsable-arrow, +.card-collapsable .card-header[data-toggle=collapse].collapsed .card-collapsable-arrow { + transform: rotate(-90deg); +} + +.card-icon { + overflow: hidden; +} +.card-icon .card-icon-aside { + display: flex; + align-items: center; + justify-content: center; + font-size: 3rem; + padding: 2rem; +} +.card-icon .card-icon-aside i, +.card-icon .card-icon-aside svg, +.card-icon .card-icon-aside .feather { + height: 3rem; + width: 3rem; +} + +.card-link { + text-decoration: none !important; + color: inherit !important; +} +.card-link:hover { + color: inherit !important; +} + +.card-progress .progress { + height: 0.5rem; + background-color: rgba(33, 40, 50, 0.03); +} + +.card-scrollable .card-body { + max-height: 15rem; + overflow-y: auto; +} + +.card-waves .card-body, +.card-angles .card-body { + background-size: 100% auto; + background-repeat: no-repeat; + background-position: center bottom; +} + +.card-waves .card-body { + background-image: url("../assets/img/backgrounds/bg-waves.svg"); +} + +.card-angles .card-body { + background-image: url("../assets/img/backgrounds/bg-angles.svg"); +} + +.card-flag { + position: absolute; + font-size: 0.7rem; + padding: 0.3rem 0.5rem; + line-height: 1; +} + +.card-flag-dark { + background-color: rgba(33, 40, 50, 0.7); + color: #fff; +} + +.card-flag-light { + background-color: rgba(255, 255, 255, 0.7); + color: #69707a; +} + +.card-flag-lg { + font-size: 0.9rem; + padding: 0.5rem 0.65rem; +} + +.card-flag-top-right { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + top: 0.5rem; + right: 0; +} + +.card-flag-top-left { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + top: 0.5rem; + left: 0; +} + +.card-flag-bottom-right { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + bottom: 0.5rem; + right: 0; +} + +.card-flag-bottom-left { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + bottom: 0.5rem; + left: 0; +} + +.dropdown-menu { + font-size: 0.9rem; + border: none; + box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); +} +.dropdown-menu .dropdown-header { + font-size: 0.75rem; + font-weight: 700; + display: flex; + align-items: center; +} +.dropdown-menu .dropdown-item { + display: flex; + align-items: center; +} +.dropdown-menu .dropdown-item .dropdown-item-icon { + margin-right: 0.5rem; + line-height: 1; +} +.dropdown-menu .dropdown-item .dropdown-item-icon svg { + height: 0.9em; + width: 0.9em; +} +.dropdown-menu .dropdown-item.active .dropdown-item-icon, .dropdown-menu .dropdown-item:active .dropdown-item-icon { + color: #fff; +} + +.dropdown .dropdown-toggle { + display: inline-flex; + align-items: center; +} +.dropdown .dropdown-toggle .dropdown-arrow { + margin-left: 0.4rem; + margin-right: 0; + transition: transform 0.1s ease-in-out; + font-size: 0.6em; +} +.dropdown .dropdown-toggle.show .dropdown-arrow { + transform: rotate(90deg); +} + +.feather { + height: 1rem; + width: 1rem; + vertical-align: top; +} + +.feather-sm { + height: 0.8rem; + width: 0.8rem; +} + +.icon-stack { + display: inline-flex; + justify-content: center; + align-items: center; + border-radius: 100%; + height: 2.5rem; + width: 2.5rem; + font-size: 1rem; + background-color: #f2f6fc; + flex-shrink: 0; +} +.icon-stack svg { + height: 1rem; + width: 1rem; +} + +.icon-stack-sm { + height: 2rem; + width: 2rem; +} + +.icon-stack-lg { + height: 4rem; + width: 4rem; + font-size: 1.5rem; +} +.icon-stack-lg svg { + height: 1.5rem; + width: 1.5rem; +} + +.icon-stack-xl { + height: 5rem; + width: 5rem; + font-size: 1.75rem; +} +.icon-stack-xl svg { + height: 1.75rem; + width: 1.75rem; +} + +.icon-list-social { + display: flex; +} +.icon-list-social .icon-list-social-link { + font-size: 1.25rem; + margin-right: 0.5rem; +} + +.badge-sm { + font-size: 0.75rem; +} + +.badge-md { + font-size: 1rem; +} + +.badge-lg { + font-size: 1.25rem; +} + +.timeline .timeline-item { + display: flex; + align-items: flex-start; +} +.timeline .timeline-item .timeline-item-marker { + display: inline-flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin-bottom: 2rem; +} +.timeline .timeline-item .timeline-item-marker .timeline-item-marker-text { + font-size: 0.875rem; + width: 6rem; + color: #a7aeb8; + text-align: center; + margin-bottom: 0.5rem; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.timeline .timeline-item .timeline-item-marker .timeline-item-marker-indicator { + display: inline-flex; + align-items: center; + justify-content: center; + height: 3rem; + width: 3rem; + background-color: #f2f6fc; + border-radius: 100%; +} +.timeline .timeline-item .timeline-item-content { + padding-top: 0; + padding-bottom: 2rem; + padding-left: 1rem; + width: 100%; +} +.timeline .timeline-item:last-child .timeline-item-content { + padding-bottom: 0 !important; +} + +@media (min-width: 576px) { + .timeline .timeline-item .timeline-item-marker { + flex-direction: row; + transform: translateX(1.625rem); + margin-bottom: 0; + } + .timeline .timeline-item .timeline-item-marker .timeline-item-marker-text { + margin-right: 0.5rem; + margin-bottom: 0; + } + .timeline .timeline-item .timeline-item-content { + padding-top: 0.75rem; + padding-bottom: 3rem; + padding-left: 3rem; + border-left: solid 0.25rem #f2f6fc; + } + .timeline .timeline-item:last-child .timeline-item-content { + border-left-color: transparent; + } +} +.timeline.timeline-sm .timeline-item .timeline-item-marker { + transform: translateX(0.875rem); +} +.timeline.timeline-sm .timeline-item .timeline-item-marker .timeline-item-marker-text { + width: 3rem; + font-size: 0.7rem; +} +.timeline.timeline-sm .timeline-item .timeline-item-marker .timeline-item-marker-indicator { + height: 1.5rem; + width: 1.5rem; + font-size: 0.875rem; +} +.timeline.timeline-sm .timeline-item .timeline-item-marker .timeline-item-marker-indicator .feather { + height: 0.75rem; + width: 0.75rem; +} +.timeline.timeline-sm .timeline-item .timeline-item-content { + font-size: 0.875rem; + padding-top: 0.15rem; + padding-bottom: 1rem; + padding-left: 1.5rem; +} + +.timeline.timeline-xs .timeline-item .timeline-item-marker { + transform: translateX(0.5625rem); +} +.timeline.timeline-xs .timeline-item .timeline-item-marker .timeline-item-marker-text { + width: 3rem; + font-size: 0.7rem; +} +.timeline.timeline-xs .timeline-item .timeline-item-marker .timeline-item-marker-indicator { + height: 0.875rem; + width: 0.875rem; + font-size: 0.875rem; + border: 0.125rem solid #fff; + margin-top: -0.125rem; +} +.timeline.timeline-xs .timeline-item .timeline-item-content { + font-size: 0.875rem; + padding-top: 0; + padding-bottom: 1rem; + padding-left: 1.5rem; +} + +.step { + display: flex; + flex-wrap: nowrap; + width: 100%; +} +.step .step-item { + flex: 1 1 0; + position: relative; + text-align: center; +} +.step .step-item:not(:first-child)::before { + background-color: #69707a; + content: ""; + height: 0.125rem; + left: -50%; + position: absolute; + top: 0.4375rem; + width: 100%; + z-index: 0; +} +.step .step-item .step-item-link { + color: #69707a; + position: relative; + display: inline-block; + padding-top: 1.25rem; + padding-left: 1rem; + padding-right: 1rem; + text-decoration: none; + z-index: 1; +} +.step .step-item .step-item-link::before { + background-color: #69707a; + border: 0.125rem solid #fff; + border-radius: 100%; + content: ""; + display: block; + height: 1rem; + width: 1rem; + left: 50%; + position: absolute; + top: 0; + transform: translateX(-50%); + z-index: 1; +} +.step .step-item .step-item-link.disabled { + pointer-events: none; + cursor: default; +} +.step .step-item.active a::before { + background: #fff; + border: 0.125rem solid #69707a; +} +.step .step-item.active ~ .step-item .step-item-link { + color: #d4dae3; +} +.step .step-item.active ~ .step-item .step-item-link::before { + background: #d4dae3; +} +.step .step-item.active ~ .step-item::before { + background: #d4dae3; +} + +.step-lg .step-item:not(:first-child)::before { + height: 0.25rem; + top: 0.625rem; +} +.step-lg .step-item .step-item-link { + padding-top: 2rem; +} +.step-lg .step-item .step-item-link::before { + border-width: 0.25rem; + height: 1.5rem; + width: 1.5rem; +} +.step-lg .step-item.active a::before { + border-width: 0.25rem; +} + +.step-primary .step-item:not(:first-child)::before { + background-color: #0061f2; +} +.step-primary .step-item .step-item-link { + color: #0061f2; +} +.step-primary .step-item .step-item-link::before { + background-color: #0061f2; +} +.step-primary .step-item.active a::before { + border-color: #0061f2; +} + +.step-secondary .step-item:not(:first-child)::before { + background-color: #6900c7; +} +.step-secondary .step-item .step-item-link { + color: #6900c7; +} +.step-secondary .step-item .step-item-link::before { + background-color: #6900c7; +} +.step-secondary .step-item.active a::before { + border-color: #6900c7; +} + +.step-success .step-item:not(:first-child)::before { + background-color: #00ac69; +} +.step-success .step-item .step-item-link { + color: #00ac69; +} +.step-success .step-item .step-item-link::before { + background-color: #00ac69; +} +.step-success .step-item.active a::before { + border-color: #00ac69; +} + +.step-info .step-item:not(:first-child)::before { + background-color: #00cfd5; +} +.step-info .step-item .step-item-link { + color: #00cfd5; +} +.step-info .step-item .step-item-link::before { + background-color: #00cfd5; +} +.step-info .step-item.active a::before { + border-color: #00cfd5; +} + +.step-warning .step-item:not(:first-child)::before { + background-color: #f4a100; +} +.step-warning .step-item .step-item-link { + color: #f4a100; +} +.step-warning .step-item .step-item-link::before { + background-color: #f4a100; +} +.step-warning .step-item.active a::before { + border-color: #f4a100; +} + +.step-danger .step-item:not(:first-child)::before { + background-color: #e81500; +} +.step-danger .step-item .step-item-link { + color: #e81500; +} +.step-danger .step-item .step-item-link::before { + background-color: #e81500; +} +.step-danger .step-item.active a::before { + border-color: #e81500; +} + +.step-light .step-item:not(:first-child)::before { + background-color: #f2f6fc; +} +.step-light .step-item .step-item-link { + color: #f2f6fc; +} +.step-light .step-item .step-item-link::before { + background-color: #f2f6fc; +} +.step-light .step-item.active a::before { + border-color: #f2f6fc; +} + +.step-dark .step-item:not(:first-child)::before { + background-color: #212832; +} +.step-dark .step-item .step-item-link { + color: #212832; +} +.step-dark .step-item .step-item-link::before { + background-color: #212832; +} +.step-dark .step-item.active a::before { + border-color: #212832; +} + +.step-black .step-item:not(:first-child)::before { + background-color: #000; +} +.step-black .step-item .step-item-link { + color: #000; +} +.step-black .step-item .step-item-link::before { + background-color: #000; +} +.step-black .step-item.active a::before { + border-color: #000; +} + +.step-white .step-item:not(:first-child)::before { + background-color: #fff; +} +.step-white .step-item .step-item-link { + color: #fff; +} +.step-white .step-item .step-item-link::before { + background-color: #fff; +} +.step-white .step-item.active a::before { + border-color: #fff; +} + +.step-red .step-item:not(:first-child)::before { + background-color: #e81500; +} +.step-red .step-item .step-item-link { + color: #e81500; +} +.step-red .step-item .step-item-link::before { + background-color: #e81500; +} +.step-red .step-item.active a::before { + border-color: #e81500; +} + +.step-orange .step-item:not(:first-child)::before { + background-color: #f76400; +} +.step-orange .step-item .step-item-link { + color: #f76400; +} +.step-orange .step-item .step-item-link::before { + background-color: #f76400; +} +.step-orange .step-item.active a::before { + border-color: #f76400; +} + +.step-yellow .step-item:not(:first-child)::before { + background-color: #f4a100; +} +.step-yellow .step-item .step-item-link { + color: #f4a100; +} +.step-yellow .step-item .step-item-link::before { + background-color: #f4a100; +} +.step-yellow .step-item.active a::before { + border-color: #f4a100; +} + +.step-green .step-item:not(:first-child)::before { + background-color: #00ac69; +} +.step-green .step-item .step-item-link { + color: #00ac69; +} +.step-green .step-item .step-item-link::before { + background-color: #00ac69; +} +.step-green .step-item.active a::before { + border-color: #00ac69; +} + +.step-teal .step-item:not(:first-child)::before { + background-color: #00ba94; +} +.step-teal .step-item .step-item-link { + color: #00ba94; +} +.step-teal .step-item .step-item-link::before { + background-color: #00ba94; +} +.step-teal .step-item.active a::before { + border-color: #00ba94; +} + +.step-cyan .step-item:not(:first-child)::before { + background-color: #00cfd5; +} +.step-cyan .step-item .step-item-link { + color: #00cfd5; +} +.step-cyan .step-item .step-item-link::before { + background-color: #00cfd5; +} +.step-cyan .step-item.active a::before { + border-color: #00cfd5; +} + +.step-blue .step-item:not(:first-child)::before { + background-color: #0061f2; +} +.step-blue .step-item .step-item-link { + color: #0061f2; +} +.step-blue .step-item .step-item-link::before { + background-color: #0061f2; +} +.step-blue .step-item.active a::before { + border-color: #0061f2; +} + +.step-indigo .step-item:not(:first-child)::before { + background-color: #5800e8; +} +.step-indigo .step-item .step-item-link { + color: #5800e8; +} +.step-indigo .step-item .step-item-link::before { + background-color: #5800e8; +} +.step-indigo .step-item.active a::before { + border-color: #5800e8; +} + +.step-purple .step-item:not(:first-child)::before { + background-color: #6900c7; +} +.step-purple .step-item .step-item-link { + color: #6900c7; +} +.step-purple .step-item .step-item-link::before { + background-color: #6900c7; +} +.step-purple .step-item.active a::before { + border-color: #6900c7; +} + +.step-pink .step-item:not(:first-child)::before { + background-color: #e30059; +} +.step-pink .step-item .step-item-link { + color: #e30059; +} +.step-pink .step-item .step-item-link::before { + background-color: #e30059; +} +.step-pink .step-item.active a::before { + border-color: #e30059; +} + +.step-red-soft .step-item:not(:first-child)::before { + background-color: #f1e0e3; +} +.step-red-soft .step-item .step-item-link { + color: #f1e0e3; +} +.step-red-soft .step-item .step-item-link::before { + background-color: #f1e0e3; +} +.step-red-soft .step-item.active a::before { + border-color: #f1e0e3; +} + +.step-orange-soft .step-item:not(:first-child)::before { + background-color: #f3e7e3; +} +.step-orange-soft .step-item .step-item-link { + color: #f3e7e3; +} +.step-orange-soft .step-item .step-item-link::before { + background-color: #f3e7e3; +} +.step-orange-soft .step-item.active a::before { + border-color: #f3e7e3; +} + +.step-yellow-soft .step-item:not(:first-child)::before { + background-color: #f2eee3; +} +.step-yellow-soft .step-item .step-item-link { + color: #f2eee3; +} +.step-yellow-soft .step-item .step-item-link::before { + background-color: #f2eee3; +} +.step-yellow-soft .step-item.active a::before { + border-color: #f2eee3; +} + +.step-green-soft .step-item:not(:first-child)::before { + background-color: #daefed; +} +.step-green-soft .step-item .step-item-link { + color: #daefed; +} +.step-green-soft .step-item .step-item-link::before { + background-color: #daefed; +} +.step-green-soft .step-item.active a::before { + border-color: #daefed; +} + +.step-teal-soft .step-item:not(:first-child)::before { + background-color: #daf0f2; +} +.step-teal-soft .step-item .step-item-link { + color: #daf0f2; +} +.step-teal-soft .step-item .step-item-link::before { + background-color: #daf0f2; +} +.step-teal-soft .step-item.active a::before { + border-color: #daf0f2; +} + +.step-cyan-soft .step-item:not(:first-child)::before { + background-color: #daf2f8; +} +.step-cyan-soft .step-item .step-item-link { + color: #daf2f8; +} +.step-cyan-soft .step-item .step-item-link::before { + background-color: #daf2f8; +} +.step-cyan-soft .step-item.active a::before { + border-color: #daf2f8; +} + +.step-blue-soft .step-item:not(:first-child)::before { + background-color: #dae7fb; +} +.step-blue-soft .step-item .step-item-link { + color: #dae7fb; +} +.step-blue-soft .step-item .step-item-link::before { + background-color: #dae7fb; +} +.step-blue-soft .step-item.active a::before { + border-color: #dae7fb; +} + +.step-indigo-soft .step-item:not(:first-child)::before { + background-color: #e3ddfa; +} +.step-indigo-soft .step-item .step-item-link { + color: #e3ddfa; +} +.step-indigo-soft .step-item .step-item-link::before { + background-color: #e3ddfa; +} +.step-indigo-soft .step-item.active a::before { + border-color: #e3ddfa; +} + +.step-purple-soft .step-item:not(:first-child)::before { + background-color: #e4ddf7; +} +.step-purple-soft .step-item .step-item-link { + color: #e4ddf7; +} +.step-purple-soft .step-item .step-item-link::before { + background-color: #e4ddf7; +} +.step-purple-soft .step-item.active a::before { + border-color: #e4ddf7; +} + +.step-pink-soft .step-item:not(:first-child)::before { + background-color: #f1ddec; +} +.step-pink-soft .step-item .step-item-link { + color: #f1ddec; +} +.step-pink-soft .step-item .step-item-link::before { + background-color: #f1ddec; +} +.step-pink-soft .step-item.active a::before { + border-color: #f1ddec; +} + +.step-primary-soft .step-item:not(:first-child)::before { + background-color: #dae7fb; +} +.step-primary-soft .step-item .step-item-link { + color: #dae7fb; +} +.step-primary-soft .step-item .step-item-link::before { + background-color: #dae7fb; +} +.step-primary-soft .step-item.active a::before { + border-color: #dae7fb; +} + +.step-secondary-soft .step-item:not(:first-child)::before { + background-color: #e4ddf7; +} +.step-secondary-soft .step-item .step-item-link { + color: #e4ddf7; +} +.step-secondary-soft .step-item .step-item-link::before { + background-color: #e4ddf7; +} +.step-secondary-soft .step-item.active a::before { + border-color: #e4ddf7; +} + +.step-success-soft .step-item:not(:first-child)::before { + background-color: #daefed; +} +.step-success-soft .step-item .step-item-link { + color: #daefed; +} +.step-success-soft .step-item .step-item-link::before { + background-color: #daefed; +} +.step-success-soft .step-item.active a::before { + border-color: #daefed; +} + +.step-info-soft .step-item:not(:first-child)::before { + background-color: #daf2f8; +} +.step-info-soft .step-item .step-item-link { + color: #daf2f8; +} +.step-info-soft .step-item .step-item-link::before { + background-color: #daf2f8; +} +.step-info-soft .step-item.active a::before { + border-color: #daf2f8; +} + +.step-warning-soft .step-item:not(:first-child)::before { + background-color: #f2eee3; +} +.step-warning-soft .step-item .step-item-link { + color: #f2eee3; +} +.step-warning-soft .step-item .step-item-link::before { + background-color: #f2eee3; +} +.step-warning-soft .step-item.active a::before { + border-color: #f2eee3; +} + +.step-danger-soft .step-item:not(:first-child)::before { + background-color: #f1e0e3; +} +.step-danger-soft .step-item .step-item-link { + color: #f1e0e3; +} +.step-danger-soft .step-item .step-item-link::before { + background-color: #f1e0e3; +} +.step-danger-soft .step-item.active a::before { + border-color: #f1e0e3; +} + +.form-check.form-check-solid .form-check-input { + background-color: #eef2f8; + border-color: #eef2f8; +} +.form-check.form-check-solid .form-check-input:checked { + background-color: #0061f2; +} + +.form-control-solid { + background-color: #eef2f8; + border-color: #eef2f8; +} +.form-control-solid:focus { + background-color: #eef2f8; +} + +.input-group-joined { + border-color: #c5ccd6; + border-width: 1px; + border-style: solid; + border-radius: 0.4375rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.input-group-joined:focus-within { + border-color: transparent; + box-shadow: 0 0 0 0.25rem rgba(0, 97, 242, 0.25); +} +.input-group-joined .form-control, .input-group-joined .datatable-input { + border: none; +} +.input-group-joined .form-control:focus, .input-group-joined .datatable-input:focus { + box-shadow: none; + outline: none; +} +.input-group-joined .input-group-text, +.input-group-joined .input-group-text { + border: none; + background-color: #fff; +} + +.input-group-joined-xl .form-control, .input-group-joined-xl .datatable-input { + height: 4rem; + font-size: 1.25rem; +} + +.input-group-joined.input-group-solid { + border: 0; + background-color: #eef2f8; +} +.input-group-joined.input-group-solid .form-control, .input-group-joined.input-group-solid .datatable-input, +.input-group-joined.input-group-solid .input-group-text { + background-color: transparent; +} + +#layoutSidenav { + display: flex; +} +#layoutSidenav #layoutSidenav_nav { + flex-basis: 15rem; + flex-shrink: 0; + transition: transform 0.15s ease-in-out; + z-index: 1038; + transform: translateX(-15rem); +} +#layoutSidenav #layoutSidenav_content { + position: relative; + display: flex; + flex-direction: column; + justify-content: space-between; + min-width: 0; + flex-grow: 1; + min-height: calc(100vh - 3.625rem); + margin-left: -15rem; +} + +.sidenav-toggled #layoutSidenav #layoutSidenav_nav { + transform: translateX(0); +} +.sidenav-toggled #layoutSidenav #layoutSidenav_content:before { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: #000; + z-index: 1037; + opacity: 0.5; + transition: opacity 0.3s ease-in-out; +} + +@media (min-width: 992px) { + #layoutSidenav #layoutSidenav_nav { + transform: translateX(0); + } + #layoutSidenav #layoutSidenav_content { + margin-left: 0; + transition: margin 0.15s ease-in-out; + } + .sidenav-toggled #layoutSidenav #layoutSidenav_nav { + transform: translateX(-15rem); + } + .sidenav-toggled #layoutSidenav #layoutSidenav_content { + margin-left: -15rem; + } + .sidenav-toggled #layoutSidenav #layoutSidenav_content:before { + display: none; + } +} +.nav-fixed .topnav { + z-index: 1039; +} +.nav-fixed #layoutSidenav #layoutSidenav_nav { + width: 15rem; + height: 100vh; + z-index: 1038; +} +.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav { + padding-top: 3.625rem; +} +.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu { + overflow-y: overlay; +} +.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu::-webkit-scrollbar { + width: 0.75rem; +} +.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu::-webkit-scrollbar-thumb { + border-radius: 10rem; + border-width: 0.2rem; + border-style: solid; + background-clip: padding-box; + background-color: rgba(33, 40, 50, 0.2); + border-color: transparent; +} +.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu::-webkit-scrollbar-button { + width: 0; + height: 0; + display: none; +} +.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu::-webkit-scrollbar-corner { + background-color: transparent; +} +.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu::-webkit-scrollbar-track { + background: inherit; +} +@media (pointer: fine) and (hover: hover) { + .nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu { + overflow-y: hidden; + } + .nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu:hover { + overflow-y: overlay; + } +} +@media (pointer: coarse) and (hover: none) { + .nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu { + overflow-y: overlay; + } +} +@-moz-document url-prefix() { + .nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav .sidenav-menu { + overflow-y: auto; + } +} +.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav.sidenav-dark .sidenav-menu::-webkit-scrollbar-thumb { + background-color: rgba(255, 255, 255, 0.25); + border-color: rgba(0, 0, 0, 0); +} +.nav-fixed #layoutSidenav #layoutSidenav_content { + padding-left: 15rem; + top: 3.625rem; +} + +.layout-rtl #layoutSidenav #layoutSidenav_nav { + transform: translateX(15rem); +} +.layout-rtl #layoutSidenav #layoutSidenav_content { + margin-left: 0; + margin-right: -15rem; +} +.layout-rtl.sidenav-toggled #layoutSidenav #layoutSidenav_nav { + transform: translateX(0); +} +@media (min-width: 992px) { + .layout-rtl #layoutSidenav #layoutSidenav_nav { + transform: translateX(0); + } + .layout-rtl #layoutSidenav #layoutSidenav_content { + margin-right: 0; + transition: margin 0.15s ease-in-out; + } + .layout-rtl.sidenav-toggled #layoutSidenav #layoutSidenav_nav { + transform: translateX(15rem); + } + .layout-rtl.sidenav-toggled #layoutSidenav #layoutSidenav_content { + margin-right: -15rem; + } +} + +.layout-rtl.nav-fixed #layoutSidenav #layoutSidenav_nav { + left: auto; +} +.layout-rtl.nav-fixed #layoutSidenav #layoutSidenav_content { + padding-left: 0; + padding-right: 15rem; +} + +.dropdown-notifications { + position: static; +} +.dropdown-notifications .dropdown-menu { + padding-top: 0; + padding-bottom: 0; + width: calc(100% - 1.5rem); + right: 0.75rem; + max-height: calc(21rem - 1px); + overflow-x: hidden; + overflow-y: overlay; +} +.dropdown-notifications .dropdown-menu::-webkit-scrollbar { + width: 0.75rem; +} +.dropdown-notifications .dropdown-menu::-webkit-scrollbar-thumb { + border-radius: 10rem; + border-width: 0.2rem; + border-style: solid; + background-clip: padding-box; + background-color: rgba(33, 40, 50, 0.2); + border-color: transparent; +} +.dropdown-notifications .dropdown-menu::-webkit-scrollbar-button { + width: 0; + height: 0; + display: none; +} +.dropdown-notifications .dropdown-menu::-webkit-scrollbar-corner { + background-color: transparent; +} +.dropdown-notifications .dropdown-menu::-webkit-scrollbar-track { + background: inherit; +} +@media (pointer: fine) and (hover: hover) { + .dropdown-notifications .dropdown-menu { + overflow-y: hidden; + } + .dropdown-notifications .dropdown-menu:hover { + overflow-y: overlay; + } +} +@media (pointer: coarse) and (hover: none) { + .dropdown-notifications .dropdown-menu { + overflow-y: overlay; + } +} +@-moz-document url-prefix() { + .dropdown-notifications .dropdown-menu { + overflow-y: auto; + } +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-header { + background-color: #0061f2; + color: #fff !important; + padding-top: 1rem; + padding-bottom: 1rem; + line-height: 1; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-header svg { + height: 0.7rem; + width: 0.7rem; + opacity: 0.7; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-item { + padding-top: 1rem; + padding-bottom: 1rem; + border-bottom: 1px solid #e0e5ec; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-item .dropdown-notifications-item-icon, +.dropdown-notifications .dropdown-menu .dropdown-notifications-item .dropdown-notifications-item-img { + height: 2.5rem; + width: 2.5rem; + border-radius: 100%; + margin-right: 1rem; + flex-shrink: 0; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-item .dropdown-notifications-item-icon { + background-color: #0061f2; + display: flex; + align-items: center; + justify-content: center; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-item .dropdown-notifications-item-icon svg { + text-align: center; + font-size: 0.85rem; + color: #fff; + height: 0.85rem; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-item .dropdown-notifications-item-content .dropdown-notifications-item-content-details { + color: #a7aeb8; + font-size: 0.7rem; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-item .dropdown-notifications-item-content .dropdown-notifications-item-content-text { + font-size: 0.9rem; + max-width: calc(100vw - 8.5rem); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-item .dropdown-notifications-item-content .dropdown-notifications-item-content-actions .btn-sm, .dropdown-notifications .dropdown-menu .dropdown-notifications-item .dropdown-notifications-item-content .dropdown-notifications-item-content-actions .btn-group-sm > .btn { + font-size: 0.7rem; + padding: 0.15rem 0.35rem; + cursor: pointer; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-footer { + justify-content: center; + font-size: 0.8rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #a7aeb8; + cursor: pointer; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-footer .dropdown-notifications-footer-icon { + height: 1em; + width: 1em; + margin-left: 0.25rem; +} +.dropdown-notifications .dropdown-menu .dropdown-notifications-footer:active { + color: #fff; +} +@media (min-width: 576px) { + .dropdown-notifications { + position: relative; + } + .dropdown-notifications .dropdown-menu { + width: auto; + min-width: 18.75rem; + right: 0; + } + .dropdown-notifications .dropdown-menu .dropdown-notifications-item .dropdown-notifications-item-content .dropdown-notifications-item-content-text { + max-width: 13rem; + } +} + +.dropdown-user .dropdown-menu { + min-width: 13rem; +} +.dropdown-user .dropdown-menu .dropdown-header { + text-transform: none; + letter-spacing: normal; +} +.dropdown-user .dropdown-menu .dropdown-header .dropdown-user-img { + height: 2.5rem; + width: 2.5rem; + margin-right: 1rem; + border-radius: 100%; +} +.dropdown-user .dropdown-menu .dropdown-header .dropdown-user-details { + font-weight: 400; +} +.dropdown-user .dropdown-menu .dropdown-header .dropdown-user-details .dropdown-user-details-name { + color: #212832; + font-weight: 500; + font-size: 0.9rem; + max-width: 10rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.dropdown-user .dropdown-menu .dropdown-header .dropdown-user-details .dropdown-user-details-email { + color: #69707a; + font-size: 0.75rem; + max-width: 10rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.dropdown-user .dropdown-menu .dropdown-item { + align-items: center; +} +.dropdown-user .dropdown-menu .dropdown-item .dropdown-item-icon { + color: #a7aeb8; +} +.dropdown-user .dropdown-menu .dropdown-item .dropdown-item-icon svg { + vertical-align: inherit; +} +.dropdown-user .dropdown-menu .dropdown-item:active .dropdown-item-icon { + color: #fff; +} + +.footer-admin { + height: 5rem; + display: flex; + align-items: center; +} +.footer-admin.footer-dark { + color: rgba(255, 255, 255, 0.6); +} +.footer-admin.footer-light { + color: #a7aeb8; +} + +.nav .nav-link .nav-link-icon, +.sidenav-menu .nav-link .nav-link-icon { + margin-right: 0.5rem; +} + +.nav-borders .nav-link { + color: #69707a; + border-bottom-width: 0.125rem; + border-bottom-style: solid; + border-bottom-color: transparent; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0; + padding-right: 0; + margin-left: 1rem; + margin-right: 1rem; +} +.nav-borders .nav-link.active { + color: #0061f2; + border-bottom-color: #0061f2; +} +.nav-borders .nav-link.disabled { + color: #c5ccd6; +} +.nav-borders.flex-column .nav-link { + padding-top: 0; + padding-bottom: 0; + padding-right: 1rem; + padding-left: 1rem; + margin-top: 0.5rem; + margin-bottom: 0.5rem; + margin-right: 0; + margin-left: 0; + border-bottom: none; + border-right-width: 0.125rem; + border-right-style: solid; + border-right-color: transparent; +} +.nav-borders.flex-column .nav-link.active { + border-right-color: #0061f2; +} + +.navbar .dropdown-menu { + top: calc(100% + 0.5rem + 0.5rem) !important; + font-size: 0.9rem; +} +.navbar .dropdown-menu .dropdown-header { + color: #a7aeb8; +} +.navbar .form-control, .navbar .datatable-input { + font-size: 0.9rem; +} + +.topnav { + padding-left: 0; + height: 3.625rem; + z-index: 1039; + font-size: 0.9rem; +} +.topnav .navbar-brand { + width: 15rem; + margin: 0; + font-size: 1rem; + font-weight: bold; +} +.topnav .navbar-brand img { + height: 0.8rem; +} +@media (min-width: 992px) { + .topnav .navbar-brand { + width: 12rem; + } +} +.topnav.navbar-dark #sidebarToggle { + color: rgba(255, 255, 255, 0.5); +} +.topnav.navbar-dark .navbar-brand { + color: #fff; +} +.topnav.navbar-light #sidebarToggle { + color: #212832; +} +.topnav.navbar-light .navbar-brand { + color: #363d47; +} +.topnav .dropdown { + position: static; +} +.topnav .dropdown .dropdown-menu { + width: calc(100% - 1.5rem); + right: 0.75rem; + left: 0.75rem; +} +@media (min-width: 576px) { + .topnav .dropdown { + position: relative; + } + .topnav .dropdown .dropdown-menu { + width: auto; + min-width: 15rem; + right: 0; + left: auto; + } +} + +:target:before { + content: ""; + display: block; + height: 5.125rem; + margin: -5.125rem 0 0; +} + +.nav-sticky { + top: 5.125rem; + font-size: 0.9rem; +} +.nav-sticky .nav-link { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} +.nav-sticky .nav-link.active { + font-weight: 600; +} + +.sidenav { + display: flex; + flex-direction: column; + height: 100%; + flex-wrap: nowrap; + font-size: 0.9rem; +} +.sidenav .sidenav-menu { + flex-grow: 1; +} +.sidenav .sidenav-menu .nav { + flex-direction: column; + flex-wrap: nowrap; +} +.sidenav .sidenav-menu .nav .sidenav-menu-heading { + padding: 1.75rem 1rem 0.75rem; + font-size: 0.7rem; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 0.05em; +} +.sidenav .sidenav-menu .nav .nav-link { + display: flex; + align-items: center; + line-height: normal; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + position: relative; +} +.sidenav .sidenav-menu .nav .nav-link .nav-link-icon { + font-size: 0.9rem; + padding-right: 0.5rem; + display: inline-flex; +} +.sidenav .sidenav-menu .nav .nav-link .nav-link-icon .feather { + width: 1rem; + height: 1rem; +} +.sidenav .sidenav-menu .nav .nav-link.active { + font-weight: 600; +} +.sidenav .sidenav-menu .nav .nav-link.active .nav-icon { + color: #0061f2; +} +.sidenav .sidenav-menu .nav .nav-link .sidenav-collapse-arrow { + display: inline-block; + margin-left: auto; + transition: transform 0.15s ease; +} +.sidenav .sidenav-menu .nav .nav-link.collapsed .sidenav-collapse-arrow { + transform: rotate(-90deg); +} +.sidenav .sidenav-menu .nav .nav-link .badge { + padding: 0.125rem 0.25rem; +} +.sidenav .sidenav-menu .nav .sidenav-menu-nested { + flex-direction: column; + margin-left: 1.4375rem; + border-left-style: solid; + border-left-width: thin; + padding-left: 0.5625rem; +} +.sidenav .sidenav-footer { + display: flex; + flex-shrink: 0; + align-items: center; + padding-left: 0.75rem; + padding-right: 0.75rem; + height: 5rem; +} +.sidenav .sidenav-footer .sidenav-footer-content { + font-size: 0.9rem; +} +.sidenav .sidenav-footer .sidenav-footer-content .sidenav-footer-subtitle { + font-size: 0.75rem; +} +.sidenav .sidenav-footer .sidenav-footer-content .sidenav-footer-title { + font-weight: 500; +} + +.sidenav-dark { + background-color: #272f3b; + color: rgba(255, 255, 255, 0.5); +} +.sidenav-dark .sidenav-menu .sidenav-menu-heading { + color: rgba(255, 255, 255, 0.25); +} +.sidenav-dark .sidenav-menu .nav-link { + color: rgba(255, 255, 255, 0.5); +} +.sidenav-dark .sidenav-menu .nav-link .nav-link-icon { + color: rgba(255, 255, 255, 0.25); +} +.sidenav-dark .sidenav-menu .nav-link .sidenav-collapse-arrow { + color: rgba(255, 255, 255, 0.25); +} +.sidenav-dark .sidenav-menu .nav-link:hover { + color: #fff; +} +.sidenav-dark .sidenav-menu .nav-link.active { + color: #fff; +} +.sidenav-dark .sidenav-menu .nav-link.active .nav-link-icon { + color: #fff; +} +.sidenav-dark .sidenav-menu-nested { + border-left-color: rgba(255, 255, 255, 0.15); +} +.sidenav-dark .sidenav-footer { + background-color: rgba(0, 0, 0, 0.25); +} + +.sidenav-light { + background-color: #fff; + color: #212832; +} +.sidenav-light .sidenav-menu .sidenav-menu-heading { + color: #a7aeb8; +} +.sidenav-light .sidenav-menu .nav-link { + color: #212832; +} +.sidenav-light .sidenav-menu .nav-link .nav-link-icon { + color: #a7aeb8; +} +.sidenav-light .sidenav-menu .nav-link .sidenav-collapse-arrow { + color: #a7aeb8; +} +.sidenav-light .sidenav-menu .nav-link:hover { + color: #0061f2; +} +.sidenav-light .sidenav-menu .nav-link.active { + color: #0061f2; +} +.sidenav-light .sidenav-menu .nav-link.active .nav-link-icon { + color: #0061f2; +} +.sidenav-light .sidenav-menu-nested { + border-left-color: #d4dae3; +} +.sidenav-light .sidenav-footer { + background-color: rgba(33, 40, 50, 0.05); +} +.sidenav-light .sidenav-footer .sidenav-footer-subtitle { + color: #69707a; +} + +.page-header .page-header-content { + padding-top: 3rem; + padding-bottom: 3rem; +} +.page-header .page-header-content .page-header-title { + line-height: normal; + font-size: 2.25rem; + font-weight: 500; + display: flex; + align-items: center; + margin-bottom: 0; +} +.page-header .page-header-content .page-header-title .page-header-icon { + margin-right: 0.5rem; + display: inline-flex; +} +.page-header .page-header-content .page-header-title .page-header-icon .feather { + height: 1.75rem; + width: 1.75rem; +} +.page-header .page-header-content .page-header-subtitle { + font-size: 1.15rem; + margin-top: 0.25rem; +} +.page-header .page-header-search .input-group-joined { + border-color: transparent; +} +.page-header .page-header-search .input-group-joined .form-control, .page-header .page-header-search .input-group-joined .datatable-input { + height: 4rem; + font-size: 1.25rem; +} +.page-header .page-header-search .input-group-joined:focus-within { + box-shadow: 0 0 0 0.25rem rgba(0, 97, 242, 0.25); + border-color: transparent; +} + +.page-header-compact .page-header-content { + padding: 0; +} +.page-header-compact .page-header-content .page-header-title { + font-size: 1rem; +} +.page-header-compact .page-header-content .page-header-title .page-header-icon .feather { + height: 1rem; + width: 1rem; +} + +.page-header.page-header-dark { + color: rgba(255, 255, 255, 0.5); +} +.page-header.page-header-dark .page-header-title { + color: #fff; +} +.page-header.page-header-dark .page-header-title .page-header-icon { + color: rgba(255, 255, 255, 0.5); +} +.page-header.page-header-dark .page-header-subtitle { + color: rgba(255, 255, 255, 0.5); +} +.page-header.page-header-dark .breadcrumb { + background-color: rgba(0, 0, 0, 0.15); + box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); +} +.page-header.page-header-dark .breadcrumb .breadcrumb-item, +.page-header.page-header-dark .breadcrumb .breadcrumb-item + .breadcrumb-item::before { + color: rgba(255, 255, 255, 0.35); +} +.page-header.page-header-dark .breadcrumb .breadcrumb-item a { + color: rgba(255, 255, 255, 0.6); +} +.page-header.page-header-dark .page-header-search .input-group-joined:focus-within { + box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.5); + border-color: transparent; +} + +.page-header.page-header-light { + color: rgba(33, 40, 50, 0.5); +} +.page-header.page-header-light .page-header-title { + color: #212832; +} +.page-header.page-header-light .page-header-title .page-header-icon { + color: rgba(33, 40, 50, 0.5); +} +.page-header.page-header-light .page-header-subtitle { + color: rgba(33, 40, 50, 0.5); +} +.page-header.page-header-light .breadcrumb { + background-color: rgba(0, 0, 0, 0.05); +} +.page-header.page-header-light .breadcrumb .breadcrumb-item, +.page-header.page-header-light .breadcrumb .breadcrumb-item + .breadcrumb-item::before { + color: #69707a; +} +.page-header.page-header-light .breadcrumb .breadcrumb-item a { + color: #0061f2; +} + +.img-account-profile { + height: 10rem; +} + +.cc-color-visa { + color: #1a1f71; +} + +.cc-color-mastercard { + color: #cc0000; +} + +.cc-color-amex { + color: #002663; +} + +.table-billing-history { + font-size: 0.85rem; +} +.table-billing-history thead th { + border-top: none; +} +.table-billing-history th, +.table-billing-history td { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + padding-left: 1.375rem; + padding-right: 1.375rem; +} + +.icons-org-create { + display: inline-flex; + align-items: center; + position: relative; +} +.icons-org-create .icon-users { + height: 4rem; + width: 4rem; +} +.icons-org-create .icon-users circle, +.icons-org-create .icon-users path:first-of-type { + color: #0061f2; +} +.icons-org-create .icon-users path { + color: rgba(0, 97, 242, 0.35); +} +.icons-org-create .icon-plus { + color: #0061f2; + position: absolute; + font-size: 1.5rem; + top: -0.5rem; + right: -0.75rem; +} + +.icons-org-join { + display: inline-flex; + position: relative; +} +.icons-org-join .icon-user { + height: 4rem; + width: 4rem; + color: #6900c7; +} +.icons-org-join .icon-arrow { + font-size: 2rem; + margin: 1rem 0.5rem 1rem 0; + color: #6900c7; +} +.icons-org-join .icon-users { + margin: 0.5rem 0; + height: 3rem; + width: 3rem; +} +.icons-org-join .icon-users circle, +.icons-org-join .icon-users path:first-of-type { + color: rgba(105, 0, 199, 0.5); +} +.icons-org-join .icon-users path { + color: rgba(105, 0, 199, 0.25); +} + +.org-or-divider { + display: flex; + position: relative; + width: 100%; + justify-content: center; + border-bottom: 1px solid #e0e5ec; +} +.org-or-divider .org-or { + height: 2rem; + width: 2rem; + position: absolute; + top: -1rem; + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto; + background-color: #fff; + border-radius: 100%; + border: 1px solid #e0e5ec; + font-size: 80%; + color: #6900c7; +} + +.invoice .invoice-brand-img { + height: 5rem; + width: 5rem; +} +.invoice .table tbody tr td, .invoice .datatable-table tbody tr td { + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} + +@media (min-width: 992px) { + .pricing-detailed .pricing-detailed-behind { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +} + +.pricing-columns .pricing-columns-price { + font-size: 2rem; + color: #212832; +} +.pricing-columns .pricing-columns-price span { + font-weight: normal; + font-size: 1rem; + color: #69707a; +} +.pricing-columns .list-group-flush .list-group-item { + display: flex; + align-items: center; +} + +.nav-wizard .nav-link { + display: flex; + align-items: center; + padding: 2rem; +} +.nav-wizard .nav-link .wizard-step-icon { + display: inline-flex; + align-items: center; + justify-content: center; + height: 2.5rem; + width: 2.5rem; + flex-shrink: 0; + margin-right: 1rem; + border-radius: 0.35rem; + background-color: #0061f2; + color: white; +} +.nav-wizard .nav-link .wizard-step-icon i, +.nav-wizard .nav-link .wizard-step-icon svg, +.nav-wizard .nav-link .wizard-step-icon .feather { + color: white; +} +.nav-wizard .nav-link .wizard-step-text { + line-height: 1; + text-align: left; +} +.nav-wizard .nav-link .wizard-step-text .wizard-step-text-name { + font-size: 1rem; + margin-bottom: 0.25rem; + color: #0061f2; +} +.nav-wizard .nav-link .wizard-step-text .wizard-step-text-details { + font-weight: 400; + font-size: 0.875rem; + color: #69707a; +} +.nav-wizard .nav-link.active .wizard-step-icon { + background-color: #fff; + color: #0061f2; +} +.nav-wizard .nav-link.active .wizard-step-icon i, +.nav-wizard .nav-link.active .wizard-step-icon svg, +.nav-wizard .nav-link.active .wizard-step-icon .feather { + color: #0061f2; +} +.nav-wizard .nav-link.active .wizard-step-text .wizard-step-text-name { + color: #fff; +} +.nav-wizard .nav-link.active .wizard-step-text .wizard-step-text-details { + color: rgba(255, 255, 255, 0.5); +} + +:root { + --litepicker-month-header-color: #4a515b; + --litepicker-button-prev-month-color: #69707a; + --litepicker-button-next-month-color: #69707a; + --litepicker-button-prev-month-color-hover: #212832; + --litepicker-button-next-month-color-hover: #212832; + --litepicker-month-weekday-color: #69707a; + --litepicker-month-week-number-color: #69707a; + --litepicker-day-width: 34px; + --litepicker-day-color: #363d47; + --litepicker-day-color-hover: #0061f2; + --litepicker-is-today-color: #69707a; + --litepicker-is-in-range-color: rgba(0, 97, 242, 0.15); + --litepicker-is-start-color: #fff; + --litepicker-is-start-color-bg: #0061f2; + --litepicker-is-end-color: #fff; + --litepicker-is-end-color-bg: #0061f2; + --litepicker-button-apply-color-bg: #0061f2; + --litepicker-button-reset-color-hover: #0061f2; + --litepicker-highlighted-day-color: #363d47; + --litepicker-highlighted-day-color-bg: rgba(0, 97, 242, 0.15); +} + +.show-week-numbers { + --litepicker-month-width: calc(var(--litepicker-day-width) * 8); +} + +.litepicker { + font-family: "Metropolis", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important; + font-size: 0.875rem !important; +} +.litepicker .container__months { + box-shadow: none !important; + border-radius: 0.25rem !important; +} +@media (max-width: 709px) { + .litepicker .container__months.columns-2 { + width: calc(var(--litepicker-month-width) + 10px) !important; + } +} +.litepicker .container__months .month-item-header { + font-weight: normal !important; + padding-top: 0.5rem !important; + padding-bottom: 0.75rem !important; + color: var(--litepicker-month-header-color) !important; +} +.litepicker .container__months .month-item-header div > .month-item-name { + margin-right: 0.25rem !important; + font-weight: 500 !important; +} +.litepicker .container__months .month-item-header div > .month-item-year { + font-weight: 500 !important; +} +.litepicker .container__months .month-item-header .button-previous-month, +.litepicker .container__months .month-item-header .button-next-month { + transition: none !important; + cursor: pointer !important; +} +.litepicker .container__months .month-item-header .button-previous-month > svg, +.litepicker .container__months .month-item-header .button-previous-month > img, +.litepicker .container__months .month-item-header .button-next-month > svg, +.litepicker .container__months .month-item-header .button-next-month > img { + transform: scale(0.75); +} +.litepicker .container__months .month-item-header .button-previous-month { + color: var(--litepicker-button-prev-month-color) !important; +} +.litepicker .container__months .month-item-header .button-previous-month > svg, +.litepicker .container__months .month-item-header .button-previous-month > img { + fill: var(--litepicker-button-prev-month-color) !important; +} +.litepicker .container__months .month-item-header .button-previous-month:hover { + color: var(--litepicker-button-prev-month-color-hover) !important; +} +.litepicker .container__months .month-item-header .button-previous-month:hover > svg { + fill: var(--litepicker-button-prev-month-color-hover) !important; +} +.litepicker .container__months .month-item-header .button-next-month { + color: var(--litepicker-button-next-month-color) !important; +} +.litepicker .container__months .month-item-header .button-next-month > svg, +.litepicker .container__months .month-item-header .button-next-month > img { + fill: var(--litepicker-button-next-month-color) !important; +} +.litepicker .container__months .month-item-header .button-next-month:hover { + color: var(--litepicker-button-next-month-color-hover) !important; +} +.litepicker .container__months .month-item-header .button-next-month:hover > svg { + fill: var(--litepicker-button-next-month-color-hover) !important; +} +.litepicker .container__months .month-item-weekdays-row { + color: var(--litepicker-month-weekday-color) !important; +} +.litepicker .container__days > div, +.litepicker .container__days > a { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 !important; + margin: 0; + width: var(--litepicker-day-width) !important; + height: var(--litepicker-day-width) !important; +} +.litepicker .container__days .day-item { + color: var(--litepicker-day-color) !important; + border-radius: 100% !important; + transition: none !important; + cursor: pointer !important; +} +.litepicker .container__days .day-item:hover { + color: var(--litepicker-day-color-hover) !important; + box-shadow: inset 0 0 0 1px var(--litepicker-day-color-hover) !important; +} +.litepicker .container__days .day-item.is-today { + box-shadow: inset 0 0 0 1px #69707a; + color: var(--litepicker-is-today-color) !important; +} +.litepicker .container__days .day-item.is-in-range { + position: relative; + background-color: transparent !important; +} +.litepicker .container__days .day-item.is-in-range:after { + content: ""; + display: block; + height: 100%; + width: 100%; + position: absolute; + background-color: var(--litepicker-is-in-range-color); +} +.litepicker .container__days .day-item.is-start-date { + color: var(--litepicker-is-start-color) !important; + background-color: var(--litepicker-is-start-color-bg) !important; + position: relative; +} +.litepicker .container__days .day-item.is-start-date:after { + content: ""; + display: block; + height: 100%; + width: 50%; + position: absolute; + left: auto; + right: 0; + background-color: var(--litepicker-is-in-range-color); +} +.litepicker .container__days .day-item.is-start-date.is-flipped:after { + right: auto; + left: 0; +} +.litepicker .container__days .day-item.is-end-date { + color: var(--litepicker-is-end-color) !important; + background-color: var(--litepicker-is-end-color-bg) !important; + position: relative; +} +.litepicker .container__days .day-item.is-end-date:after { + content: ""; + display: block; + height: 100%; + width: 50%; + position: absolute; + left: 0; + right: auto; + background-color: var(--litepicker-is-in-range-color); +} +.litepicker .container__days .day-item.is-end-date.is-flipped:after { + right: 0; + left: auto; +} +.litepicker .container__days .day-item.is-start-date.is-end-date:after { + display: none; +} +.litepicker .container__days .day-item.is-highlighted { + color: var(--litepicker-highlighted-day-color) !important; + background-color: var(--litepicker-highlighted-day-color-bg) !important; +} +.litepicker[data-plugins=ranges] .container__main { + margin-top: 0.25rem; + box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); + overflow: hidden; + border-radius: 0.35rem; +} +.litepicker[data-plugins=ranges] .container__main .container__predefined-ranges { + box-shadow: none !important; + border-radius: 0.35rem !important; + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; + padding-top: 0.5rem; + border-right: 1px solid #e0e5ec; +} +.litepicker[data-plugins=ranges] .container__main .container__predefined-ranges button { + cursor: pointer !important; +} +.litepicker[data-plugins=ranges] .container__main .container__months { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.chart-area { + position: relative; + height: 10rem; + width: 100%; +} +@media (min-width: 768px) { + .chart-area { + height: 15rem; + } +} + +.chart-bar { + position: relative; + height: 10rem; + width: 100%; +} +@media (min-width: 768px) { + .chart-bar { + height: 15rem; + } +} + +.chart-pie { + position: relative; + height: 15rem; + width: 100%; +} +@media (min-width: 768px) { + .chart-pie { + height: 15rem; + } +} + +.datatable-wrapper .datatable-container { + font-size: 0.875rem; +} + +.datatable-wrapper.no-header .datatable-container { + border-top: none; +} + +.datatable-wrapper.no-footer .datatable-container { + border-bottom: none; +} + +.datatable-top { + padding: 0 0 1rem; +} + +.datatable-bottom { + padding: 0; +} + +.datatable-top > nav:first-child, +.datatable-top > div:first-child, +.datatable-bottom > nav:first-child, +.datatable-bottom > div:first-child { + float: left; +} + +.datatable-top > nav:last-child, +.datatable-top > div:last-child, +.datatable-bottom > nav:last-child, +.datatable-bottom > div:last-child { + float: right; +} + +.datatable-selector { + width: auto; + display: inline-block; + padding-left: 1.125rem; + padding-right: 2.125rem; + margin-right: 0.25rem; +} + +.datatable-info { + margin: 7px 0; +} + +/* PAGER */ +.datatable-pagination a:hover { + background-color: #e0e5ec; +} + +.datatable-pagination .datatable-active a, +.datatable-pagination .datatable-active a:focus, +.datatable-pagination .datatable-active a:hover { + color: #fff; + background-color: #0061f2; +} + +.datatable-pagination li.datatable-hidden { + visibility: visible; +} + +.datatable-pagination .ellipsis a, +.datatable-pagination .disabled a, +.datatable-pagination .disabled a:focus, +.datatable-pagination .disabled a:hover { + cursor: not-allowed; +} + +.datatable-pagination .disabled a, +.datatable-pagination .disabled a:focus, +.datatable-pagination .disabled a:hover { + cursor: not-allowed; + opacity: 0.4; +} + +.datatable-pagination .pager a { + font-weight: bold; +} + +/* TABLE */ +.datatable-table { + border-collapse: collapse; +} + +.datatable-table > tbody > tr > td, +.datatable-table > tbody > tr > th, +.datatable-table > tfoot > tr > td, +.datatable-table > tfoot > tr > th, +.datatable-table > thead > tr > td, +.datatable-table > thead > tr > th { + vertical-align: middle; + padding: 0.75rem 0.75rem; +} + +.datatable-table > thead > tr > th { + vertical-align: bottom; + text-align: left; + border-bottom: none; +} + +.datatable-table > tfoot > tr > th { + vertical-align: bottom; + text-align: left; +} + +.datatable-table th { + vertical-align: bottom; + text-align: left; +} + +.datatable-table th a { + text-decoration: none; + color: inherit; +} + +.datatable-sorter { + display: inline-block; + height: 100%; + position: relative; + width: 100%; + padding-right: 1rem; +} + +.datatable-sorter::before, +.datatable-sorter::after { + content: ""; + height: 0; + width: 0; + position: absolute; + right: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + opacity: 0.2; +} + +.datatable-sorter::before { + bottom: 4px; +} + +.datatable-sorter::after { + top: 0px; +} + +.asc .datatable-sorter::after, +.desc .datatable-sorter::before { + opacity: 0.6; +} + +.datatables-empty { + text-align: center; +} + +.datatable-top::after, +.datatable-bottom::after { + clear: both; + content: " "; + display: table; +} + +.btn-datatable { + height: 20px !important; + width: 20px !important; + font-size: 0.75rem; + border-radius: 0.35rem !important; +} + +.sbp-dropdown-example .dropdown-menu { + display: inline-block; + position: relative; + float: none; + max-width: 15rem; +} + +.sbp-preview { + border-radius: 0.35rem; + border: 0.25rem solid #e0e5ec; + border-style: solid; +} +.sbp-preview .sbp-preview-content { + padding: 1.5rem; + border-bottom: 1px solid #e0e5ec; + position: relative; +} +.sbp-preview .sbp-preview-code { + background-color: #f2f6fc; + padding: 1.5rem; + border-bottom: 1px solid #e0e5ec; +} +.sbp-preview .sbp-preview-code .nav-tabs { + border-bottom-color: transparent; + font-size: 0.75rem; + font-weight: 500; +} +.sbp-preview .sbp-preview-code .nav-tabs .nav-item .nav-link { + border-bottom: 0; + display: inline-flex; + align-items: center; +} +.sbp-preview .sbp-preview-code .nav-tabs .nav-item .nav-link.active { + border-color: transparent; + background-color: #2f2f2f; + color: white; +} +.sbp-preview .sbp-preview-code .nav-tabs .nav-item .nav-link .img-pug { + height: 1em; + padding: 1px 0; +} +.sbp-preview .sbp-preview-text { + background-color: #f2f6fc; + font-size: 0.875rem; + padding: 1.5rem; +} + +code[class*=language-], +pre[class*=language-] { + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + color: #eee; + background: #2f2f2f; + font-family: "SFMono-Regular", "Consolas", "Liberation Mono", "Menlo", monospace; + font-size: 0.875rem; + line-height: 1.5em; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + hyphens: none; +} + +code[class*=language-]::-moz-selection, +pre[class*=language-]::-moz-selection, +code[class*=language-] ::-moz-selection, +pre[class*=language-] ::-moz-selection { + background: #363636; +} + +code[class*=language-]::-moz-selection, pre[class*=language-]::-moz-selection, code[class*=language-] ::-moz-selection, pre[class*=language-] ::-moz-selection { + background: #363636; +} + +code[class*=language-]::selection, +pre[class*=language-]::selection, +code[class*=language-] ::selection, +pre[class*=language-] ::selection { + background: #363636; +} + +:not(pre) > code[class*=language-] { + white-space: normal; + border-radius: 0.2em; + padding: 0.1em; +} + +pre[class*=language-] { + overflow: auto; + position: relative; + margin: 0; + padding: 1rem; + max-height: 35rem; +} + +.language-css > code, +.language-sass > code, +.language-scss > code { + color: #fd9170; +} + +[class*=language-] .namespace { + opacity: 0.7; +} + +.token.atrule { + color: #c792ea; +} + +.token.attr-name { + color: #ffcb6b; +} + +.token.attr-value { + color: #a5e844; +} + +.token.attribute { + color: #a5e844; +} + +.token.boolean { + color: #c792ea; +} + +.token.builtin { + color: #ffcb6b; +} + +.token.cdata { + color: #80cbc4; +} + +.token.char { + color: #80cbc4; +} + +.token.class { + color: #ffcb6b; +} + +.token.class-name { + color: #f2ff00; +} + +.token.comment { + color: #616161; +} + +.token.constant { + color: #c792ea; +} + +.token.deleted { + color: #ff6666; +} + +.token.doctype { + color: #616161; +} + +.token.entity { + color: #ff6666; +} + +.token.function { + color: #c792ea; +} + +.token.hexcode { + color: #f2ff00; +} + +.token.id { + color: #c792ea; + font-weight: bold; +} + +.token.important { + color: #c792ea; + font-weight: bold; +} + +.token.inserted { + color: #80cbc4; +} + +.token.keyword { + color: #c792ea; +} + +.token.number { + color: #fd9170; +} + +.token.operator { + color: #89ddff; +} + +.token.prolog { + color: #616161; +} + +.token.property { + color: #80cbc4; +} + +.token.pseudo-class { + color: #a5e844; +} + +.token.pseudo-element { + color: #a5e844; +} + +.token.punctuation { + color: #89ddff; +} + +.token.regex { + color: #f2ff00; +} + +.token.selector { + color: #ff6666; +} + +.token.string { + color: #a5e844; +} + +.token.symbol { + color: #c792ea; +} + +.token.tag { + color: #ff6666; +} + +.token.unit { + color: #fd9170; +} + +.token.url { + color: #ff6666; +} + +.token.variable { + color: #ff6666; +} \ No newline at end of file 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/js/custom.js b/public/js/custom.js new file mode 100644 index 0000000..dc5cea4 --- /dev/null +++ b/public/js/custom.js @@ -0,0 +1,38 @@ +$(document).ready(function() { + $('.rmv-custom-alert-container').on( "click", function() { + $('.custom-alert-container').remove(); + }); + + $('input.datepicker, input[type="date"]').each(function () { + const input = $(this); + const value = input.val() || input.attr('value') || ''; + const isoDate = /^(\d{4})-(\d{2})-(\d{2})/.exec(value); + + input.attr('type', 'text').addClass('datepicker'); + + if (isoDate) { + input.val(`${isoDate[3]}/${isoDate[2]}/${isoDate[1]}`); + } else { + input.val(value); + } + + if (typeof $.fn.datepicker !== 'undefined') { + input.datepicker({ + dateFormat: 'dd/mm/yy', + changeMonth: true, + changeYear: true + }); + } + }); + + $('form').on('submit', function () { + $(this).find('input.datepicker').each(function () { + const input = $(this); + const date = /^(\d{2})\/(\d{2})\/(\d{4})$/.exec(input.val()); + + if (date) { + input.val(`${date[3]}-${date[2]}-${date[1]}`); + } + }); + }); +}); diff --git a/public/js/datatables/datatables-simple-demo.js b/public/js/datatables/datatables-simple-demo.js new file mode 100644 index 0000000..c02639b --- /dev/null +++ b/public/js/datatables/datatables-simple-demo.js @@ -0,0 +1,9 @@ +window.addEventListener('DOMContentLoaded', event => { + // Simple-DataTables + // https://github.com/fiduswriter/Simple-DataTables/wiki + + const datatablesSimple = document.getElementById('datatablesSimple'); + if (datatablesSimple) { + new simpleDatatables.DataTable(datatablesSimple); + } +}); diff --git a/public/js/litepicker.js b/public/js/litepicker.js new file mode 100644 index 0000000..412e5cc --- /dev/null +++ b/public/js/litepicker.js @@ -0,0 +1,56 @@ +// Litepicker +// +// The date pickers in Material Admin Pro +// are powered by the Litepicker plugin. +// Litepicker is a lightweight, no dependencies +// date picker that allows for date ranges +// and other options. For more usage details +// visit the Litepicker docs. +// +// Litepicker Documentation +// https://wakirin.github.io/Litepicker + +window.addEventListener('DOMContentLoaded', event => { + + const litepickerSingleDate = document.getElementById('litepickerSingleDate'); + if (litepickerSingleDate) { + new Litepicker({ + element: litepickerSingleDate, + format: 'MMM DD, YYYY' + }); + } + + const litepickerDateRange = document.getElementById('litepickerDateRange'); + if (litepickerDateRange) { + new Litepicker({ + element: litepickerDateRange, + singleMode: false, + format: 'MMM DD, YYYY' + }); + } + + const litepickerDateRange2Months = document.getElementById('litepickerDateRange2Months'); + if (litepickerDateRange2Months) { + new Litepicker({ + element: litepickerDateRange2Months, + singleMode: false, + numberOfMonths: 2, + numberOfColumns: 2, + format: 'MMM DD, YYYY' + }); + } + + const litepickerRangePlugin = document.getElementById('litepickerRangePlugin'); + if (litepickerRangePlugin) { + new Litepicker({ + element: litepickerRangePlugin, + startDate: new Date(), + endDate: new Date(), + singleMode: false, + numberOfMonths: 2, + numberOfColumns: 2, + format: 'MMM DD, YYYY', + plugins: ['ranges'] + }); + } +}); diff --git a/public/js/markdown.js b/public/js/markdown.js new file mode 100644 index 0000000..7c0ecc5 --- /dev/null +++ b/public/js/markdown.js @@ -0,0 +1,4 @@ +var easyMDE = new EasyMDE({ + element: document.getElementById('postEditor'), + toolbar: ['bold', 'italic', 'heading', '|', 'quote', 'unordered-list', 'ordered-list', '|', 'link', 'image', '|', 'preview', 'guide'] +}); diff --git a/public/js/scripts.js b/public/js/scripts.js new file mode 100644 index 0000000..4edc8ad --- /dev/null +++ b/public/js/scripts.js @@ -0,0 +1,78 @@ +/*! + * Start Bootstrap - SB Admin Pro v2.0.5 (https://shop.startbootstrap.com/product/sb-admin-pro) + * Copyright 2013-2023 Start Bootstrap + * Licensed under SEE_LICENSE (https://github.com/StartBootstrap/sb-admin-pro/blob/master/LICENSE) + */ + +window.onload = function () { + // Activate feather + feather.replace(); + + // Enable tooltips globally + var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); + var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { + return new bootstrap.Tooltip(tooltipTriggerEl); + }); + + // Enable popovers globally + var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); + var popoverList = popoverTriggerList.map(function (popoverTriggerEl) { + return new bootstrap.Popover(popoverTriggerEl); + }); + + // Toggle the side navigation + const sidebarToggle = document.body.querySelector('#sidebarToggle'); + + if (sidebarToggle) { + // Uncomment Below to persist sidebar toggle between refreshes + // if (localStorage.getItem('sb|sidebar-toggle') === 'true') { + // document.body.classList.toggle('sidenav-toggled'); + // } + sidebarToggle.addEventListener('click', event => { + event.preventDefault(); + document.body.classList.toggle('sidenav-toggled'); + localStorage.setItem('sb|sidebar-toggle', document.body.classList.contains('sidenav-toggled')); + }); + } + + // Close side navigation when width < LG + const sidenavContent = document.body.querySelector('#layoutSidenav_content'); + if (sidenavContent) { + sidenavContent.addEventListener('click', event => { + const BOOTSTRAP_LG_WIDTH = 992; + if (window.innerWidth >= 992) { + return; + } + if (document.body.classList.contains("sidenav-toggled")) { + document.body.classList.toggle("sidenav-toggled"); + } + }); + } + + // Add active state to sidbar nav links + let activatedPath = window.location.pathname.match(/([\w-]+\.html)/, '$1'); + + if (activatedPath) { + activatedPath = activatedPath[0]; + } else { + activatedPath = 'index.html'; + } + + const targetAnchors = document.body.querySelectorAll('[href="' + activatedPath + '"].nav-link'); + + targetAnchors.forEach(targetAnchor => { + let parentNode = targetAnchor.parentNode; + while (parentNode !== null && parentNode !== document.documentElement) { + if (parentNode.classList.contains('collapse')) { + parentNode.classList.add('show'); + const parentNavLink = document.body.querySelector( + '[data-bs-target="#' + parentNode.id + '"]' + ); + parentNavLink.classList.remove('collapsed'); + parentNavLink.classList.add('active'); + } + parentNode = parentNode.parentNode; + } + targetAnchor.classList.add('active'); + }); +}; diff --git a/public/js/toasts.js b/public/js/toasts.js new file mode 100644 index 0000000..79d3dbe --- /dev/null +++ b/public/js/toasts.js @@ -0,0 +1,26 @@ +// For more details see: https://getbootstrap.com/docs/5.0/components/toasts/#usage + +window.addEventListener('DOMContentLoaded', event => { + + const toastBasicEl = document.getElementById('toastBasic'); + const toastNoAutohideEl = document.getElementById('toastNoAutohide'); + + const toastBasic = new bootstrap.Toast(toastBasicEl); + const toastNoAutohide = new bootstrap.Toast(toastNoAutohideEl); + + const toastBasicTrigger = document.getElementById('toastBasicTrigger'); + if (toastBasicTrigger) { + toastBasicTrigger.addEventListener('click', event => { + console.log('asd'); + toastBasic.show(); + }); + } + + const toastNoAutohideTrigger = document.getElementById('toastNoAutohideTrigger'); + if (toastNoAutohideTrigger) { + toastNoAutohideTrigger.addEventListener('click', event => { + toastNoAutohide.show(); + }); + } + +}) 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/analytal_index.css b/resources/css/analytal_index.css new file mode 100644 index 0000000..000123d --- /dev/null +++ b/resources/css/analytal_index.css @@ -0,0 +1,79 @@ +:root { + --primary-gradient: linear-gradient(135deg, #4361ee 0%, #3a0ca3 100%); + --surface-color: #ffffff; + --text-main: #2b3445; + --text-muted: #7d879c; + } + + body { background-color: #f6f9fc; color: var(--text-main); font-family: 'Inter', sans-serif; } + + /* Cards KPI - Refinamento de Elevação */ + .stat-card { + border: none; + border-radius: 20px; + background: var(--surface-color); + box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.02); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + border: 1px solid rgba(0,0,0,0.03); + } + + .stat-card:hover { + transform: translateY(-5px); + box-shadow: 0px 12px 24px rgba(67, 97, 238, 0.12); + } + + /* Ícones com Gradientes */ + .icon-box { + width: 52px; + height: 52px; + border-radius: 14px; + display: flex; + align-items: center; + justify-content: center; + font-size: 1.3rem; + transition: transform 0.2s; + } + + .bg-blue-soft { background: linear-gradient(135deg, #e7f0ff 0%, #d0e1ff 100%); color: #4361ee; } + .bg-green-soft { background: linear-gradient(135deg, #e6f9f7 0%, #c4f2ed 100%); color: #2ec4b6; } + .bg-dark-soft { background: linear-gradient(135deg, #f1f3f5 0%, #e9ecef 100%); color: #495057; } + + /* Filtros Modernizados */ + .filter-section { + border-radius: 20px; + background: rgba(255, 255, 255, 0.8); + backdrop-filter: blur(10px); + border: 1px solid rgba(255, 255, 255, 0.5) !important; + } + + .input-group-text { + background-color: transparent; + border-right: none; + color: var(--text-muted); + font-weight: 500; + } + + .form-control { + border-radius: 10px; + padding: 0.6rem 1rem; + border: 1px solid #e3e9ef; + } + + .form-control:focus { + box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.1); + border-color: #4361ee; + } + + /* Botão Primário Estilo SaaS */ + .btn-primary { + background: var(--primary-gradient); + border: none; + font-weight: 600; + padding: 0.6rem 1.5rem; + border-radius: 12px; + box-shadow: 0 4px 14px 0 rgba(67, 97, 238, 0.3); + } + + /* Gráficos */ + .chart-container { min-height: 350px; } + .card-title { font-size: 1.1rem; letter-spacing: -0.02em; } diff --git a/resources/css/app.css b/resources/css/app.css new file mode 100644 index 0000000..2243c60 --- /dev/null +++ b/resources/css/app.css @@ -0,0 +1,12 @@ +@import 'tailwindcss'; + +@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; +@source '../../storage/framework/views/*.php'; +@source "../**/*.blade.php"; +@source "../**/*.js"; +@source "../**/*.vue"; + +@theme { + --font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol', 'Noto Color Emoji'; +} diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 0000000..e59d6a0 --- /dev/null +++ b/resources/js/app.js @@ -0,0 +1 @@ +import './bootstrap'; diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js new file mode 100644 index 0000000..46f7a33 --- /dev/null +++ b/resources/js/bootstrap.js @@ -0,0 +1,34 @@ +import 'bootstrap'; + +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// import Pusher from 'pusher-js'; +// window.Pusher = Pusher; + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: import.meta.env.VITE_PUSHER_APP_KEY, +// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', +// wsHost: import.meta.env.VITE_PUSHER_HOST ?? `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, +// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, +// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', +// enabledTransports: ['ws', 'wss'], +// }); diff --git a/resources/lang/pt/attributes.php b/resources/lang/pt/attributes.php new file mode 100644 index 0000000..411c42e --- /dev/null +++ b/resources/lang/pt/attributes.php @@ -0,0 +1,46 @@ + 'nome', + 'tax_number' => 'NIF', + 'email' => 'e-mail', + 'phone' => 'telefone', + 'address' => 'morada', + 'contact_info' => 'informações de contacto', + 'notes' => 'notas', + 'client_type_id' => 'tipo de cliente', + 'seller_id' => 'vendedor', + 'locality' => 'localidade', + 'client_id' => 'cliente', + 'contract_value' => 'valor do contrato', + 'commission_value' => 'valor da comissão', + 'profit_value' => 'lucro', + 'supply_type' => 'tipo de fornecimento', + 'supply_address' => 'endereço de fornecimento', + 'annual_consumption' => 'consumo anual', + 'code' => 'código', + 'contract_type_id' => 'tipo de contrato', + 'validity' => 'validade', + 'contract_end_date' => 'data de fim do contrato', + 'contract_date' => 'data do contrato', + 'activation_date' => 'data de ativação', + 'status_id' => 'estado do contrato', + 'commission_rate' => 'percentagem da comissão', + 'power_tier_id' => 'escalão de potência', + 'payment_method_id' => 'método de pagamento', + 'delivery_method' => 'método de envio', + 'delivery_email' => 'e-mail de envio', + 'previous_supplier_id' => 'fornecedor anterior', + 'new_supplier_id' => 'novo fornecedor', + 'typology_id' => 'tipologia', + 'cui_tier_id' => 'escalão CUI', + 'paid' => 'pago', + 'chargeback' => 'chargeback', + 'chargeback_value' => 'valor do chargeback', + 'chargeback_date' => 'data de chargeback', + 'next_due_date' => 'próxima renovação', + 'renewal_type' => 'tipo de renovação', + 'lead_status_id' => 'estado do lead', + 'contact_date' => 'data de contacto', + 'contract_type' => 'tipo de contrato', +]; diff --git a/resources/lang/pt/validation.php b/resources/lang/pt/validation.php new file mode 100644 index 0000000..0e6a31d --- /dev/null +++ b/resources/lang/pt/validation.php @@ -0,0 +1,350 @@ + 'O campo :attribute deve ser aceite.', + 'accepted_if' => 'O campo :attribute deve ser aceite quando :other é :value.', + 'active_url' => 'O campo :attribute não é uma URL válida.', + 'after' => 'O campo :attribute deve ser uma data posterior a :date.', + 'after_or_equal' => 'O campo :attribute deve ser uma data posterior ou igual a :date.', + 'alpha' => 'O campo :attribute deve conter apenas letras.', + 'alpha_dash' => 'O campo :attribute pode conter apenas letras, números, traços e underscores.', + 'alpha_num' => 'O campo :attribute deve conter apenas letras e números.', + 'array' => 'O campo :attribute deve ser uma lista.', + 'before' => 'O campo :attribute deve ser uma data anterior a :date.', + 'before_or_equal' => 'O campo :attribute deve ser uma data anterior ou igual a :date.', + 'between' => [ + 'array' => 'O campo :attribute deve ter entre :min e :max itens.', + 'file' => 'O campo :attribute deve ter entre :min e :max kilobytes.', + 'numeric' => 'O campo :attribute deve estar entre :min e :max.', + 'string' => 'O campo :attribute deve ter entre :min e :max caracteres.', + ], + 'boolean' => 'O campo :attribute deve ser verdadeiro ou falso.', + 'confirmed' => 'A confirmação de :attribute não corresponde.', + 'current_password' => 'A palavra-passe atual está incorreta.', + 'date' => 'O campo :attribute deve ser uma data válida.', + 'date_equals' => 'O campo :attribute deve ser uma data igual a :date.', + 'date_format' => 'O campo :attribute deve estar no formato :format.', + 'declined' => 'O campo :attribute deve ser recusado.', + 'declined_if' => 'O campo :attribute deve ser recusado quando :other for :value.', + 'different' => 'O campo :attribute e :other devem ser diferentes.', + 'digits' => 'O campo :attribute deve ter :digits dígitos.', + 'digits_between' => 'O campo :attribute deve ter entre :min e :max dígitos.', + 'email' => 'O campo :attribute deve conter um e-mail válido.', + 'ends_with' => 'O campo :attribute deve terminar com: :values.', + 'exists' => 'O :attribute selecionado não é válido.', + 'file' => 'O campo :attribute deve ser um ficheiro.', + 'filled' => 'O campo :attribute é obrigatório.', + 'gt' => [ + 'array' => 'O campo :attribute deve ter mais de :value itens.', + 'file' => 'O campo :attribute deve ser maior do que :value kilobytes.', + 'numeric' => 'O campo :attribute deve ser maior do que :value.', + 'string' => 'O campo :attribute deve ter mais de :value caracteres.', + ], + 'gte' => [ + 'array' => 'O campo :attribute deve ter :value itens ou mais.', + 'file' => 'O campo :attribute deve ter :value kilobytes ou mais.', + 'numeric' => 'O campo :attribute deve ser maior ou igual a :value.', + 'string' => 'O campo :attribute deve ter :value caracteres ou mais.', + ], + 'image' => 'O campo :attribute deve ser uma imagem.', + 'in' => 'O campo :attribute selecionado não é válido.', + 'in_array' => 'O campo :attribute não existe em :other.', + 'integer' => 'O campo :attribute deve ser um número inteiro.', + 'ip' => 'O campo :attribute deve ser um endereço IP válido.', + 'ipv4' => 'O campo :attribute deve ser um endereço IPv4 válido.', + 'ipv6' => 'O campo :attribute deve ser um endereço IPv6 válido.', + 'json' => 'O campo :attribute deve conter JSON válido.', + 'lt' => [ + 'array' => 'O campo :attribute deve ter menos de :value itens.', + 'file' => 'O campo :attribute deve ser inferior a :value kilobytes.', + 'numeric' => 'O campo :attribute deve ser inferior a :value.', + 'string' => 'O campo :attribute deve ter menos de :value caracteres.', + ], + 'lte' => [ + 'array' => 'O campo :attribute deve ter :value itens ou menos.', + 'file' => 'O campo :attribute deve ter :value kilobytes ou menos.', + 'numeric' => 'O campo :attribute deve ser menor ou igual a :value.', + 'string' => 'O campo :attribute deve ter :value caracteres ou menos.', + ], + 'max' => [ + 'array' => 'O campo :attribute não pode ter mais de :max itens.', + 'file' => 'O campo :attribute não pode ter mais de :max kilobytes.', + 'numeric' => 'O campo :attribute não pode ser superior a :max.', + 'string' => 'O campo :attribute não pode ter mais de :max caracteres.', + ], + 'mimes' => 'O campo :attribute deve ser um ficheiro do tipo: :values.', + 'mimetypes' => 'O campo :attribute deve ser um ficheiro do tipo: :values.', + 'min' => [ + 'array' => 'O campo :attribute deve ter pelo menos :min itens.', + 'file' => 'O campo :attribute deve ter pelo menos :min kilobytes.', + 'numeric' => 'O campo :attribute deve ser pelo menos :min.', + 'string' => 'O campo :attribute deve ter pelo menos :min caracteres.', + ], + 'multiple_of' => 'O campo :attribute deve ser múltiplo de :value.', + 'not_in' => 'O campo :attribute selecionado não é válido.', + 'not_regex' => 'O formato do campo :attribute não é válido.', + 'numeric' => 'O campo :attribute deve ser um número.', + 'password' => 'A palavra-passe está incorreta.', + 'present' => 'O campo :attribute deve estar presente.', + 'prohibited' => 'O campo :attribute é proibido.', + 'prohibited_if' => 'O campo :attribute é proibido quando :other é :value.', + 'prohibited_unless' => 'O campo :attribute é proibido, a menos que :other esteja em :values.', + 'prohibits' => 'O campo :attribute proíbe :other de estar presente.', + 'regex' => 'O formato do campo :attribute não é válido.', + 'required' => 'O campo :attribute é obrigatório.', + 'required_array_keys' => 'O campo :attribute deve incluir entradas para: :values.', + 'required_if' => 'O campo :attribute é obrigatório quando :other é :value.', + 'required_unless' => 'O campo :attribute é obrigatório, a menos que :other esteja em :values.', + 'required_with' => 'O campo :attribute é obrigatório quando :values está presente.', + 'required_with_all' => 'O campo :attribute é obrigatório quando :values estão presentes.', + 'required_without' => 'O campo :attribute é obrigatório quando :values não está presente.', + 'required_without_all' => 'O campo :attribute é obrigatório quando nenhum dos :values está presente.', + 'same' => 'O campo :attribute e :other devem coincidir.', + 'size' => [ + 'array' => 'O campo :attribute deve conter :size itens.', + 'file' => 'O campo :attribute deve ter :size kilobytes.', + 'numeric' => 'O campo :attribute deve ser :size.', + 'string' => 'O campo :attribute deve ter :size caracteres.', + ], + 'starts_with' => 'O campo :attribute deve começar com: :values.', + 'string' => 'O campo :attribute deve ser texto.', + 'timezone' => 'O campo :attribute deve ser uma zona válida.', + 'unique' => 'Este valor para :attribute já existe.', + 'uploaded' => 'O campo :attribute não foi carregado com sucesso.', + 'url' => 'O campo :attribute deve ser uma URL válida.', + 'uuid' => 'O campo :attribute deve ser um UUID válido.', + + 'custom' => [ + 'name' => [ + 'required' => 'O nome é obrigatório.', + 'string' => 'O nome deve ser texto.', + 'max' => 'O nome não pode ter mais de 255 caracteres.', + ], + 'tax_number' => [ + 'required' => 'O NIF é obrigatório.', + 'digits' => 'O NIF deve ter 9 dígitos.', + 'unique' => 'Já existe um cliente com este NIF.', + ], + 'email' => [ + 'required' => 'O e-mail é obrigatório.', + 'email' => 'O e-mail deve ser válido.', + 'max' => 'O e-mail não pode ter mais de 255 caracteres.', + ], + 'phone' => [ + 'required' => 'O telefone é obrigatório.', + 'string' => 'O telefone deve ser texto.', + 'max' => 'O telefone não pode ter mais de 20 caracteres.', + ], + 'address' => [ + 'required' => 'A morada é obrigatória.', + 'string' => 'A morada deve ser texto.', + 'max' => 'A morada não pode ter mais de 255 caracteres.', + ], + 'contact_info' => [ + 'string' => 'As informações de contacto devem ser texto.', + 'max' => 'As informações de contacto não podem exceder 255 caracteres.', + ], + 'notes' => [ + 'string' => 'As notas devem ser texto.', + 'max' => 'As notas não podem exceder 500 caracteres.', + ], + 'client_type_id' => [ + 'required' => 'O tipo de cliente é obrigatório.', + 'exists' => 'O tipo de cliente selecionado não é válido.', + ], + 'seller_id' => [ + 'required' => 'O vendedor é obrigatório.', + 'exists' => 'O vendedor selecionado não é válido.', + ], + 'locality' => [ + 'string' => 'A localidade deve ser texto.', + 'max' => 'A localidade não pode ter mais de 255 caracteres.', + ], + 'client_id' => [ + 'required' => 'O cliente é obrigatório.', + 'exists' => 'O cliente selecionado não é válido.', + ], + 'contract_value' => [ + 'numeric' => 'O valor do contrato deve ser um número.', + 'min' => 'O valor do contrato não pode ser negativo.', + ], + 'commission_value' => [ + 'numeric' => 'O valor da comissão deve ser um número.', + ], + 'profit_value' => [ + 'numeric' => 'O lucro deve ser um número.', + ], + 'supply_type' => [ + 'required' => 'O tipo de fornecimento é obrigatório.', + 'in' => 'O tipo de fornecimento deve ser CPE ou cui.', + ], + 'annual_consumption' => [ + 'numeric' => 'O consumo anual deve ser numérico.', + 'min' => 'O consumo anual não pode ser negativo.', + ], + 'contract_type_id' => [ + 'required' => 'O tipo de contrato é obrigatório.', + 'exists' => 'O tipo de contrato selecionado não é válido.', + ], + 'validity' => [ + 'date' => 'A validade deve ser uma data válida.', + 'date_format' => 'A validade deve estar no formato DD/MM/AAAA.', + ], + 'contract_end_date' => [ + 'date' => 'A data de fim do contrato deve ser válida.', + 'after_or_equal' => 'A data de fim de contrato deve ser igual ou posterior à data de contacto.', + 'date_format' => 'A data de fim de contrato deve estar no formato DD/MM/AAAA.', + ], + 'contract_date' => [ + 'date' => 'A data do contrato deve ser válida.', + 'date_format' => 'A data do contrato deve estar no formato DD/MM/AAAA.', + ], + 'activation_date' => [ + 'date' => 'A data de ativação deve ser válida.', + 'date_format' => 'A data de ativação deve estar no formato DD/MM/AAAA.', + ], + 'status_id' => [ + 'required' => 'O estado do contrato é obrigatório.', + 'exists' => 'O estado do contrato selecionado não é válido.', + ], + 'commission_rate' => [ + 'numeric' => 'A percentagem da comissão deve ser um número.', + 'between' => 'A percentagem da comissão deve estar entre 0 e 100.', + ], + 'power_tier_id' => [ + 'exists' => 'O escalão de potência selecionado não é válido.', + ], + 'payment_method_id' => [ + 'required' => 'O método de pagamento é obrigatório.', + 'exists' => 'O método de pagamento selecionado não é válido.', + ], + 'delivery_method' => [ + 'required' => 'O método de envio é obrigatório.', + 'in' => 'O método de envio deve ser "correio" ou "email".', + ], + 'delivery_email' => [ + 'email' => 'O e-mail de envio deve ser válido.', + 'max' => 'O e-mail de envio não pode exceder 255 caracteres.', + ], + 'previous_supplier_id' => [ + 'exists' => 'O fornecedor anterior selecionado não é válido.', + ], + 'new_supplier_id' => [ + 'exists' => 'O novo fornecedor selecionado não é válido.', + 'required_if' => 'O novo fornecedor é obrigatório quando a alteração está ativa.', + ], + 'paid' => [ + 'required' => 'O campo "Pago" é obrigatório.', + 'boolean' => 'O campo "Pago" deve ser verdadeiro ou falso.', + ], + 'chargeback' => [ + 'boolean' => 'O campo "Chargeback" deve ser verdadeiro ou falso.', + ], + 'chargeback_value' => [ + 'required_if' => 'O valor do chargeback é obrigatório.', + 'numeric' => 'O valor do chargeback deve ser numérico.', + 'max' => 'O valor do chargeback deve ser negativo.', + ], + 'chargeback_date' => [ + 'required_if' => 'A data de chargeback é obrigatória.', + 'date' => 'A data de chargeback deve ser uma data válida.', + 'date_format' => 'A data de chargeback deve estar no formato DD/MM/AAAA.', + ], + 'installments_due_date' => [ + 'required_with' => 'A data da parcela é obrigatória quando o valor está preenchido.', + 'date' => 'A data da parcela deve ser uma data válida.', + 'date_format' => 'A data da parcela deve estar no formato DD/MM/AAAA.', + ], + 'installments_amount' => [ + 'required_with' => 'O valor da parcela é obrigatório quando a data está preenchida.', + 'numeric' => 'O valor da parcela deve ser numérico.', + 'min' => 'O valor da parcela não pode ser negativo.', + ], + 'lead_status_id' => [ + 'exists' => 'O estado do lead selecionado não é válido.', + ], + 'contact_date' => [ + 'date' => 'A data de contacto deve ser válida.', + 'date_format' => 'A data de contacto deve estar no formato DD/MM/AAAA.', + ], + 'contract_type' => [ + 'in' => 'O tipo de contrato deve ser CPE ou CUI.', + ], + 'next_due_date' => [ + 'required' => 'A próxima renovação é obrigatória.', + 'date_format' => 'A próxima renovação deve estar no formato DD/MM/AAAA.', + ], + 'renewal_type' => [ + 'required' => 'O tipo de renovação é obrigatório.', + 'exists' => 'O tipo de renovação selecionado não é válido.', + ], + 'amount_paid' => [ + 'required' => 'O valor do contrato é obrigatório.', + 'numeric' => 'O valor do contrato deve ser um número.', + ], + 'cui_tier_id' => [ + 'exists' => 'O escalão CUI selecionado não é válido.', + ], + 'commission_value' => [ + 'numeric' => 'A comissão deve ser um número.', + ], + 'typology_id' => [ + 'exists' => 'A tipologia selecionada não é válida.', + ], + 'code' => [ + 'required' => 'O código é obrigatório.', + 'string' => 'O código deve ser texto.', + 'max' => 'O código não pode ter mais de 255 caracteres.', + ], + 'supply_address' => [ + 'string' => 'O endereço de fornecimento deve ser texto.', + 'max' => 'O endereço de fornecimento não pode exceder 255 caracteres.', + ], + ], + + 'attributes' => [ + 'name' => 'nome', + 'tax_number' => 'NIF', + 'email' => 'e-mail', + 'phone' => 'telefone', + 'address' => 'morada', + 'contact_info' => 'informações de contacto', + 'notes' => 'notas', + 'client_type_id' => 'tipo de cliente', + 'seller_id' => 'vendedor', + 'locality' => 'localidade', + 'client_id' => 'cliente', + 'contract_value' => 'valor do contrato', + 'commission_value' => 'valor da comissão', + 'profit_value' => 'lucro', + 'supply_type' => 'tipo de fornecimento', + 'supply_address' => 'endereço de fornecimento', + 'annual_consumption' => 'consumo anual', + 'code' => 'código', + 'contract_type_id' => 'tipo de contrato', + 'validity' => 'validade', + 'contract_end_date' => 'data de fim do contrato', + 'contract_date' => 'data do contrato', + 'activation_date' => 'data de ativação', + 'status_id' => 'estado do contrato', + 'commission_rate' => 'percentagem da comissão', + 'power_tier_id' => 'escalão de potência', + 'payment_method_id' => 'método de pagamento', + 'delivery_method' => 'método de envio', + 'delivery_email' => 'e-mail de envio', + 'previous_supplier_id' => 'fornecedor anterior', + 'new_supplier_id' => 'novo fornecedor', + 'typology_id' => 'tipologia', + 'cui_tier_id' => 'escalão CUI', + 'paid' => 'pago', + 'chargeback' => 'chargeback', + 'chargeback_value' => 'valor do chargeback', + 'chargeback_date' => 'data de chargeback', + 'next_due_date' => 'próxima renovação', + 'annual_consumption' => 'consumo anual', + 'renewal_type' => 'tipo de renovação', + 'lead_status_id' => 'estado do lead', + 'contact_date' => 'data de contacto', + 'contract_type' => 'tipo de contrato', + ], +]; diff --git a/resources/sass/_variables.scss b/resources/sass/_variables.scss new file mode 100644 index 0000000..172daaa --- /dev/null +++ b/resources/sass/_variables.scss @@ -0,0 +1,7 @@ +// Body +$body-bg: #f8fafc; + +// Typography +$font-family-sans-serif: 'Nunito', sans-serif; +$font-size-base: 0.9rem; +$line-height-base: 1.6; diff --git a/resources/sass/app.scss b/resources/sass/app.scss new file mode 100644 index 0000000..1026a0b --- /dev/null +++ b/resources/sass/app.scss @@ -0,0 +1,8 @@ +// Fonts +@import url('https://fonts.bunny.net/css?family=Nunito'); + +// Variables +@import 'variables'; + +// Bootstrap +@import 'bootstrap/scss/bootstrap'; diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php new file mode 100644 index 0000000..570f3e5 --- /dev/null +++ b/resources/views/auth/login.blade.php @@ -0,0 +1,87 @@ + + + + @include('layouts.base.head') + + +

+ @include('layouts.base.bottom') + + diff --git a/resources/views/auth/passwords/confirm.blade.php b/resources/views/auth/passwords/confirm.blade.php new file mode 100644 index 0000000..f8c8e61 --- /dev/null +++ b/resources/views/auth/passwords/confirm.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Confirm Password') }}
+ +
+ {{ __('Please confirm your password before continuing.') }} + +
+ @csrf + +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+
+ + + @if (Route::has('password.request')) + + {{ __('Forgot Your Password?') }} + + @endif +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php new file mode 100644 index 0000000..d801e4a --- /dev/null +++ b/resources/views/auth/passwords/email.blade.php @@ -0,0 +1,55 @@ + + + + + Pedir reset de password + + + + + +
+
+
+
+
+
Esqueci-me da password
+
+
+ @if (session('status')) +
+ {{ session('status') }} +
+ @endif + + @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + +
+ @csrf + +
+ + +
+ + +
+
+
+

© {{ date('Y') }} Voltcerto

+
+
+
+ + diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php new file mode 100644 index 0000000..4dcbcc4 --- /dev/null +++ b/resources/views/auth/passwords/reset.blade.php @@ -0,0 +1,60 @@ + + + + + Alterar Password + + + + + +
+
+
+
+
+
Alterar Palavra-passe
+
+
+ @if (session('status')) +
{{ session('status') }}
+ @endif + + @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + +
+ @csrf + + + + +
+ + +
+ +
+ + +
+ + +
+
+
+

© {{ date('Y') }} Voltcerto

+
+
+
+ + diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php new file mode 100644 index 0000000..9da1ec2 --- /dev/null +++ b/resources/views/auth/register.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.app') + +@section('content') +
+

Registar Novo Utilizador

+ +
+ @csrf + +
+ + +
+ +
+ + +
+ +
+
+ @forelse ($roles as $role) +
+ + +
+ @empty +

Nenhuma role disponível.

+ @endforelse +
+ +
+ + +
+ +

A palavra-passe será gerada automaticamente e enviada por e-mail apenas se o login estiver permitido.

+ + + Cancelar +
+
+@endsection diff --git a/resources/views/auth/verify.blade.php b/resources/views/auth/verify.blade.php new file mode 100644 index 0000000..9f8c1bc --- /dev/null +++ b/resources/views/auth/verify.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Verify Your Email Address') }}
+ +
+ @if (session('resent')) + + @endif + + {{ __('Before proceeding, please check your email for a verification link.') }} + {{ __('If you did not receive the email') }}, +
+ @csrf + . +
+
+
+
+
+
+@endsection diff --git a/resources/views/components/pin-modal.blade.php b/resources/views/components/pin-modal.blade.php new file mode 100644 index 0000000..daa6f93 --- /dev/null +++ b/resources/views/components/pin-modal.blade.php @@ -0,0 +1,30 @@ + + diff --git a/resources/views/emails/new_user_welcome.blade.php b/resources/views/emails/new_user_welcome.blade.php new file mode 100644 index 0000000..494281b --- /dev/null +++ b/resources/views/emails/new_user_welcome.blade.php @@ -0,0 +1,14 @@ + + + + + Conta criada + + +

Olá, {{ $user->name }} 👋

+

A sua conta foi criada com sucesso na plataforma.

+

Email: {{ $user->email }}

+

Palavra-passe temporária: {{ $password }}

+

Recomenda-se que altere a sua palavra-passe após iniciar sessão.

+ + diff --git a/resources/views/emails/test-status.blade.php b/resources/views/emails/test-status.blade.php new file mode 100644 index 0000000..78c1079 --- /dev/null +++ b/resources/views/emails/test-status.blade.php @@ -0,0 +1,42 @@ + + + + Status do Envio de E-mail + + + +

Status do Envio de E-mail

+ +
    +
  • Destinatário: {{ $emailData['to'] }}
  • +
  • Assunto: {{ $emailData['subject'] }}
  • +
  • Corpo do E-mail: {{ $emailData['body'] }}
  • +
  • Data/Hora do Envio: {{ \Carbon\Carbon::parse($emailData['sent_at'])->format('d/m/Y H:i') }}
  • +
  • Tempo de Execução: {{ $emailData['execution_time'] }} segundos
  • +
  • Status: {{ $emailData['status'] }}
  • + @if($emailData['error']) +
  • Erro: {{ $emailData['error'] }}
  • + @endif +
+ +

Configuração do Sistema de Envio

+
    + @foreach($emailData['mail_config'] as $key => $value) +
  • {{ ucfirst($key) }}: {{ $value }}
  • + @endforeach +
+ +

Informações do Sistema

+
    +
  • Laravel: {{ $emailData['laravel_info']['laravel_version'] }}
  • +
  • PHP: {{ $emailData['laravel_info']['php_version'] }}
  • +
  • Ambiente: {{ $emailData['laravel_info']['env'] }}
  • +
  • Classe Mailer: {{ $emailData['laravel_info']['mailer_class'] }}
  • +
+ + diff --git a/resources/views/errors/503.blade.php b/resources/views/errors/503.blade.php new file mode 100644 index 0000000..455d891 --- /dev/null +++ b/resources/views/errors/503.blade.php @@ -0,0 +1,120 @@ + + + + + Manutenção em curso + + + + + +
+
+
⚡
+
🔥
+
+ + Manutenção programada + +

Estamos a melhorar o serviço

+ +

+ Temporariamente indisponível para manutenção. +

+ +
+ © {{ date('Y') }} — Luís Medon +
+
+ + diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php new file mode 100644 index 0000000..4284e51 --- /dev/null +++ b/resources/views/home.blade.php @@ -0,0 +1,89 @@ +@extends('layouts.app') + +@section('content') +
+
+

+ Visão Geral do Sistema +

+
+ +
+
+
+
+ + {{-- Clients By Type --}} + +
+
+
+
+ + @can('view_contract_summary') +
+ @include('web.dashboard.partials.contractsTable', [ + 'contracts' => $upcomingRenewals, + 'title' => 'Próximas Renovações', + 'emptyMessage' => 'Não existem renovações agendadas para este mês.', + 'redirect' => '#' + ]) +
+ +
+ @include('web.dashboard.partials.contractsTable', [ + 'contracts' => $pendingContracts, + 'title' => 'Contratos por Ativar', + 'emptyMessage' => 'Não existem contratos por ativar.', + 'redirect' => route('contract.list', ['status' => 3]) + ]) +
+ +
+ @include('web.dashboard.partials.contractsTable', [ + 'contracts' => $activeContracts, + 'title' => 'Contratos Ativos', + 'emptyMessage' => 'Não existem contratos ativos.', + 'redirect' => route('contract.list', ['status' => 1]) + ]) +
+ @endcan +
+ + + + +@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php new file mode 100644 index 0000000..fb6d78d --- /dev/null +++ b/resources/views/layouts/app.blade.php @@ -0,0 +1,60 @@ + + + + + @include('layouts.base.head') + + + + + @include('layouts.base.topnav') + +
+
+ @include('layouts.base.sidenav') +
+ +
+ + @if ($errors->any()) +
+ +
+ @endif + + @if (session('success')) +
+ +
+ @endif + +
+ @yield('content') +
+
+ @include('layouts.base.footer') +
+
+
+ + @include('components.pin-modal') + + + @include('layouts.base.bottom') + + + diff --git a/resources/views/layouts/base/bottom.blade.php b/resources/views/layouts/base/bottom.blade.php new file mode 100644 index 0000000..c4c5016 --- /dev/null +++ b/resources/views/layouts/base/bottom.blade.php @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/views/layouts/base/footer.blade.php b/resources/views/layouts/base/footer.blade.php new file mode 100644 index 0000000..631976d --- /dev/null +++ b/resources/views/layouts/base/footer.blade.php @@ -0,0 +1,12 @@ +
+
+
{{ config('app.name') }} 2025 - {{ date('Y') }}
+
+ · + Dev + @if (isset($elapsed)) + Render time: {{ $elapsed }}ms + @endif +
+
+
diff --git a/resources/views/layouts/base/head.blade.php b/resources/views/layouts/base/head.blade.php new file mode 100644 index 0000000..2ec55ff --- /dev/null +++ b/resources/views/layouts/base/head.blade.php @@ -0,0 +1,27 @@ + + + + + + +{{ config('app.name') }} + + + + + + + + + + + + + + + + + + + + diff --git a/resources/views/layouts/base/sidenav.blade.php b/resources/views/layouts/base/sidenav.blade.php new file mode 100644 index 0000000..dc1011e --- /dev/null +++ b/resources/views/layouts/base/sidenav.blade.php @@ -0,0 +1,122 @@ + diff --git a/resources/views/layouts/base/topnav.blade.php b/resources/views/layouts/base/topnav.blade.php new file mode 100644 index 0000000..508b4ce --- /dev/null +++ b/resources/views/layouts/base/topnav.blade.php @@ -0,0 +1,69 @@ + + + diff --git a/resources/views/web/admin/access/index.blade.php b/resources/views/web/admin/access/index.blade.php new file mode 100644 index 0000000..8691d5e --- /dev/null +++ b/resources/views/web/admin/access/index.blade.php @@ -0,0 +1,93 @@ +@extends('layouts.app') + +@section('content') +
+
+

Criar Nova Permissão

+
+ @csrf +
+ + +
+
+ + +
+
+ +
+
+
+ +

Gestão de Acessos

+ +
+

1. Roles por Utilizador

+ @foreach ($users as $user) +
+
{{ $user->name }} ({{ $user->email }})
+
+ @foreach ($roles as $role) +
+ hasRole($role->name) ? 'checked' : '' }}> + +
+ @endforeach +
+
+ @endforeach +
+ +
+

2. Permissões por Role

+ @foreach ($roles as $role) +
+
{{ $role->description ?? $role->name }}
+
+ @foreach ($permissions as $permission) +
+ hasPermissionTo($permission->name) ? 'checked' : '' }}> + +
+ @endforeach +
+
+ @endforeach +
+
+ + +@endsection diff --git a/resources/views/web/admin/access/roles_permissions.blade.php b/resources/views/web/admin/access/roles_permissions.blade.php new file mode 100644 index 0000000..130d562 --- /dev/null +++ b/resources/views/web/admin/access/roles_permissions.blade.php @@ -0,0 +1,34 @@ +@extends('layouts.app') + +@section('content') +
+

Permissões por Role

+ @foreach ($roles as $role) +
+
+ {{ $role->description ?? $role->name }} +
+
+
+ @csrf +
+ @foreach ($permissions as $permission) +
+
+ hasPermissionTo($permission->name) ? 'checked' : '' }}> + +
+
+ @endforeach +
+ +
+
+
+ @endforeach +
+@endsection diff --git a/resources/views/web/admin/access/users.blade.php b/resources/views/web/admin/access/users.blade.php new file mode 100644 index 0000000..da2deb0 --- /dev/null +++ b/resources/views/web/admin/access/users.blade.php @@ -0,0 +1,38 @@ +@extends('layouts.app') + +@section('content') +
+

Roles por Utilizador

+ @foreach ($users as $user) +
+
+ {{ $user->name }} ({{ $user->email }}) +
+
+
+ @csrf +
+ @foreach ($roles as $role) + @if ($role->name === 'admin' && !Auth::user()->hasRole('admin')) + @continue + @endif + +
+
+ hasRole($role->name) ? 'checked' : '' }}> + +
+
+ @endforeach +
+ +
+
+
+ @endforeach +
+@endsection diff --git a/resources/views/web/admin/system.blade.php b/resources/views/web/admin/system.blade.php new file mode 100644 index 0000000..23edfce --- /dev/null +++ b/resources/views/web/admin/system.blade.php @@ -0,0 +1,27 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
Informação Geral do Sistema
+
    +
  • PHP: {{ $php_version }}
  • +
  • PHP SAPI: {{ $php_sapi }}
  • +
  • Laravel: {{ $laravel_version }}
  • +
  • Ambiente: {{ $environment }}
  • +
  • Debug Mode: {{ $debug_mode ? 'On' : 'Off' }}
  • +
  • Base de Dados: {{ $database_driver }}
  • +
  • Versão MySQL: {{ $database_version ?? 'N/A' }}
  • +
  • Redis: {{ $redis_version }}
  • +
  • Redis DB: {{ $redis_database }}
  • +
  • Cache Driver: {{ $cache_driver }}
  • +
  • Queue Driver: {{ $queue_driver }}
  • +
  • Session Driver: {{ $session_driver }}
  • +
  • Memory Limit: {{ $memory_limit }}
  • +
  • Sistema: {{ $system }}
  • +
+
+
+
+@endsection diff --git a/resources/views/web/admin/user/add_edit.blade.php b/resources/views/web/admin/user/add_edit.blade.php new file mode 100644 index 0000000..5b2fc36 --- /dev/null +++ b/resources/views/web/admin/user/add_edit.blade.php @@ -0,0 +1,64 @@ +@extends('layouts.app') + +@section('content') +
+

{{ isset($user) ? 'Editar Utilizador' : 'Registar Novo Utilizador' }}

+ +
+ @csrf + @if(isset($user)) + @method('PUT') + @endif + +
+ + +
+ +
+ + +
+ +
+
+ @forelse ($roles as $role) +
+ roles->pluck('name')->contains($role->name) ? 'checked' : '' }}> + +
+ @empty +

Nenhuma role disponível.

+ @endforelse +
+ +
+ can_login ?? true) ? 'checked' : '' }}> + +
+ + @if (!isset($user)) +

A palavra-passe será gerada automaticamente e enviada por e-mail apenas se o login estiver permitido.

+ @endif + + + Cancelar +
+ + @if (isset($user)) +
+ @csrf + +
+ @endif +
+@endsection diff --git a/resources/views/web/admin/user/index.blade.php b/resources/views/web/admin/user/index.blade.php new file mode 100644 index 0000000..df70ce9 --- /dev/null +++ b/resources/views/web/admin/user/index.blade.php @@ -0,0 +1,60 @@ +{{-- resources/views/web/admin/user/index.blade.php --}} +@extends('layouts.app') + +@section('content') +
+
+

Lista de Utilizadores

+ Novo Utilizador +
+ +
+
+
+ + + + + + + + + + + + @forelse ($users as $user) + + + + + + + + @empty + + + + @endforelse + +
NomeEmailLoginFunçõesAções
{{ $user->name }}{{ $user->email }} + @if ($user->can_login) + Sim + @else + Não + @endif + + @foreach ($user->roles as $role) + {{ $role->name }} + @endforeach + +
+ + + +
+
Nenhum utilizador encontrado.
+
+
+
+
+@endsection diff --git a/resources/views/web/analytical/index.blade.php b/resources/views/web/analytical/index.blade.php new file mode 100644 index 0000000..509f7c9 --- /dev/null +++ b/resources/views/web/analytical/index.blade.php @@ -0,0 +1,249 @@ +@extends('layouts.app') + +@section('content') + +
+
+
+

Painel Analítico

+

Desempenho de contratos e métricas de vendas.

+
+ +
+ +
+
+
+
+ +
+ De + + + Até + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ Limpar +
+
+
+
+ +
+
+
+
+
+
+ Clientes +

{{ $stats['total_clients'] }}

+
+
+
+
+
+
+
+
+
+ Contratos +

{{ $stats['contagem'] }}

+
+
+
+
+ @can('view_contract_summary') +
+
+
+
+
+ Vendas Totais +

{{ number_format($stats['total_vendas'], 0, ',', '.') }}€

+
+
+
+
+
+
+ Comissões +

{{ number_format($stats['total_comissao'], 0, ',', '.') }}€

+
+
+
+
+ Lucro +

{{ number_format($stats['total_lucro'], 0, ',', '.') }}€

+
+
+
+
+
+ @endcan +
+ + @can('view_contract_summary') +
+
+
+
+
Tendência de Crescimento
+ Mensal +
+
+ +
+
+
+
+
+
Mix por Tipo de Cliente
+
+ +
+
+
+
+ @endcan +
+ +@can('view_contract_summary') + + +@endcan +@endsection diff --git a/resources/views/web/clients/create/add.blade.php b/resources/views/web/clients/create/add.blade.php new file mode 100644 index 0000000..3a2e7ec --- /dev/null +++ b/resources/views/web/clients/create/add.blade.php @@ -0,0 +1,24 @@ +@extends('layouts.app') +@section('content') +
+
+
+
+
+

Escolha o Tipo de Cliente

+
+
+

Selecione o tipo de cliente para prosseguir.

+
+ @foreach ($clientTypes as $type) + + {{ $type->description }} + + @endforeach +
+
+
+
+
+
+@stop diff --git a/resources/views/web/clients/create/form.blade.php b/resources/views/web/clients/create/form.blade.php new file mode 100644 index 0000000..b531aac --- /dev/null +++ b/resources/views/web/clients/create/form.blade.php @@ -0,0 +1,90 @@ +@extends('layouts.app') +@section('content') +
+
+
+
+
+ Criar Cliente - {{ ucfirst($type->description) }} +
+
+
+ @csrf + +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+ + + + +
+
+
+
+
+
+ + +@stop diff --git a/resources/views/web/clients/detail.blade.php b/resources/views/web/clients/detail.blade.php new file mode 100644 index 0000000..54fcdba --- /dev/null +++ b/resources/views/web/clients/detail.blade.php @@ -0,0 +1,56 @@ +@extends('layouts.app') +@section('content') +
+ +
+
+
+ +
+
+
+ @csrf +
+ + +
+ @include('web.clients.detail.info') +
+ + +
+ @include('web.clients.detail.contract') +
+ +
+
+ +
+
+
+
+
+
+@endsection diff --git a/resources/views/web/clients/detail/contract.blade.php b/resources/views/web/clients/detail/contract.blade.php new file mode 100644 index 0000000..a08970b --- /dev/null +++ b/resources/views/web/clients/detail/contract.blade.php @@ -0,0 +1,36 @@ +
+ +
+ + + + Adicionar Contrato + +
+ +
+ @foreach($contractsByStatus as $statusName => $contracts) +
+ @include('web.clients.detail.listContracts', ['contracts' => $contracts]) +
+ @endforeach +
+
diff --git a/resources/views/web/clients/detail/info.blade.php b/resources/views/web/clients/detail/info.blade.php new file mode 100644 index 0000000..fb2b7d3 --- /dev/null +++ b/resources/views/web/clients/detail/info.blade.php @@ -0,0 +1,71 @@ +
+
+ Cliente {{ $client->clientType->description }} +
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+
diff --git a/resources/views/web/clients/detail/listContracts.blade.php b/resources/views/web/clients/detail/listContracts.blade.php new file mode 100644 index 0000000..3bc1c68 --- /dev/null +++ b/resources/views/web/clients/detail/listContracts.blade.php @@ -0,0 +1,73 @@ + + +
+ @foreach($contracts as $contract) +
+
+ +
+
    +
  • + 🔌 Fornecimento
    + {{ strtoupper($contract->supply_type) }} +
  • + +
  • + + @if ($contract->supply_type === 'cpe') + ⚡ Escalão de Potência + @elseif ($contract->supply_type === 'cui') + 🏢 Tipo de Instalação + @else + 📐 Informação Técnica + @endif +
    + + @if ($contract->supply_type === 'cpe') + {{ $contract->powerTier->name ?? 'N/A' }} + @elseif ($contract->supply_type === 'cui') + {{ $contract->cuiTier->name ?? 'N/A' }} + @else + N/A + @endif + +
  • + + @can('view_contract_summary') +
  • + 💶 Valor Contratual
    + {{ number_format($contract->contract_value, 2, ',', '.') }}€ +
  • + +
  • + 📈 Lucro
    + {{ number_format($contract->profit_value, 2, ',', '.') }}€ +
  • + +
  • + ↩️ Chargeback
    + {{ $contract->chargeback_value !== null ? number_format($contract->chargeback_value, 2, ',', '.') . '€' : '—' }} +
  • + @endcan + +
  • + 📅 Data do Contrato
    + {{ $contract->contract_date ? \Carbon\Carbon::parse($contract->contract_date)->format('d/m/Y') : '—' }} +
  • + +
  • + ⏳ Renovação
    + {{ $contract->validity ? \Carbon\Carbon::parse($contract->validity)->format('d/m/Y') : '—' }} +
  • +
+
+
+
+ @endforeach +
diff --git a/resources/views/web/clients/detail/payment.blade.php b/resources/views/web/clients/detail/payment.blade.php new file mode 100644 index 0000000..2d17a1f --- /dev/null +++ b/resources/views/web/clients/detail/payment.blade.php @@ -0,0 +1,24 @@ +
+
+ Métodos de Pagamento Disponiveis + {{-- --}} +
+
+ @foreach ($paymentMethods as $payMethod ) +
+
+ {!! $payMethod->icon !!} +
+
{{ $payMethod->description }}
+
+
+
+ id === $client->payment_type_id) + checked + @endif> +
+
+ @endforeach +
+
diff --git a/resources/views/web/clients/detail/statistics.blade.php b/resources/views/web/clients/detail/statistics.blade.php new file mode 100644 index 0000000..365e5d9 --- /dev/null +++ b/resources/views/web/clients/detail/statistics.blade.php @@ -0,0 +1,110 @@ +
+
+
+
+
+
Número de Contratos
+
152
+
+
+
+
+
+
+
Contratos Ativos
+
97
+
+
+
+
+
+
+
Pagamentos em atraso
+
+ 245.00€ +
+
+
+
+
+
+
+
Total de Pagamentos Realizados
+
+ 3,560.00€ +
+
+
+
+
+ +
+
+
+
+
Contratos com Pagamento em Falta
+
13
+
+
+
+
+ + +
+
+
+
Contratos por Status
+
+ +
+
+
+
+
+
Distribuição de Pagamentos
+
+ +
+
+
+
+
+ + + + + diff --git a/resources/views/web/clients/filtersList.blade.php b/resources/views/web/clients/filtersList.blade.php new file mode 100644 index 0000000..0abd001 --- /dev/null +++ b/resources/views/web/clients/filtersList.blade.php @@ -0,0 +1,62 @@ +
+
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + + @if(!empty($clientTypes)) +
+ +
+ + +
+
+ @endif + +
+ + + Limpar + +
+
+
diff --git a/resources/views/web/clients/list.blade.php b/resources/views/web/clients/list.blade.php new file mode 100644 index 0000000..3260620 --- /dev/null +++ b/resources/views/web/clients/list.blade.php @@ -0,0 +1,130 @@ +@extends('layouts.app') +@section('content') +
+
+
+
+ Lista de Clientes + Adicionar Cliente +
+
+ + + +
+
+ @include('web.clients.filtersList') +
+
+ +
+ + + + + + + + + + + + @forelse($clients as $client) + + + + + + + + + + + + @empty + + + + @endforelse + +
NomeMoradaNIFEmailAções
+ + {{ Str::limit($client->name, 25) }} + + + {{ Str::limit($client->address, 30) ?? '—' }} + + + {{ $client->tax_number ?? '—' }} + + + + {{ $client->email ?? '—' }} + + +
+ + + + + +
+
+ Nenhum cliente encontrado. +
+
+ +
+ {{ $clients->links() }} +
+
+
+
+
+ + +@stop diff --git a/resources/views/web/contract/add_edit.blade.php b/resources/views/web/contract/add_edit.blade.php new file mode 100644 index 0000000..4542681 --- /dev/null +++ b/resources/views/web/contract/add_edit.blade.php @@ -0,0 +1,639 @@ +@extends('layouts.app') + +@section('content') +
+
+ + {{-- Botões de ação no topo --}} + @if(isset($contract)) + + @endif + +
+
+
+

+ + {{ isset($contract) ? 'Editar Contrato' : 'Criar Novo Contrato' }} +

+
+ +
+
+ @csrf + @if(isset($contract)) + @method('PUT') + @endif + + {{-- Cliente --}} +
+
+ + Selecionar Cliente +
+
+ + + + Digite pelo menos 2 caracteres para pesquisar. +
+
+ + {{-- Financeira --}} + @can('view_contract_summary') +
+
+ + Informação Financeira +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ + paid ?? false) ? 'checked' : '' }}> + +
+
+ + chargeback ?? false) ? 'checked' : '' }}> + +
+
+ +
+ + {{-- Parcelamento --}} +
+
+ installments->count() > 0 ? 'checked' : '') }}> + +
+ + +
+
+
+ @endcan + + {{-- Informações Gerais --}} +
+
+ + Informações Gerais +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+
+ + {{-- Características Técnicas --}} +
+
+ + Características Técnicas +
+
+
+ {{-- CPE AREA --}} +
+ + +
+ {{-- CUI AREA --}} +
+ + +
+ +
+ + +
+
+
+
+ + + {{-- Método de Pagamento --}} +
+
+ + Método de Pagamento +
+
+
+
+ + + @error('payment_method_id') +
{{ $message }}
+ @enderror +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + {{-- Datas do Contrato --}} +
+
+ + Datas do Contrato +
+
+
+ {{-- Data de Contrato --}} +
+ +
+ + +
+
+ + {{-- Data de Ativação --}} +
+ +
+ + +
+
+ + {{-- Data de Renovação --}} +
+ +
+ + +
+
+ + {{-- Data de Renovação --}} +
+ +
+ + +
+
+
+
+
+ + {{-- Outras Informações --}} +
+
+ + Outras Informações +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+ + {{-- Notas --}} +
+
+ + Notas +
+
+ +
+
+ + {{-- Botões --}} +
+ + Cancelar + + +
+
+
+
+
+
+
+ +@endsection diff --git a/resources/views/web/contract/detail.blade.php b/resources/views/web/contract/detail.blade.php new file mode 100644 index 0000000..f576bd6 --- /dev/null +++ b/resources/views/web/contract/detail.blade.php @@ -0,0 +1,136 @@ +@extends('layouts.app') + +@section('content') + + +
+ + +
+
+ + @can('view_contract_summary') +
+
+

Resumo Financeiro (Gerência)

+
+
+
+
+
Lucro
+

{{ number_format($profit, 2, ',', '.') }} €

+
+
+
+
+
+
+
Total Recebido
+

{{ number_format($totalReceived, 2, ',', '.') }} €

+
+
+
+
+
+
+
Total Pendente
+

{{ number_format($totalPending, 2, ',', '.') }} €

+
+
+
+
+
+
+ @endcan + + +
+
Informações do Contrato
+
+
+ @can('view_contract_summary') +

PVP: {{ number_format($contract->pvp, 2, ',', '.') }} €

+

NET: {{ number_format($contract->net, 2, ',', '.') }} €

+ @endcan +

Potência: {{ $contract->power }} kW

+

Consumo Anual: {{ $contract->annual_consumption }} kW

+

Escalão: {{ $contract->tier }}

+
+
+

Tipo de Contrato: {{ $contract->contractType->description }}

+

Validade: {{ $contract->validity ? \Carbon\Carbon::parse($contract->validity)->format('d/m/Y') : '—' }}

+

Fim de Contrato: {{ $contract->contract_end_date ? \Carbon\Carbon::parse($contract->contract_end_date)->format('d/m/Y') : '—' }}

+

Data de Ativação: {{ $contract->activation_date ? \Carbon\Carbon::parse($contract->activation_date)->format('d/m/Y') : '—' }}

+

Fornecedor Anterior: {{ $contract->previous_supplier }}

+

Status: {{ $contract->status->description }}

+
+
+

Notas: {{ $contract->notes }}

+
+
+
+
+ + @can('view_contract_summary') +
+ +
+
Histórico de Pagamentos
+
+ @if($contract->payments->count()) +
+ + + + + + + + + + + + @foreach($contract->payments as $payment) + + + + + + + + @endforeach + +
DataValorPeríodo ReferênciaStatusObservações
{{ $payment->payment_date ? \Carbon\Carbon::parse($payment->payment_date)->format('d/m/Y') : '—' }}{{ number_format($payment->amount, 2, ',', '.') }} €{{ $payment->reference_period }}{{ ucfirst($payment->status) }}{{ $payment->notes }}
+
+ @else +

Nenhum pagamento registado.

+ @endif +
+
+
+ @endcan +
+
+@endsection diff --git a/resources/views/web/contract/history.blade.php b/resources/views/web/contract/history.blade.php new file mode 100644 index 0000000..e458f72 --- /dev/null +++ b/resources/views/web/contract/history.blade.php @@ -0,0 +1,198 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+

+ + Histórico de Renovação - Contrato #{{ $contract->code }} +

+ +
+ +
+ + @can('view_contract_summary') +
+
+
+
Renovações
+
{{ $totals->renewals_count }}
+
+
+
+
+
Total de parcelas
+
{{ $totals->total_installments }}
+
+
+
+
+
Parcelas pagas
+
{{ $totals->paid_installments }}
+
+
+
+
+
Valor contratos
+
{{ number_format($totals->contract_value, 2, ',', '.') }} €
+
+
+
+
+
Comissões
+
{{ number_format($totals->commission_value, 2, ',', '.') }} €
+
+
+
+
+
Lucro
+
{{ number_format($totals->profit_value, 2, ',', '.') }} €
+
+
+
+ @endcan + + @if($histories->isEmpty()) +
+ Nenhuma renovação registrada para este contrato. +
+ @else +
+ + + + + + + + + + + + + + @can('view_contract_summary') + + + + @endcan + + + @role('admin') + + @endrole + + + + @foreach($histories as $history) + + + + + + + + @can('view_contract_summary') + + @endcan + + + + @can('view_contract_summary') + + + + @endcan + + + @role('admin') + @can('view_contract_summary') + + @endcan + @endrole + + @endforeach + + @can('view_contract_summary') + + + + + + + + + @role('admin') + + @endrole + + + @endcan +
Fornecedor AnteriorFornecedor AtualData do ContratoData de AtivaçãoData de RenovaçãoConsumoParcelamentoFixo/IndexadoGO/FIRenovaçãoValor Contrato (€)Comissão (€)Lucro (€)VendedorAçõesSnapshot
{{ $history->previousSupplier->name ?? '-' }}{{ $history->currentSupplier->name ?? '-' }}{{ $history->contract_date ? \Carbon\Carbon::parse($history->contract_date)->format('d/m/Y') : '-' }}{{ $history->activation_date ? \Carbon\Carbon::parse($history->activation_date)->format('d/m/Y') : '-' }}{{ $history->renewal_date ? \Carbon\Carbon::parse($history->renewal_date)->format('d/m/Y') : ($history->validity ? $history->validity->format('d/m/Y') : '-') }}{{ $history->annual_consumption !== null ? number_format($history->annual_consumption, 2, ',', '.') : '-' }} + @if ( intval($history->total_installments) === 0) + - + @else + {{ $history->paid_installments }} / {{ $history->total_installments }} + @endif + {{ $history->contractType->description ?? '-' }}{{ $history->go_ki !== null ? number_format($history->go_ki, 2, ',', '.') : '-' }}{{ $history->renewal_type ?? '-' }}{{ number_format($history->contract_value, 2, ',', '.') }}{{ number_format($history->commission_value, 2, ',', '.') }}{{ number_format($history->profit_value, 2, ',', '.') }}{{ $history->seller->name ?? '-' }} + + + +
+ @csrf + @method('DELETE') + +
+
+ + + +
Totais{{ number_format($totals->contract_value, 2, ',', '.') }} €{{ number_format($totals->commission_value, 2, ',', '.') }} €{{ number_format($totals->profit_value, 2, ',', '.') }} €
+ + +
+ {{ $histories->links('pagination::bootstrap-5') }} +
+
+ + @endif +
+
+
+
+@endsection diff --git a/resources/views/web/contract/history_create.blade.php b/resources/views/web/contract/history_create.blade.php new file mode 100644 index 0000000..a3f2118 --- /dev/null +++ b/resources/views/web/contract/history_create.blade.php @@ -0,0 +1,133 @@ +@extends('layouts.app') + +@section('content') +
+
+
+

Criar registo do histórico

+ + Voltar + +
+
+
+ @csrf +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ @can('view_contract_summary') +
+ + +
+
+ + +
+
+ + +
+
+ +
+ + + +
+
+
+ + +
+
+ + +
+ @endcan +
+ + +
+
+
+ +
+
+
+
+
+@endsection diff --git a/resources/views/web/contract/history_edit.blade.php b/resources/views/web/contract/history_edit.blade.php new file mode 100644 index 0000000..5fe5414 --- /dev/null +++ b/resources/views/web/contract/history_edit.blade.php @@ -0,0 +1,88 @@ +@extends('layouts.app') + +@section('content') +
+
+
+

Editar registo do histórico

+ + Voltar + +
+
+
+ @csrf + @method('PUT') +
+
+ + +
+
+ + +
+
+ + +
+ @can('view_contract_summary') +
+ + +
+
+ + +
+
+ + +
+
+ +
+ + chargeback ?? false) ? 'checked' : '' }}> + +
+
+
+ + +
+
+ + +
+ @endcan +
+ + +
+
+
+ +
+
+
+
+
+@endsection diff --git a/resources/views/web/contract/list.blade.php b/resources/views/web/contract/list.blade.php new file mode 100644 index 0000000..a8f07ab --- /dev/null +++ b/resources/views/web/contract/list.blade.php @@ -0,0 +1,393 @@ +@extends('layouts.app') +@section('content') +
+
+
+
+

+ Gestão de Pontos de Entrega +

+ +
+ +
+
+ + @if (auth()->user()?->hasRole('administracao')) + + @endif +
+ +
+
+ @include('web.contract.listFilters') +
+
+ + @can('view_contract_summary') + + + + @endcan + +

Desloque horizontalmente para consultar todas as colunas.

+
+ + + + + + + + + @can('view_contract_summary') + + + + @endcan + + + + + + + + + + + @can('view_contract_summary') + + @endcan + + @if (auth()->user()?->hasRole('administracao')) + + + @endif + + + + @forelse($contracts as $contract) + + {{-- Client Name --}} + + {{-- Client Type --}} + + + {{-- Seller --}} + + + @can('view_contract_summary') + {{-- PVP --}} + + {{-- Comission --}} + + {{-- Profit --}} + + @endcan + + + + + + + + + + + + + + + + + + @can('view_contract_summary') + + @endcan + + + + @if (auth()->user()?->hasRole('administracao')) + + + @endif + + @empty + + + + @endforelse + +
NomeTipoVendedorPVPComissãoLucroCódigoTipo FornecimentoFornecedorPotência / EscalãoConsumoTipoAtivaçãoRenovaçãoFim de ContratoPagoEstadoAções + +
+ + {{ Str::limit($contract->client->name, 25) }} + + + {{ $contract->client->clientType->description }} + {{ $contract->seller->name ?? '—' }}{{ number_format($contract->contract_value, 2, ',', '.') }}{{ number_format($contract->commission_value, 2, ',', '.') }} + {{ number_format($contract->profit_value, 2, ',', '.') }} + {{ $contract->code }} + @if ($contract->supply_type === 'cpe') + CPE + @elseif ($contract->supply_type === 'cui') + CUI + @else + — + @endif + + {{ $contract->newSupplier->name }} + + @if ($contract->supply_type === 'cpe') + {{ $contract->powerTier->name ?? '—' }} + @elseif ($contract->supply_type === 'cui') + {{ $contract->cuiTier->name ?? '—' }} + @else + — + @endif + + @if ($contract->annual_consumption) + {{ number_format($contract->annual_consumption) }} kWh + @else + — + @endif + + {{ $contract->contractType->description ?? '—' }} + {{ $contract->activation_date ? $contract->activation_date->format('d/m/Y') : '—' }}{{ $contract->validity ? $contract->validity->format('d/m/Y') : '—' }}{{ $contract->contract_end_date ? $contract->contract_end_date->format('d/m/Y') : '—' }} + @if ($contract->paid) + Pago + @else + Não Pago + @endif + + + {{ $contract->status->description ?? '—' }} + + +
+ + + + + + + + + + + + + + + + + +
+
+ +
Nenhum contrato encontrado.
+
+ +
+ {{ $contracts->links() }} +
+
+
+
+
+ + +@stop diff --git a/resources/views/web/contract/listFilters.blade.php b/resources/views/web/contract/listFilters.blade.php new file mode 100644 index 0000000..182867f --- /dev/null +++ b/resources/views/web/contract/listFilters.blade.php @@ -0,0 +1,189 @@ +
+
+
+
Pesquisa de contratos
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+
+
Período
+
+ +
+ +
+ De + + Até + +
+
+ +
+ +
+ De + + Até + +
+
+ +
+ +
+ De + + Até + +
+
+ +
+
+
Responsáveis e apresentação
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + + +
+
+ +
+ + + Limpar + +
+
+
diff --git a/resources/views/web/contract/renew.blade.php b/resources/views/web/contract/renew.blade.php new file mode 100644 index 0000000..f484cf5 --- /dev/null +++ b/resources/views/web/contract/renew.blade.php @@ -0,0 +1,299 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+

+ + Renovar Contrato {{ strtoupper($contract->supply_type) }} +

+
+ +
+ {{-- Informação Atual --}} +
+
+ + Informação Atual +
+
+

Código: {{ $contract->code }}

+

Fornecedor Atual: {{ $contract->newSupplier->name ?? '-' }}

+

Status: {{ $contract->status->description }}

+ @can('view_contract_summary') +

Valor do Contrato: {{ $contract->contract_value }}

+ @endcan +

Data Renovação Atual: {{ $contract->validity ? \Carbon\Carbon::parse($contract->validity)->format('d/m/Y') : '-' }}

+ +
+ + +
+ +
+ + +
+
+
+ + {{-- Formulário de Renovação --}} +
+ @csrf + + {{-- Fornecedor --}} +
+
+ + Fornecedor +
+
+ + +
+
+ + + + {{-- Dados do Contrato --}} +
+
+ + Dados do Contrato +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ + {{-- Financeira --}} + @can('view_contract_summary') +
+
+ + Dados Financeiros da Renovação +
+
+
+ + + + Valor Atual: {{ number_format($contract->contract_value, 2, ',', '.') }} € + + +
+ +
+ + +
+ +
+ +
+ 0.00 € + 0% +
+
+
+
+ @endcan + + {{-- Ações --}} +
+ + Cancelar + + +
+
+
+
+
+
+ + + + + +@endsection diff --git a/resources/views/web/dashboard/partials/contractsTable.blade.php b/resources/views/web/dashboard/partials/contractsTable.blade.php new file mode 100644 index 0000000..511f767 --- /dev/null +++ b/resources/views/web/dashboard/partials/contractsTable.blade.php @@ -0,0 +1,151 @@ +
+ + +
+ @if($contracts->isNotEmpty()) +
+ + + + + + + + + + + + + + + + + @can('view_contract_summary') + + @endcan + + + + + @can('view_contract_summary') + + + + @endcan + + + + + @foreach($contracts as $contract) + + + + + + + + + + + + + + + + + + + + + + + + + @can('view_contract_summary') + + @endcan + + + + + + + + + + @can('view_contract_summary') + + + + @endcan + + @endforeach + +
FornecedorGestorTipo ClienteLUZ / GASPotênciaCódigo ContratoClienteTipologiaTipo ContratoConsumo AnualData InícioData FimData RenovaçãoParcelamentoEstadoIdade ClienteNotasAUTOValorComissãoLucro
+ {{ $contract->newSupplier->name ?? '-' }} + {{ $contract->seller->name ?? '—' }}{{ $contract->client->clientType->description ?? '-' }} + @if($contract->supply_type === 'cpe') + CPE + @elseif($contract->supply_type === 'cui') + CUI + @else - @endif + {{ $contract->powerTier->name ?? '-' }} + + {{ $contract->code }} + + + + {{ $contract->client->name }} + + {{ $contract->typology->description ?? '-' }}{{ $contract->contractType->description ?? '-' }}{{ $contract->annual_consumption ?? '-' }}{{ $contract->contract_date ? \Carbon\Carbon::parse($contract->contract_date)->format('d/m/Y') : '-' }} + @if($contract->contract_date && $contract->validity) + {{ \Carbon\Carbon::parse($contract->contract_date)->addMonths($contract->validity)->format('d/m/Y') }} + @else - @endif + {{ $contract->validity ? \Carbon\Carbon::parse($contract->validity)->format('d/m/Y') : '-' }} + @if($contract->installments->isNotEmpty()) + @php + $total = $contract->installments->count(); + $pagas = $contract->installments->where('paid', 1)->count(); + $pendente = $contract->installments->where('paid', 0)->sum('amount'); + @endphp + + {{ $pagas }}/{{ $total }} + + @if($pendente > 0) +
{{ number_format($pendente, 2, ',', '.') }}€
+ @endif + @else + N/A + @endif +
+ + {{ ucfirst($contract->status->description ?? '-') }} + + + @if($contract->client && $contract->client->created_at) + @php $diff = \Carbon\Carbon::parse($contract->client->created_at)->diff(now()); @endphp + @if ($diff->y > 0) {{ $diff->y }} {{ Str::plural('ano', $diff->y) }} + @elseif ($diff->m > 0) {{ $diff->m }} {{ Str::plural('mês', $diff->m) }} + @else {{ $diff->d }} {{ Str::plural('dia', $diff->d) }} @endif + @else - @endif + + + {{ $contract->notes ?? '-' }} + + {{ isset($contract->auto) ? ($contract->auto ? 'Sim' : 'Não') : '-' }}{{ number_format($contract->contract_value, 2, ',', '.') }}€{{ number_format($contract->commission_value, 2, ',', '.') }}€ + {{ number_format($contract->profit_value, 2, ',', '.') }}€ +
+
+ @else +
+ +

{{ $emptyMessage ?? 'Nenhum contrato encontrado para este período.' }}

+
+ @endif +
+
diff --git a/resources/views/web/lead/add_edit.blade.php b/resources/views/web/lead/add_edit.blade.php new file mode 100644 index 0000000..149f33c --- /dev/null +++ b/resources/views/web/lead/add_edit.blade.php @@ -0,0 +1,115 @@ +@extends('layouts.app') +@section('content') +
+
+
+
+ {{ isset($lead) ? 'Editar Lead' : 'Adicionar Lead' }} +
+
+
+ @csrf + @if(isset($lead)) + @method('PUT') + @endif + + {{-- Nome e Email --}} +
+
+ + +
+
+ + +
+
+ + {{-- Telefone e Estado do Lead --}} +
+
+ + +
+
+ + +
+
+ + {{-- Morada --}} +
+ + +
+ + {{-- Datas de contacto e fim de contrato --}} +
+
+ + +
+
+ + +
+
+ + + {{-- Tipo de contrato --}} +
+ + +
+ + {{-- Código do ponto de entrega --}} +
+ + +
+ + + {{-- Informações de contato adicionais --}} +
+ + +
+ + {{-- Notas --}} +
+ + +
+ + {{-- Botões --}} +
+ Cancelar + +
+
+
+
+
+
+@endsection diff --git a/resources/views/web/lead/list.blade.php b/resources/views/web/lead/list.blade.php new file mode 100644 index 0000000..dafd68d --- /dev/null +++ b/resources/views/web/lead/list.blade.php @@ -0,0 +1,156 @@ +@extends('layouts.app') +@section('content') +
+
+
+
+

+ Gestão de Leads +

+ +
+ +
+ {{-- + +
+
+
+
--}} + +
+ + + + + + + + + + + + + + + + @forelse ($leads as $lead) + + + + + + + + + + + + @empty + + + + @endforelse + +
NomePonto de EntregaEstadoData de ContactoData fim de ContratoEmailTelefoneMorada Ações
{{ $lead->name }}{{ $lead->leadDetail?->delivery_point_code ?? '-' }}{{ $lead->leadStatus->name ?? 'Sem etapa' }}{{ $lead->leadDetail?->contact_date ? \Carbon\Carbon::parse($lead->leadDetail->contact_date)->format('d/m/Y') : '-' }}{{ $lead->leadDetail?->contract_end_date ? \Carbon\Carbon::parse($lead->leadDetail->contract_end_date)->format('d/m/Y') : '-' }}{{ $lead->email ?? '-' }}{{ $lead->phone ?? '-' }}{{ $lead->address ?? '-' }} +
+ + + + + +
+
Nenhum lead encontrado.
+
+ + +
+ {{ $leads->links() }} +
+
+
+
+
+ + +@stop diff --git a/resources/views/web/lead/show.blade.php b/resources/views/web/lead/show.blade.php new file mode 100644 index 0000000..e465f9a --- /dev/null +++ b/resources/views/web/lead/show.blade.php @@ -0,0 +1,21 @@ +@extends('layouts.app') + +@section('content') +
+

Detalhes do Lead

+ +
+
+

ID: {{ $lead->id }}

+

Nome: {{ $lead->name }}

+

Email: {{ $lead->email ?? '-' }}

+

Telefone: {{ $lead->phone ?? '-' }}

+

Estado: {{ $lead->leadStatus->name ?? 'Sem etapa' }}

+

Notas: {{ $lead->notes ?? '-' }}

+

Informações de Contato: {{ $lead->contact_info ?? '-' }}

+
+
+ + Voltar +
+@endsection diff --git a/resources/views/web/resources/contract_status/add_edit.blade.php b/resources/views/web/resources/contract_status/add_edit.blade.php new file mode 100644 index 0000000..002cb93 --- /dev/null +++ b/resources/views/web/resources/contract_status/add_edit.blade.php @@ -0,0 +1,65 @@ +@extends('layouts.app') + +@section('content') +
+
+
+

{{ isset($contractStatus) ? 'Editar Estado de Contrato' : 'Novo Estado de Contrato' }}

+ +
+
+
+ @csrf + @if(isset($contractStatus)) + @method('PUT') + @endif + +
+ + + @error('code') +
{{ $message }}
+ @enderror +
+ +
+ + + @error('description') +
{{ $message }}
+ @enderror +
+ +
+ + +
+ + + +
+ Cancelar + +
+
+
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/contract_status/index.blade.php b/resources/views/web/resources/contract_status/index.blade.php new file mode 100644 index 0000000..978c56e --- /dev/null +++ b/resources/views/web/resources/contract_status/index.blade.php @@ -0,0 +1,58 @@ +@extends('layouts.app') + +@section('content') +
+
+

Estados de Contrato

+ Novo Estado +
+ + @if(session('success')) +
{{ session('success') }}
+ @endif + +
+
+
+ + + + + + + + + + + @forelse ($statuses as $contractStatus) + + + + + + + @empty + + + + @endforelse + +
IDCódigoDescriçãoAções
{{ $contractStatus->id }}{{ $contractStatus->code }}{{ $contractStatus->description }} +
+ + + +
+ @csrf + @method('DELETE') + +
+
+
Nenhum estado encontrado.
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/contract_types/add_edit.blade.php b/resources/views/web/resources/contract_types/add_edit.blade.php new file mode 100644 index 0000000..73aad08 --- /dev/null +++ b/resources/views/web/resources/contract_types/add_edit.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') +
+
+
+

{{ isset($contract_type) ? 'Editar Tipo de Contrato' : 'Novo Tipo de Contrato' }}

+ +
+
+
+ @csrf + @if(isset($contract_type)) + @method('PUT') + @endif + +
+ + + @error('description') +
{{ $message }}
+ @enderror +
+ +
+ Cancelar + +
+
+
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/contract_types/index.blade.php b/resources/views/web/resources/contract_types/index.blade.php new file mode 100644 index 0000000..613df87 --- /dev/null +++ b/resources/views/web/resources/contract_types/index.blade.php @@ -0,0 +1,60 @@ +@extends('layouts.app') + +@section('content') +
+
+

Tipos de Contrato

+ Novo Tipo +
+ +
+
+
+ + + + + + + + + + + @forelse ($types as $type) + + + + + + + @empty + + + + @endforelse + +
IDDescriçãoEstadoAções
{{ $type->id }}{{ $type->description }} + @if ($type->status === 'A') + ● + @else + ● + @endif + +
+ + + +
+ @csrf + @method('DELETE') + +
+
+
Nenhum tipo encontrado.
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/cui_tiers/add_edit.blade.php b/resources/views/web/resources/cui_tiers/add_edit.blade.php new file mode 100644 index 0000000..b9eb5a5 --- /dev/null +++ b/resources/views/web/resources/cui_tiers/add_edit.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.app') + +@section('content') +
+

{{ isset($cuiTier) ? 'Editar Escalão cui' : 'Novo Escalão cui' }}

+ +
+ @csrf + @if (isset($cuiTier)) + @method('PUT') + @endif + +
+ + + @error('name') +
{{ $message }}
+ @enderror +
+ + Cancelar + +
+
+@endsection diff --git a/resources/views/web/resources/cui_tiers/index.blade.php b/resources/views/web/resources/cui_tiers/index.blade.php new file mode 100644 index 0000000..4455c95 --- /dev/null +++ b/resources/views/web/resources/cui_tiers/index.blade.php @@ -0,0 +1,60 @@ +@extends('layouts.app') + +@section('content') +
+
+

Escalões cui

+ Novo Escalão +
+ +
+
+
+ + + + + + + + + + + @forelse ($cuiTiers as $tier) + + + + + + + @empty + + + + @endforelse + +
IDNomeEstadoAções
{{ $tier->id }}{{ $tier->name }} + @if ($tier->status === 'A') + ● + @else + ● + @endif + +
+ + + +
+ @csrf + @method('DELETE') + +
+
+
Nenhum escalão encontrado.
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/payment_methods/add_edit.blade.php b/resources/views/web/resources/payment_methods/add_edit.blade.php new file mode 100644 index 0000000..e9c388c --- /dev/null +++ b/resources/views/web/resources/payment_methods/add_edit.blade.php @@ -0,0 +1,59 @@ +@extends('layouts.app') + +@section('content') +
+
+
+

{{ isset($payment_method) ? 'Editar Método de Pagamento' : 'Novo Método de Pagamento' }}

+ +
+
+
+ @csrf + @if(isset($payment_method)) + @method('PUT') + @endif + +
+ + + @error('name') +
{{ $message }}
+ @enderror +
+ +
+ + + @error('icon') +
{{ $message }}
+ @enderror + Consulta os ícones disponíveis em fontawesome.com/icons +
+ +
+ Cancelar + +
+
+
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/payment_methods/index.blade.php b/resources/views/web/resources/payment_methods/index.blade.php new file mode 100644 index 0000000..3e71e90 --- /dev/null +++ b/resources/views/web/resources/payment_methods/index.blade.php @@ -0,0 +1,62 @@ +@extends('layouts.app') + +@section('content') +
+
+

Métodos de Pagamento

+ Novo Método +
+ +
+
+
+ + + + + + + + + + + + @forelse ($methods as $method) + + + + + + + + @empty + + + + @endforelse + +
IDNomeÍconeEstadoAções
{{ $method->id }}{{ $method->name }} {{ $method->icon }} + @if ($method->status === 'A') + ● + @else + ● + @endif + +
+ + + +
+ @csrf + @method('DELETE') + +
+
+
Nenhum método encontrado.
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/power_tiers/add_edit.blade.php b/resources/views/web/resources/power_tiers/add_edit.blade.php new file mode 100644 index 0000000..05e5a5a --- /dev/null +++ b/resources/views/web/resources/power_tiers/add_edit.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') +
+
+
+

{{ isset($power_tier) ? 'Editar Potência' : 'Nova Potência' }}

+ +
+
+
+ @csrf + @if(isset($power_tier)) + @method('PUT') + @endif + +
+ + + @error('name') +
{{ $message }}
+ @enderror +
+ +
+ Cancelar + +
+
+
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/power_tiers/index.blade.php b/resources/views/web/resources/power_tiers/index.blade.php new file mode 100644 index 0000000..8f696e0 --- /dev/null +++ b/resources/views/web/resources/power_tiers/index.blade.php @@ -0,0 +1,60 @@ +@extends('layouts.app') + +@section('content') +
+
+

Potências

+ Nova Potência +
+ +
+
+
+ + + + + + + + + + + @forelse ($tiers as $tier) + + + + + + + @empty + + + + @endforelse + +
IDNomeEstadoAções
{{ $tier->id }}{{ $tier->name }} + @if ($tier->status === 'A') + ● + @else + ● + @endif + +
+ + + +
+ @csrf + @method('DELETE') + +
+
+
Nenhuma potência encontrada.
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/suppliers/add_edit.blade.php b/resources/views/web/resources/suppliers/add_edit.blade.php new file mode 100644 index 0000000..f412901 --- /dev/null +++ b/resources/views/web/resources/suppliers/add_edit.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') +
+

{{ isset($supplier) ? 'Editar Fornecedor' : 'Novo Fornecedor' }}

+ + @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + +
+ @csrf + @if (isset($supplier)) + @method('PUT') + @endif + +
+ + +
+ +
+ + +
+ + + + Cancelar +
+
+@endsection diff --git a/resources/views/web/resources/suppliers/index.blade.php b/resources/views/web/resources/suppliers/index.blade.php new file mode 100644 index 0000000..6b419d0 --- /dev/null +++ b/resources/views/web/resources/suppliers/index.blade.php @@ -0,0 +1,68 @@ +@extends('layouts.app') + +@section('content') +
+
+

Fornecedores

+ Novo Fornecedor +
+ +
+
+
+ + + + + + + + + + + + @forelse ($suppliers as $supplier) + + + + + + + + @empty + + + + @endforelse + +
IDNomeCorEstadoAções
{{ $supplier->id }}{{ $supplier->name }} + @if ($supplier->color) +     + @else + — + @endif + + @if ($supplier->status === 'A') + ● + @else + ● + @endif + +
+ + + +
+ @csrf + @method('DELETE') + +
+
+
Nenhum fornecedor encontrado.
+
+
+
+
+@endsection diff --git a/resources/views/web/resources/typology/add_edit.blade.php b/resources/views/web/resources/typology/add_edit.blade.php new file mode 100644 index 0000000..eb4559c --- /dev/null +++ b/resources/views/web/resources/typology/add_edit.blade.php @@ -0,0 +1,45 @@ +@extends('layouts.app') + +@section('content') +
+
+
+

{{ isset($typology) ? 'Editar Tipologia' : 'Nova Tipologia' }}

+ +
+
+
+ @csrf + @if(isset($typology)) + @method('PUT') + @endif + +
+ + + @error('description') +
{{ $message }}
+ @enderror +
+ +
+ Cancelar + +
+
+
+
+ +
+
+
+@endsection diff --git a/resources/views/web/resources/typology/index.blade.php b/resources/views/web/resources/typology/index.blade.php new file mode 100644 index 0000000..4be50da --- /dev/null +++ b/resources/views/web/resources/typology/index.blade.php @@ -0,0 +1,60 @@ +@extends('layouts.app') + +@section('content') +
+
+

Tipologias

+ Nova Tipologia +
+ +
+
+
+ + + + + + + + + + + @forelse ($typologies as $typology) + + + + + + + @empty + + + + @endforelse + +
IDDescriçãoEstadoAções
{{ $typology->id }}{{ $typology->description }} + @if ($typology->status === 'A') + ● + @else + ● + @endif + +
+ + + +
+ @csrf + @method('DELETE') + +
+
+
Nenhuma tipologia encontrada.
+
+
+
+
+@endsection diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php new file mode 100644 index 0000000..eb1dcae --- /dev/null +++ b/resources/views/welcome.blade.php @@ -0,0 +1,163 @@ + + + + + + + Laravel + + + + + + + + + + + + diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 0000000..323fa8e --- /dev/null +++ b/routes/api.php @@ -0,0 +1,75 @@ +middleware('throttle:10,1'); +Route::post('password/email', [AuthController::class, 'sendResetLink'])->middleware('throttle:5,1'); +Route::post('password/reset', [AuthController::class, 'resetPassword'])->middleware('throttle:5,1'); + +Route::middleware(['auth:sanctum', \App\Http\Middleware\EnsureApiUser::class])->group(function () { + Route::post('logout', [AuthController::class, 'logout']); + Route::post('refresh', [AuthController::class, 'refresh']); + Route::get('check-token', [AuthController::class, 'checkToken']); + Route::get('me', [AuthController::class, 'user']); + Route::get('dashboard', [DashboardController::class, 'index']); + Route::get('analytics', [DashboardController::class, 'analytics'])->middleware('role:administracao'); + + Route::post('user/pin', [UserController::class, 'savePin']); + Route::post('user/check-pin', [UserController::class, 'checkPin'])->middleware('throttle:10,1'); + + Route::prefix('clients')->group(function () { + Route::get('options', [ClientController::class, 'options']); + Route::get('search/name', [ClientController::class, 'searchName']); + Route::post('search/id', [ClientController::class, 'searchID']); + Route::get('{id}/detail', [ClientController::class, 'detail'])->whereNumber('id'); + }); + Route::apiResource('clients', ClientController::class)->parameters(['clients' => 'id'])->whereNumber('id'); + + Route::prefix('contracts')->group(function () { + Route::get('options', [ContractController::class, 'options']); + Route::get('export', [ContractController::class, 'export'])->middleware('can:view_contract_summary'); + Route::delete('bulk', [ContractController::class, 'bulkDestroy']); + Route::get('{id}/edit', [ContractController::class, 'edit'])->whereNumber('id'); + Route::get('{id}/renew', [ContractController::class, 'renewalOptions'])->whereNumber('id'); + Route::post('{id}/renew', [ContractController::class, 'renew'])->whereNumber('id'); + Route::get('{id}/history', [ContractController::class, 'history'])->whereNumber('id'); + Route::get('{id}/history/{historyId}', [ContractController::class, 'showHistory'])->whereNumber(['id', 'historyId']); + Route::put('{id}/history/{historyId}', [ContractController::class, 'updateHistory'])->whereNumber(['id', 'historyId']); + Route::delete('{id}/history/{historyId}', [ContractController::class, 'destroyHistory'])->whereNumber(['id', 'historyId']); + }); + Route::apiResource('contracts', ContractController::class)->parameters(['contracts' => 'id'])->whereNumber('id'); + + Route::get('leads/options', [LeadController::class, 'options']); + Route::put('leads/{id}/convert', [LeadController::class, 'convert'])->whereNumber('id'); + Route::apiResource('leads', LeadController::class)->parameters(['leads' => 'id'])->whereNumber('id'); + + Route::middleware('role:admin')->group(function () { + Route::get('users/options', [UserController::class, 'options']); + Route::post('users/{user}/password-reset', [UserController::class, 'sendPasswordResetLink'])->whereNumber('user'); + Route::apiResource('users', UserController::class)->whereNumber('user'); + + Route::prefix('admin')->group(function () { + Route::get('info', [AdminController::class, 'info']); + Route::get('phpinfo', [AdminController::class, 'phpInfo']); + Route::post('runMigrations', [AdminController::class, 'runMigrations']); + Route::post('testEmail', [AdminController::class, 'testEmail'])->middleware('throttle:5,1'); + Route::get('access/roles-permissions', [AccessController::class, 'roles']); + Route::post('access/roles/{role}/permissions', [AccessController::class, 'updatePermissions'])->whereNumber('role'); + Route::get('access/users', [AccessController::class, 'users']); + Route::post('access/users/{user}/roles', [AccessController::class, 'updateRoles'])->whereNumber('user'); + }); + }); + + Route::middleware('can:manage_resources')->prefix('resources')->group(function () { + $resources = 'power_tiers|contract_types|payment_methods|typologies|cui_tiers|suppliers|contract-statuses'; + Route::get('{resource}', [ResourceController::class, 'index'])->where('resource', $resources); + Route::post('{resource}', [ResourceController::class, 'store'])->where('resource', $resources); + Route::get('{resource}/{id}', [ResourceController::class, 'show'])->where('resource', $resources)->whereNumber('id'); + Route::put('{resource}/{id}', [ResourceController::class, 'update'])->where('resource', $resources)->whereNumber('id'); + Route::delete('{resource}/{id}', [ResourceController::class, 'destroy'])->where('resource', $resources)->whereNumber('id'); + }); +}); \ No newline at end of file diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 0000000..57843b8 --- /dev/null +++ b/routes/console.php @@ -0,0 +1,11 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 0000000..80f1394 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,151 @@ +group(function () { + // API login + Route::get('login', [ApiLoginController::class, 'showLoginForm'])->name('login'); + Route::post('login', [ApiLoginController::class, 'login'])->middleware('throttle:10,1')->name('login.post'); + Route::post('logout', [ApiLoginController::class, 'logout'])->name('logout'); + + // Password reset + Route::get('password/reset', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('password.request'); + Route::post('password/email', [ForgotPasswordController::class, 'sendResetLinkEmail'])->middleware('throttle:5,1')->name('password.email'); + Route::get('password/reset/{token}', [ResetPasswordController::class, 'showResetForm'])->name('password.reset'); + Route::post('password/reset', [ResetPasswordController::class, 'reset'])->middleware('throttle:5,1')->name('password.update'); +}); + +/** + * ---------------------------------------------------------- + * Private routes (only for authenticated API users) + * ---------------------------------------------------------- + */ +Route::middleware(['web', 'auth.session'])->group(function () { + + // Home/Dashboard + Route::get('/', [HomeController::class, 'index'])->name('home'); + + // Users (PIN management) + Route::prefix('user')->name('user.')->group(function () { + Route::post('pin', [UserController::class, 'savePin'])->name('pin.save'); + Route::post('check-pin', [UserController::class, 'checkPin'])->middleware('throttle:10,1')->name('checkPin'); + }); + + // Contracts + Route::prefix('contract')->name('contract.')->group(function () { + Route::get('list', [ContractController::class, 'index'])->name('list'); + Route::get('add', [ContractController::class, 'create'])->name('add'); + Route::post('store', [ContractController::class, 'store'])->name('store'); + Route::get('{id}/edit', [ContractController::class, 'edit'])->name('edit'); + Route::put('{id}/update', [ContractController::class, 'update'])->name('update'); + Route::get('{id}/renew', [ContractController::class, 'renewForm'])->name('renew.form'); + Route::post('{id}/renew', [ContractController::class, 'renew'])->name('renew'); + Route::get('{id}/history', [ContractController::class, 'history'])->name('history'); + Route::get('{id}/history/create', [ContractController::class, 'createHistory'])->name('history.create'); + Route::post('{id}/history', [ContractController::class, 'storeHistory'])->name('history.store'); + Route::get('{id}/history/{historyId}/edit', [ContractController::class, 'editHistory'])->name('history.edit'); + Route::put('{id}/history/{historyId}', [ContractController::class, 'updateHistory'])->name('history.update'); + Route::delete('{id}/history/{historyId}', [ContractController::class, 'destroyHistory'])->name('history.destroy'); + Route::get('/contracts/export', [ContractController::class, 'export'])->middleware('can:view_contract_summary')->name('export'); + Route::delete('bulk', [ContractController::class, 'bulkDestroy'])->name('bulk.destroy'); + Route::delete('{id}', [ContractController::class, 'destroy'])->name('destroy'); + }); + + // Leads + Route::prefix('lead')->name('lead.')->group(function () { + Route::get('/', [LeadController::class, 'list'])->name('list'); + Route::get('/create', [LeadController::class, 'create'])->name('create'); + Route::post('/', [LeadController::class, 'store'])->name('store'); + Route::get('/{id}', [LeadController::class, 'show'])->name('show'); + Route::get('/{id}/edit', [LeadController::class, 'edit'])->name('edit'); + Route::put('/{id}', [LeadController::class, 'update'])->name('update'); + Route::put('/{id}/convert', [LeadController::class, 'convert'])->name('convert'); + Route::delete('/{id}', [LeadController::class, 'destroy'])->name('destroy'); + }); + + // Clients + Route::prefix('client')->name('client.')->group(function () { + Route::get('list', [ClientController::class, 'list'])->name('list'); + Route::get('add', [ClientController::class, 'add'])->name('add'); + Route::get('create/{type}', [ClientController::class, 'add2step'])->name('create'); + Route::post('store', [ClientController::class, 'store'])->name('store'); + Route::get('detail/{id}', [ClientController::class, 'detail'])->name('detail'); + Route::post('detail/{id}', [ClientController::class, 'update'])->name('update'); + Route::delete('/{id}', [ClientController::class, 'destroy'])->name('destroy'); + }); + + // Admin - Roles & Permissions + Route::middleware('role:admin')->prefix('admin/access')->name('admin.access.')->group(function () { + Route::get('/roles-permissions', [RolePermissionController::class, 'index'])->name('roles-permissions'); + Route::post('/roles/{role}/permissions', [RolePermissionController::class, 'updatePermissions'])->name('roles.update-permissions'); + Route::get('/users', [UserAccessController::class, 'index'])->name('users'); + Route::post('/users/{user}/roles', [UserAccessController::class, 'updateRoles'])->name('users.update-roles'); + }); + + // Analytical + Route::middleware('role:administracao')->prefix('Analytical')->name('Analytical.')->group(function () { + Route::get('/', [AnalyticalController::class, 'index'])->name('index'); + }); + + // User management + Route::middleware('role:admin')->prefix('users')->name('users.')->group(function () { + Route::get('/', [UserController::class, 'index'])->name('index'); + Route::get('/create', [UserController::class, 'create'])->name('create'); + Route::post('/', [UserController::class, 'store'])->name('store'); + Route::post('/{user}/password-reset', [UserController::class, 'sendPasswordResetLink'])->name('password-reset'); + Route::get('/{user}/edit', [UserController::class, 'edit'])->name('edit'); + Route::put('/{user}', [UserController::class, 'update'])->name('update'); + Route::delete('/{user}', [UserController::class, 'destroy'])->name('destroy'); + }); + + // Admin-only routes + Route::middleware('role:admin')->prefix('admin')->name('admin.')->group(function () { + Route::get('info', [AdminController::class, 'main'])->name('info'); + Route::get('phpinfo', [AdminController::class, 'phpInfo'])->name('phpinfo'); + }); + + // AJAX utility routes + Route::prefix('utils.ajax')->name('utils.ajax.')->group(function () { + Route::get('clients/search/name', [ClientController::class, 'searchName'])->name('clients.search.name'); + Route::post('clients/search/id', [ClientController::class, 'searchID'])->name('clients.search.id'); + }); + + // Resource management + Route::middleware('can:manage_resources')->group(function () { + Route::resource('power_tiers', PowerTierController::class); + Route::resource('contract_types', ContractTypeController::class); + Route::resource('payment_methods', PaymentMethodController::class); + Route::resource('typologies', TypologyController::class); + Route::resource('cui_tiers', CuiTierController::class); + Route::resource('suppliers', SupplierController::class); + Route::resource('contract-statuses', ContractStatusController::class); + }); +}); diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..fedb287 --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,4 @@ +* +!private/ +!public/ +!.gitignore diff --git a/storage/app/private/.gitignore b/storage/app/private/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/private/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/storage/framework/.gitignore @@ -0,0 +1,9 @@ +compiled.php +config.php +down +events.scanned.php +maintenance.php +routes.php +routes.scanned.php +schedule-* +services.json diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/Api/ApiEndpointsTest.php b/tests/Api/ApiEndpointsTest.php new file mode 100644 index 0000000..e99eef6 --- /dev/null +++ b/tests/Api/ApiEndpointsTest.php @@ -0,0 +1,222 @@ +get('/api/' . $endpoint)->assertUnauthorized()->assertJsonStructure(['message']); + } + } + + public function test_login_validation_and_invalid_credentials_return_json_errors(): void + { + $this->post('/api/login', [])->assertUnprocessable()->assertJsonValidationErrors(['email', 'password']); + $this->postJson('/api/login', ['email' => 'user@example.com', 'password' => 'wrong'])->assertUnauthorized(); + } + + public function test_login_refresh_check_and_logout_use_real_bearer_tokens(): void + { + Http::preventStrayRequests(); + $login = $this->postJson('/api/login', ['email' => 'user@example.com', 'password' => 'secret123']); + $login->assertOk()->assertJsonPath('user.id', 1); + $token = $login->json('token'); + $this->withToken($token)->getJson('/api/check-token')->assertOk()->assertJsonPath('valid', true); + $this->withToken($token)->postJson('/api/refresh')->assertOk()->assertJsonStructure(['expires_at']); + $this->withToken($token)->postJson('/api/logout')->assertOk()->assertJsonPath('revoked', true); + $this->assertDatabaseCount('personal_access_tokens', 0); + $this->app['auth']->forgetGuards(); + $this->withToken($token)->getJson('/api/check-token')->assertUnauthorized(); + } + + public function test_expired_tokens_and_disabled_users_cannot_login(): void + { + $user = User::findOrFail(1); + $token = $user->createToken('expired', ['*'], now()->subMinute()); + $this->withToken($token->plainTextToken)->getJson('/api/check-token')->assertUnauthorized(); + $user->update(['can_login' => false]); + $this->postJson('/api/login', ['email' => 'user@example.com', 'password' => 'secret123'])->assertUnauthorized(); + $validToken = $user->createToken('disabled', ['*'], now()->addMinutes(20)); + $this->app['auth']->forgetGuards(); + $this->withToken($validToken->plainTextToken)->getJson('/api/check-token')->assertUnauthorized(); + } + + public function test_client_crud_uses_shared_service_and_returns_ids(): void + { + $this->authenticate(); + $created = $this->postJson('/api/clients', $this->clientData())->assertCreated(); + $id = $created->json('client.id'); + $this->assertNotNull($id); + $this->getJson('/api/clients?name=Client')->assertOk()->assertJsonPath('clients.0.id', $id); + $this->getJson('/api/clients?per_page=1')->assertOk()->assertJsonPath('clients.data.0.id', $id)->assertJsonPath('clients.per_page', 1); + $this->getJson('/api/clients/' . $id)->assertOk()->assertJsonPath('id', $id); + $this->putJson('/api/clients/' . $id, array_replace($this->clientData(), ['name' => 'Changed'])) + ->assertOk()->assertJsonPath('client.name', 'Changed'); + $this->deleteJson('/api/clients/' . $id)->assertOk(); + $this->assertDatabaseHas('clients', ['id' => $id, 'status' => 'I']); + $this->getJson('/api/clients')->assertJsonCount(0, 'clients'); + } + + public function test_client_validation_and_missing_record_return_422_and_404(): void + { + $this->authenticate(); + $this->postJson('/api/clients', [])->assertUnprocessable()->assertJsonValidationErrors(['name', 'tax_number']); + $this->getJson('/api/clients/999')->assertNotFound()->assertJsonStructure(['message']); + } + + public function test_lead_conversion_uses_the_business_service(): void + { + $this->authenticate(); + $lead = Clients::create(array_replace($this->clientData(), ['type' => 'lead'])); + $this->putJson('/api/leads/' . $lead->id . '/convert')->assertOk()->assertJsonPath('client.type', 'client'); + $this->assertDatabaseHas('clients', ['id' => $lead->id, 'type' => 'client', 'lead_status_id' => null]); + } + + public function test_financial_values_and_snapshots_are_removed_without_permission(): void + { + $this->authenticate(); + $this->mock(ContractService::class, function ($service) { + $service->shouldReceive('show')->once()->with('1')->andReturn([ + 'contract' => ['id' => 1, 'contract_value' => 100, 'histories' => [['contract_snapshot' => '{"profit_value":100}', 'profit_margin' => 25]]], + 'totalReceived' => 100, + ]); + }); + $response = $this->getJson('/api/contracts/1')->assertOk()->assertJsonPath('contract.id', 1); + $this->assertArrayNotHasKey('contract_value', $response->json('contract')); + $this->assertArrayNotHasKey('contract_snapshot', $response->json('contract.histories.0')); + $this->assertArrayNotHasKey('profit_margin', $response->json('contract.histories.0')); + $this->assertArrayNotHasKey('totalReceived', $response->json()); + $this->getJson('/api/contracts/export')->assertForbidden(); + } + + public function test_financial_values_are_preserved_with_permission(): void + { + $this->authenticate(financial: true); + $this->mock(ContractService::class, function ($service) { + $service->shouldReceive('show')->once()->with('1')->andReturn(['contract' => ['contract_value' => 100]]); + }); + $this->getJson('/api/contracts/1')->assertOk()->assertJsonPath('contract.contract_value', 100); + } + + public function test_analytics_hides_financial_totals_and_series_without_summary_permission(): void + { + $this->authenticate(admin: true); + $this->mock(AnalyticalService::class, function ($service) { + $service->shouldReceive('index')->once()->andReturn([ + 'stats' => ['contagem' => 2, 'total_clients' => 1, 'total_vendas' => 100, 'total_lucro' => 80, 'total_comissao' => 20], + 'vendasMensais' => [['mes' => '2026-10', 'total' => 100]], + 'vendasPorTipo' => [['tipo' => 'Particular', 'total' => 100]], + ]); + }); + $response = $this->getJson('/api/analytics')->assertOk()->assertJsonPath('stats.contagem', 2); + foreach (['total_vendas', 'total_lucro', 'total_comissao'] as $field) { + $this->assertArrayNotHasKey($field, $response->json('stats')); + } + $this->assertArrayNotHasKey('vendasMensais', $response->json()); + $this->assertArrayNotHasKey('vendasPorTipo', $response->json()); + } + + public function test_administration_and_resources_require_permissions(): void + { + $this->authenticate(); + $this->getJson('/api/users')->assertForbidden(); + $this->postJson('/api/admin/runMigrations')->assertForbidden(); + $this->postJson('/api/admin/testEmail', ['email' => 'test@example.com'])->assertForbidden(); + $this->getJson('/api/resources/power_tiers')->assertForbidden(); + } + + public function test_resource_crud_invalidates_the_actual_lookup_cache(): void + { + $this->authenticate(resources: true); + cache()->put('power_tiers', ['stale'], 60); + $response = $this->postJson('/api/resources/power_tiers', ['name' => '3.45'])->assertCreated(); + $id = $response->json('data.id'); + $this->assertNull(cache()->get('power_tiers')); + $this->putJson('/api/resources/power_tiers/' . $id, ['name' => '6.9'])->assertOk()->assertJsonPath('data.name', '6.9'); + $this->deleteJson('/api/resources/power_tiers/' . $id)->assertOk(); + $this->assertDatabaseHas('power_tiers', ['id' => $id, 'status' => 'I']); + $this->getJson('/api/resources/unknown')->assertNotFound(); + } + + public function test_pin_hash_is_never_serialized(): void + { + $user = User::findOrFail(1); + $user->update(['pin' => Hash::make('1234')]); + $this->assertArrayNotHasKey('pin', $user->toArray()); + $this->assertArrayNotHasKey('password', $user->toArray()); + } + + public function test_password_reset_revokes_existing_tokens(): void + { + Notification::fake(); + $user = User::findOrFail(1); + $user->createToken('old'); + $this->postJson('/api/password/email', ['email' => $user->email])->assertOk(); + Notification::assertSentTo($user, \Illuminate\Auth\Notifications\ResetPassword::class); + $token = Password::createToken($user); + $this->postJson('/api/password/reset', [ + 'email' => $user->email, 'token' => $token, 'password' => 'new-secret', 'password_confirmation' => 'new-secret', + ])->assertOk(); + $this->assertTrue(Hash::check('new-secret', $user->fresh()->password)); + $this->assertDatabaseCount('personal_access_tokens', 0); + } + + public function test_updates_without_financial_permission_preserve_values_and_installments(): void + { + $user = $this->authenticate(); + $contract = \App\Models\Contract::create([ + 'client_id' => 1, 'contract_value' => 100, 'commission_value' => 10, 'profit_value' => 85, + 'chargeback' => true, 'chargeback_value' => 5, 'chargeback_date' => '2026-09-01', + ]); + $contract->installments()->create(['installment_number' => 1, 'due_date' => '2026-10-01', 'amount' => 100]); + $request = Mockery::mock(\App\Http\Requests\ContractRequest::class)->makePartial(); + $request->shouldReceive('validated')->andReturn(['notes' => 'Updated', 'contract_value' => 999, 'chargeback_value' => 999]); + $request->setUserResolver(fn () => $user); + app(ContractService::class)->update($request, (string) $contract->id); + $this->assertDatabaseHas('contracts', ['id' => $contract->id, 'contract_value' => 100, 'chargeback_value' => 5, 'notes' => 'Updated']); + $this->assertDatabaseCount('contract_installments', 1); + } + + public function test_real_admin_role_grants_access_to_system_information(): void + { + $role = \Spatie\Permission\Models\Role::create(['name' => 'admin', 'guard_name' => 'web']); + $user = User::findOrFail(1); + $user->assignRole($role); + Sanctum::actingAs($user); + $this->getJson('/api/admin/info')->assertOk()->assertJsonPath('database_driver', 'sqlite'); + $this->getJson('/api/admin/access/roles-permissions')->assertOk()->assertJsonPath('roles.0.name', 'admin'); + $this->getJson('/api/admin/access/users')->assertOk()->assertJsonPath('users.0.id', 1); + } + + public function test_all_api_routes_reference_existing_actions_and_protect_private_operations(): void + { + $public = ['api/login', 'api/password/email', 'api/password/reset']; + foreach (app('router')->getRoutes() as $route) { + if (!str_starts_with($route->uri(), 'api/')) { + continue; + } + [$controller, $method] = explode('@', $route->getAction('controller')); + $this->assertTrue(method_exists($controller, $method), $route->uri()); + if (!in_array($route->uri(), $public, true)) { + $this->assertContains('auth:sanctum', $route->gatherMiddleware(), $route->uri()); + } + } + } +} diff --git a/tests/Browser/BrowserAuthenticationTest.php b/tests/Browser/BrowserAuthenticationTest.php new file mode 100644 index 0000000..644f26b --- /dev/null +++ b/tests/Browser/BrowserAuthenticationTest.php @@ -0,0 +1,58 @@ +get('/login') + ->assertOk() + ->assertViewIs('auth.login') + ->assertSee('name="_token"', false); + + $this->assertStringContainsString('no-store', $response->headers->get('Cache-Control')); + } + + public function test_browser_login_starts_session_and_opens_dashboard_without_internal_http(): void + { + Http::preventStrayRequests(); + $this->mock(HomeService::class, function ($service) { + $service->shouldReceive('index')->once()->andReturn([ + 'clientLabels' => collect(), 'clientData' => collect(), 'activeContracts' => collect(), + 'pendingContracts' => collect(), 'upcomingRenewals' => collect(), + ]); + }); + + $this->post('/login', ['email' => 'user@example.com', 'password' => 'secret123']) + ->assertRedirect(route('home')) + ->assertSessionHas('api_token'); + + $this->get('/') + ->assertOk() + ->assertViewIs('home'); + } + + public function test_invalid_browser_credentials_return_to_login(): void + { + $this->from('/login')->post('/login', ['email' => 'user@example.com', 'password' => 'wrong']) + ->assertRedirect('/login') + ->assertSessionHas('error', 'Credenciais invalidas.'); + } + + public function test_browser_session_with_invalid_api_token_is_invalidated(): void + { + Http::preventStrayRequests(); + $this->actingAs(User::findOrFail(1))->withSession(['api_token' => 'invalid']); + + $this->get('/') + ->assertRedirect(route('login')); + + $this->assertGuest(); + } +} diff --git a/tests/Feature/ContractControllerTotalsTest.php b/tests/Feature/ContractControllerTotalsTest.php new file mode 100644 index 0000000..a34140f --- /dev/null +++ b/tests/Feature/ContractControllerTotalsTest.php @@ -0,0 +1,102 @@ +assertSame(666.66, round($totalMargin, 2)); + } + + public function test_index_totals_are_calculated_only_for_current_page(): void + { + $user = User::factory()->create(); + + $clientType = ClientType::create([ + 'description' => 'Pessoa Física', + 'code' => 'PF', + 'status' => 'A', + ]); + + $client = Clients::create([ + 'name' => 'Cliente totalizador', + 'tax_number' => '123456789', + 'address' => 'Rua Teste', + 'phone' => '912345678', + 'email' => 'cliente@example.com', + 'seller_id' => $user->id, + 'client_type_id' => $clientType->id, + ]); + + $contractType = ContractType::create([ + 'description' => 'Contrato de teste', + 'code' => 'TST', + 'status' => 'A', + ]); + + $status = ContractStatus::create([ + 'description' => 'Ativo', + 'code' => 'ACTIVE', + 'color' => '#00ff00', + ]); + + Contract::create([ + 'client_id' => $client->id, + 'code' => 'TOTAL_SUM_001', + 'contract_type_id' => $contractType->id, + 'status_id' => $status->id, + 'seller_id' => $user->id, + 'supply_type' => 'cpe', + 'contract_value' => 100, + 'commission_value' => 10, + 'profit_value' => 90, + 'contract_date' => '2025-01-01', + 'activation_date' => '2025-01-02', + 'validity' => '2025-12-31', + ]); + + Contract::create([ + 'client_id' => $client->id, + 'code' => 'TOTAL_SUM_002', + 'contract_type_id' => $contractType->id, + 'status_id' => $status->id, + 'seller_id' => $user->id, + 'supply_type' => 'cpe', + 'contract_value' => 50, + 'commission_value' => 5, + 'profit_value' => 45, + 'contract_date' => '2025-01-05', + 'activation_date' => '2025-01-06', + 'validity' => '2025-12-31', + ]); + + $controller = new ContractController(); + $response = $controller->index(new Request([ + 'per_page' => 1, + 'contract_code' => 'TOTAL_SUM_', + ])); + + $data = $response->getData(); + + $this->assertSame(50.0, (float) $data['totalPvp']); + $this->assertSame(5.0, (float) $data['totalCommission']); + $this->assertSame(45.0, (float) $data['totalMargin']); + } +} diff --git a/tests/Feature/ContractPersistenceTest.php b/tests/Feature/ContractPersistenceTest.php new file mode 100644 index 0000000..eeb7d27 --- /dev/null +++ b/tests/Feature/ContractPersistenceTest.php @@ -0,0 +1,98 @@ + $table->decimal('go_ki')->nullable()); + } + + public function test_update_persists_chargeback_and_deducts_it_from_profit(): void + { + $user = $this->authenticate(financial: true); + $contract = Contract::create([ + 'client_id' => 1, + 'contract_value' => 882.32, + 'commission_value' => 588.92, + 'profit_value' => 293.40, + 'go_ki' => 1, + ]); + + $requestData = [ + 'contract_value' => 882.32, + 'commission_value' => 588.92, + 'chargeback_value' => -935.79, + 'chargeback_date' => '2026-09-21', + 'go_ki' => 1, + ]; + $request = $this->contractRequest($requestData, $user); + + app(ContractService::class)->update($request, (string) $contract->id); + + $this->assertDatabaseHas('contracts', [ + 'id' => $contract->id, + 'chargeback' => true, + 'chargeback_value' => -935.79, + 'chargeback_date' => '2026-09-21', + 'profit_value' => -642.39, + ]); + } + + public function test_update_reports_an_error_when_model_save_is_cancelled(): void + { + $user = $this->authenticate(financial: true); + $contract = Contract::create([ + 'client_id' => 1, + 'contract_value' => 100, + 'commission_value' => 10, + 'profit_value' => 90, + 'go_ki' => 1, + ]); + Contract::saving(fn () => false); + + $requestData = [ + 'contract_value' => 100, + 'commission_value' => 10, + 'chargeback' => false, + 'go_ki' => 1, + 'notes' => 'This save must be rejected', + ]; + $request = $this->contractRequest($requestData, $user); + + try { + app(ContractService::class)->update($request, (string) $contract->id); + $this->fail('A cancelled contract save must be reported as an error.'); + } catch (ValidationException $exception) { + $this->assertArrayHasKey('contract', $exception->errors()); + } + + $this->assertDatabaseMissing('contracts', [ + 'id' => $contract->id, + 'notes' => 'This save must be rejected', + ]); + } + + private function contractRequest(array $data, object $user): ContractRequest + { + $request = ContractRequest::create('/contract/1/update', 'PUT', $data); + $request->setUserResolver(fn () => $user); + $prepareForValidation = new \ReflectionMethod(ContractRequest::class, 'prepareForValidation'); + $prepareForValidation->invoke($request); + $requestData = $request->all(); + $rules = array_fill_keys(array_keys($requestData), ['sometimes']); + $request->setValidator(app('validator')->make($requestData, $rules)); + + return $request; + } +} diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..0394b8a --- /dev/null +++ b/tests/Feature/ExampleTest.php @@ -0,0 +1,23 @@ +make(); + + $response = $this->actingAs($user)->get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/RoutesTest.php b/tests/Feature/RoutesTest.php new file mode 100644 index 0000000..709e050 --- /dev/null +++ b/tests/Feature/RoutesTest.php @@ -0,0 +1,51 @@ +assertNotNull($user, "User not found"); + + $authRoutes = [ + 'login', + 'register', + 'password.request', + 'password.email', + 'password.reset', + 'password.update', + 'password.confirm', + 'verification.notice', + 'verification.verify', + 'verification.send', + 'logout', + 'admin.phpinfo' + ]; + + $routes = collect(Route::getRoutes()) + ->filter(fn($route) => in_array('GET', $route->methods())) + ->filter(fn($route) => !str_contains($route->uri(), '{')) + ->filter(fn($route) => !in_array($route->getName(), $authRoutes)) + ->map(fn($route) => $route->uri()); + + foreach ($routes as $uri) { + $response = $this->actingAs($user)->get($uri); + + $this->assertTrue( + $response->getStatusCode() === 200, + "A rota [GET {$uri}] retornou {$response->getStatusCode()} em vez de 200." + ); + } + } +} diff --git a/tests/Support/IsolatedDatabaseTestCase.php b/tests/Support/IsolatedDatabaseTestCase.php new file mode 100644 index 0000000..38653b9 --- /dev/null +++ b/tests/Support/IsolatedDatabaseTestCase.php @@ -0,0 +1,118 @@ +set([ + 'database.default' => 'sqlite', 'database.connections.sqlite.database' => ':memory:', + 'cache.default' => 'array', 'session.driver' => 'array', 'hashing.bcrypt.rounds' => 4, + ]); + DB::purge('sqlite'); + + $permissionsMigration = require base_path('vendor/spatie/laravel-permission/database/migrations/create_permission_tables.php.stub'); + $permissionsMigration->up(); + Schema::create('users', function (Blueprint $table) { + $table->id(); + $table->string('name'); + $table->string('email')->unique(); + $table->string('password'); + $table->string('pin')->nullable(); + $table->boolean('can_login')->default(true); + $table->rememberToken(); + $table->timestamps(); + }); + Schema::create('personal_access_tokens', function (Blueprint $table) { + $table->id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + Schema::create('password_reset_tokens', function (Blueprint $table) { + $table->string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + Schema::create('client_types', function (Blueprint $table) { + $table->id(); + $table->string('description'); + }); + Schema::create('clients', function (Blueprint $table) { + $table->id(); + foreach (['name', 'tax_number', 'address', 'phone', 'email', 'contact_info', 'notes', 'locality'] as $field) { + $table->string($field)->nullable(); + } + $table->unsignedBigInteger('seller_id'); + $table->unsignedBigInteger('client_type_id'); + $table->unsignedBigInteger('lead_status_id')->nullable(); + $table->string('type')->default('client'); + $table->string('status')->default('A'); + $table->timestamps(); + }); + Schema::create('contracts', function (Blueprint $table) { + $table->id(); + $table->unsignedBigInteger('client_id'); + $table->string('notes')->nullable(); + $table->string('delivery_email')->nullable(); + $table->decimal('contract_value')->nullable(); + $table->decimal('commission_value')->nullable(); + $table->decimal('profit_value')->nullable(); + $table->boolean('chargeback')->default(false); + $table->decimal('chargeback_value')->nullable(); + $table->date('chargeback_date')->nullable(); + $table->timestamps(); + }); + Schema::create('contract_installments', function (Blueprint $table) { + $table->id(); + $table->unsignedBigInteger('contract_id'); + $table->integer('installment_number'); + $table->date('due_date'); + $table->decimal('amount'); + $table->boolean('paid')->default(false); + $table->timestamps(); + }); + Schema::create('power_tiers', function (Blueprint $table) { + $table->id(); + $table->string('name'); + $table->string('status')->default('A'); + $table->timestamps(); + }); + User::create(['name' => 'Test User', 'email' => 'user@example.com', 'password' => 'secret123', 'can_login' => true]); + DB::table('client_types')->insert(['id' => 1, 'description' => 'Particular']); + } + + protected function authenticate(bool $financial = false, bool $admin = false, bool $resources = false): User + { + $user = Mockery::mock(User::class)->makePartial(); + $user->forceFill(['id' => 1, 'name' => 'Test User', 'email' => 'user@example.com', 'can_login' => true]); + $user->shouldReceive('can')->with('view_contract_summary')->andReturn($financial); + $user->shouldReceive('hasAnyRole')->andReturn($admin); + $user->shouldReceive('checkPermissionTo')->andReturn(false); + Gate::define('manage_resources', fn () => $resources); + Gate::define('view_contract_summary', fn () => $financial); + Sanctum::actingAs($user); + return $user; + } + + protected function clientData(): array + { + return ['name' => 'Client Test', 'tax_number' => '123456789', 'email' => 'client@example.com', + 'phone' => '912345678', 'address' => 'Rua Teste', 'client_type_id' => 1, 'seller_id' => 1]; + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..fe1ffc2 --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,10 @@ +assertSame('2026-09-24', $this->parseDate('24/09/2026')); + } + + public function test_parse_date_returns_null_for_empty_and_invalid_date(): void + { + $this->assertNull($this->parseDate(null)); + $this->assertNull($this->parseDate('invalid')); + } + + private function parseDate(?string $date): ?string + { + $method = new ReflectionMethod(AnalyticalService::class, 'parseDate'); + + return $method->invoke(new AnalyticalService(), $date); + } +} diff --git a/tests/Unit/ClientRequestTest.php b/tests/Unit/ClientRequestTest.php new file mode 100644 index 0000000..f6b8606 --- /dev/null +++ b/tests/Unit/ClientRequestTest.php @@ -0,0 +1,42 @@ +rules(); + + $this->assertSame('required|digits:9|unique:clients,tax_number', $rules['tax_number']); + $this->assertSame('required|email', $rules['email']); + $this->assertSame('required|string|max:20', $rules['phone']); + $this->assertSame('required|exists:client_types,id', $rules['client_type_id']); + } + + public function test_update_client_request_ignores_current_client_in_tax_number_uniqueness(): void + { + $request = UpdateClientRequest::create('/clients/17', 'PUT'); + $route = new Route('PUT', '/clients/{id}', fn () => null); + $route->bind($request); + $route->setParameter('id', 17); + $request->setRouteResolver(fn () => $route); + + $this->assertSame( + 'required|digits:9|unique:clients,tax_number,17', + $request->rules()['tax_number'] + ); + } + + public function test_client_requests_return_portuguese_validation_messages(): void + { + $this->assertSame('O nome é obrigatório.', (new CreateClientRequest())->messages()['name.required']); + $this->assertSame('O NIF é obrigatório.', (new CreateClientRequest())->messages()['tax_number.required']); + $this->assertSame('O e-mail é obrigatório.', (new UpdateClientRequest())->messages()['email.required']); + } +} diff --git a/tests/Unit/ClientsTest.php b/tests/Unit/ClientsTest.php new file mode 100644 index 0000000..9882034 --- /dev/null +++ b/tests/Unit/ClientsTest.php @@ -0,0 +1,42 @@ +shouldReceive('isPaid')->once()->andReturn(true); + $unpaidCpe = Mockery::mock(CPE::class); + $unpaidCpe->shouldReceive('isPaid')->once()->andReturn(false); + + $client = new Clients(); + $client->setRelation('cpes', new Collection([$paidCpe, $unpaidCpe])); + + $this->assertTrue($client->hasUnpaidCpes()); + } + + public function test_client_without_cpes_or_with_only_paid_cpes_has_no_unpaid_cpes(): void + { + $paidCpe = Mockery::mock(CPE::class); + $paidCpe->shouldReceive('isPaid')->once()->andReturn(true); + + $client = new Clients(); + $client->setRelation('cpes', new Collection([$paidCpe])); + + $this->assertFalse($client->hasUnpaidCpes()); + } +} diff --git a/tests/Unit/ContractControllerTest.php b/tests/Unit/ContractControllerTest.php new file mode 100644 index 0000000..2820d6a --- /dev/null +++ b/tests/Unit/ContractControllerTest.php @@ -0,0 +1,123 @@ +shouldReceive('where')->once()->with('id', 42)->andReturnSelf(); + $query->shouldReceive('where')->once()->with('status_id', 3)->andReturnSelf(); + $query->shouldReceive('whereHas')->once()->with( + 'client', + Mockery::on(function (callable $callback): bool { + $clientQuery = Mockery::mock(Builder::class); + $clientQuery->shouldReceive('where')->once()->with('client_type_id', 7)->andReturnSelf(); + $callback($clientQuery); + return true; + }) + )->andReturnSelf(); + $query->shouldReceive('whereDate')->once()->with('contract_date', '>=', '2026-09-01')->andReturnSelf(); + $query->shouldReceive('orderBy')->once()->with('id', 'desc')->andReturnSelf(); + + $request = Request::create('/contracts', 'GET', [ + 'contract_id' => 42, + 'status' => 3, + 'client_type_id' => 7, + 'validity_from' => '01/09/2026', + ]); + + $this->applyFilters($query, $request); + $this->addToAssertionCount(1); + } + + public function test_iso_date_filters_are_accepted_by_contract_query(): void + { + $query = Mockery::mock(Builder::class); + $query->shouldReceive('whereDate')->once()->with('contract_date', '>=', '2026-01-01')->andReturnSelf(); + $query->shouldReceive('orderBy')->once()->with('id', 'desc')->andReturnSelf(); + + $request = Request::create('/contracts', 'GET', [ + 'validity_from' => '2026-01-01', + ]); + + $this->applyFilters($query, $request); + $this->addToAssertionCount(1); + } + + public function test_invalid_sort_column_uses_activation_date_fallback(): void + { + $query = Mockery::mock(Builder::class); + $query->shouldReceive('orderBy')->once()->with('activation_date', 'desc')->andReturnSelf(); + + $request = Request::create('/contracts', 'GET', [ + 'sort_by' => 'contract_value', + 'order' => 'invalid', + ]); + + $this->applyFilters($query, $request); + $this->addToAssertionCount(1); + } + + public function test_history_update_rules_exclude_financial_fields_without_summary_permission(): void + { + $user = new class { + public function can(string $permission): bool + { + return false; + } + }; + + $request = Request::create('/contracts/1/history/2', 'PUT', [ + 'validity' => '2026-09-24', + 'notes' => 'Atualização sem permissão', + ]); + $request->setUserResolver(fn () => $user); + + $method = new ReflectionMethod(ContractService::class, 'getHistoryUpdateRules'); + $rules = $method->invoke(new ContractService(), $request); + + $this->assertArrayNotHasKey('contract_value', $rules); + $this->assertArrayNotHasKey('commission_value', $rules); + $this->assertArrayNotHasKey('profit_value', $rules); + $this->assertArrayHasKey('notes', $rules); + } + + public function test_edit_options_include_current_legacy_value_without_mutating_cached_options(): void + { + $activeOption = new ContractType(); + $activeOption->id = 1; + $legacyOption = new ContractType(); + $legacyOption->id = 2; + $options = new Collection([$activeOption]); + + $method = new ReflectionMethod(ContractService::class, 'includeCurrentOption'); + $editOptions = $method->invoke(new ContractService(), $options, $legacyOption); + + $this->assertCount(1, $options); + $this->assertCount(2, $editOptions); + $this->assertTrue($editOptions->contains(fn (ContractType $option) => $option->is($legacyOption))); + } + + private function applyFilters(Builder $query, Request $request): void + { + $method = new ReflectionMethod(ContractService::class, '_applyFilters'); + $method->invoke(new ContractService(), $query, $request); + } +} diff --git a/tests/Unit/ContractHistoryTest.php b/tests/Unit/ContractHistoryTest.php new file mode 100644 index 0000000..dde50a6 --- /dev/null +++ b/tests/Unit/ContractHistoryTest.php @@ -0,0 +1,25 @@ + '24/09/2026']); + + $this->assertSame('2026-09-24', $history->getAttributes()['validity']); + } + + public function test_validity_accepts_iso_dates_and_invalid_values_become_null(): void + { + $history = new ContractHistory(['validity' => '2026-09-24']); + $this->assertSame('2026-09-24', $history->getAttributes()['validity']); + + $history->validity = 'invalid'; + $this->assertNull($history->getAttributes()['validity']); + } +} diff --git a/tests/Unit/ContractRequestTest.php b/tests/Unit/ContractRequestTest.php new file mode 100644 index 0000000..f670e4f --- /dev/null +++ b/tests/Unit/ContractRequestTest.php @@ -0,0 +1,70 @@ +setUserResolver(fn () => null); + $rules = $request->rules(); + + $this->assertContains('required', $rules['client_id']); + $this->assertContains('required', $rules['supply_type']); + $this->assertContains('required', $rules['contract_type_id']); + $this->assertContains('required', $rules['status_id']); + $this->assertContains('required', $rules['payment_method_id']); + $this->assertContains('required', $rules['go_ki']); + $this->assertContains('numeric', $rules['go_ki']); + $this->assertContains('in:correio,email', $rules['delivery_method']); + } + + public function test_contract_request_removes_financial_rules_without_summary_permission(): void + { + $user = new class { + public function can(string $permission): bool + { + return false; + } + }; + + $request = new ContractRequest(); + $request->setUserResolver(fn () => $user); + $rules = $request->rules(); + + $this->assertArrayNotHasKey('contract_value', $rules); + $this->assertArrayNotHasKey('commission_value', $rules); + $this->assertArrayNotHasKey('installments.*.amount', $rules); + } + + public function test_contract_request_normalizes_iso_and_portuguese_dates_to_iso(): void + { + $request = ContractRequest::create('/contracts/1', 'PUT', [ + 'contract_date' => '2026-10-12', + 'activation_date' => '12/10/2026', + ]); + + $prepareForValidation = new ReflectionMethod(ContractRequest::class, 'prepareForValidation'); + $prepareForValidation->invoke($request); + + $this->assertSame('2026-10-12', $request->input('contract_date')); + $this->assertSame('2026-10-12', $request->input('activation_date')); + } + + public function test_submitted_chargeback_value_activates_chargeback_flag(): void + { + $request = ContractRequest::create('/contracts/1', 'PUT', [ + 'chargeback_value' => '-935.79', + ]); + + $prepareForValidation = new ReflectionMethod(ContractRequest::class, 'prepareForValidation'); + $prepareForValidation->invoke($request); + + $this->assertTrue($request->boolean('chargeback')); + } +} diff --git a/tests/Unit/ContractScopeTest.php b/tests/Unit/ContractScopeTest.php new file mode 100644 index 0000000..60bcdd5 --- /dev/null +++ b/tests/Unit/ContractScopeTest.php @@ -0,0 +1,33 @@ +shouldReceive('where')->once()->with('type', 'cpe')->andReturnSelf(); + + $this->assertSame($query, (new Contract())->scopeCpe($query)); + } + + public function test_between_dates_scope_applies_only_provided_bounds(): void + { + $query = Mockery::mock(); + $query->shouldReceive('when')->once()->with('2026-09-01', Mockery::type('Closure'))->andReturnSelf(); + $query->shouldReceive('when')->once()->with(null, Mockery::type('Closure'))->andReturnSelf(); + + $this->assertSame($query, (new Contract())->scopeBetweenDates($query, '2026-09-01', null)); + } +} diff --git a/tests/Unit/ContractTest.php b/tests/Unit/ContractTest.php new file mode 100644 index 0000000..b9465c0 --- /dev/null +++ b/tests/Unit/ContractTest.php @@ -0,0 +1,29 @@ + '24/09/2026', + 'contract_date' => '01/10/2026', + 'validity' => '31/12/2026', + ]); + + $this->assertSame('2026-09-24', $contract->getAttributes()['activation_date']); + $this->assertSame('2026-10-01', $contract->getAttributes()['contract_date']); + $this->assertSame('2026-12-31', $contract->getAttributes()['validity']); + } + + public function test_invalid_contract_date_is_stored_as_null(): void + { + $contract = new Contract(['contract_date' => 'not-a-date']); + + $this->assertNull($contract->getAttributes()['contract_date']); + } +} diff --git a/tests/Unit/CpeTest.php b/tests/Unit/CpeTest.php new file mode 100644 index 0000000..bc2353f --- /dev/null +++ b/tests/Unit/CpeTest.php @@ -0,0 +1,46 @@ +shouldReceive('where')->once()->with('status', 'paid')->andReturnSelf(); + $payments->shouldReceive('sum')->once()->with('amount')->andReturn(125.50); + + $cpe = Mockery::mock(CPE::class)->makePartial(); + $cpe->shouldReceive('payments')->once()->andReturn($payments); + + $this->assertSame(125.50, $cpe->totalPaid()); + } + + public function test_cpe_is_paid_when_total_paid_reaches_pvp(): void + { + $cpe = Mockery::mock(CPE::class)->makePartial(); + $cpe->pvp = 100; + $cpe->shouldReceive('totalPaid')->once()->andReturn(100); + + $this->assertTrue($cpe->isPaid()); + } + + public function test_cpe_is_unpaid_when_total_paid_is_below_pvp(): void + { + $cpe = Mockery::mock(CPE::class)->makePartial(); + $cpe->pvp = 100; + $cpe->shouldReceive('totalPaid')->once()->andReturn(99.99); + + $this->assertFalse($cpe->isPaid()); + } +} diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php new file mode 100644 index 0000000..5773b0c --- /dev/null +++ b/tests/Unit/ExampleTest.php @@ -0,0 +1,16 @@ +assertTrue(true); + } +} diff --git a/tests/Unit/LeadDetailTest.php b/tests/Unit/LeadDetailTest.php new file mode 100644 index 0000000..0d5f6af --- /dev/null +++ b/tests/Unit/LeadDetailTest.php @@ -0,0 +1,32 @@ + '24/09/2026', + 'contract_end_date' => '30/09/2026', + ]); + + $this->assertSame('2026-09-24', $lead->getAttributes()['contact_date']); + $this->assertSame('2026-09-30', $lead->getAttributes()['contract_end_date']); + } + + public function test_lead_dates_are_presented_in_form_format(): void + { + $lead = new LeadDetail(); + $lead->setRawAttributes([ + 'contact_date' => '2026-09-24', + 'contract_end_date' => '2026-09-30', + ]); + + $this->assertSame('24/09/2026', $lead->contact_date); + $this->assertSame('30/09/2026', $lead->contract_end_date); + } +} diff --git a/tests/Unit/LeadRequestTest.php b/tests/Unit/LeadRequestTest.php new file mode 100644 index 0000000..1ce3c64 --- /dev/null +++ b/tests/Unit/LeadRequestTest.php @@ -0,0 +1,23 @@ +rules(); + + $this->assertSame('nullable|date_format:d/m/Y', $rules['contact_date']); + $this->assertSame('nullable|date_format:d/m/Y|after_or_equal:contact_date', $rules['contract_end_date']); + $this->assertSame('nullable|in:CPE,CUI', $rules['contract_type']); + } + + public function test_lead_name_is_required(): void + { + $this->assertSame('required|string|max:255', (new LeadRequest())->rules()['name']); + } +} diff --git a/tests/Unit/RenewContractRequestTest.php b/tests/Unit/RenewContractRequestTest.php new file mode 100644 index 0000000..b208b22 --- /dev/null +++ b/tests/Unit/RenewContractRequestTest.php @@ -0,0 +1,58 @@ + '24/09/2026', + 'contract_date' => '01/10/2026', + 'activation_date' => '02/10/2026', + ]); + + $method = new ReflectionMethod($request, 'prepareForValidation'); + $method->invoke($request); + + $this->assertSame('2026-09-24', $request->input('next_due_date')); + $this->assertSame('2026-10-01', $request->input('contract_date')); + $this->assertSame('2026-10-02', $request->input('activation_date')); + } + + public function test_financial_fields_are_not_required_without_financial_access(): void + { + $request = new RenewContractRequest(); + + $this->assertContains('required_if:change_supplier,1', $request->rules()['new_supplier_id']); + $renewalTypeRules = $request->rules()['renewal_type']; + $this->assertContains('required', $renewalTypeRules); + $this->assertInstanceOf(Exists::class, $renewalTypeRules[1]); + $this->assertContains('required', $request->rules()['contract_type_id']); + $this->assertContains('exists:contract_types,id', $request->rules()['contract_type_id']); + $this->assertContains('nullable', $request->rules()['typology_id']); + $this->assertContains('exists:typologies,id', $request->rules()['typology_id']); + $this->assertArrayNotHasKey('amount_paid', $request->rules()); + $this->assertArrayNotHasKey('commission_value', $request->rules()); + } + + public function test_financial_fields_are_validated_with_financial_access(): void + { + $request = new RenewContractRequest(); + $request->setUserResolver(fn () => new class { + public function can(string $ability): bool + { + return $ability === 'view_contract_summary'; + } + }); + + $this->assertContains('required', $request->rules()['amount_paid']); + $this->assertContains('numeric', $request->rules()['amount_paid']); + $this->assertContains('numeric', $request->rules()['commission_value']); + } +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..dbbf333 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,14 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: [ + 'resources/sass/app.scss', + 'resources/js/app.js', + ], + refresh: true, + }), + ], +});

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 literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-Medium.otf b/public/assets/fonts/metropolis/Metropolis-Medium.otf new file mode 100644 index 0000000000000000000000000000000000000000..239d69dc23299efaf89c57c0879b9c18a56919ed GIT binary patch literal 23240 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 literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-MediumItalic.otf b/public/assets/fonts/metropolis/Metropolis-MediumItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..dc3009124cd1a5b5e5e4beaa3705c54173194f3b GIT binary patch literal 24352 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%0D&O!2|c z-2UF(eY+0I8GXbkPE?O8P6V4JtjmJ)97EtZM;2H@c93DyhP1NjA{&O&1jz^c$XW}5 zwGdu|s9Ib0i6 zU|4IOt9j#nyul z-8Zflr7?J)JWDQ(A!o^=x_|dbj0jt`Il<^N z2#6!8@kAMt2w)Rr@y45N2ak)NU%n#jjRV6yf1W#S?$3r<2|$schC8shpCgV+b14Qe zOtw?EGGauJPX5lF+vJ@XZ0PJI#*AOTIX5RWM@)nE5%l~IF-Tq`i$2%*f&Q&Sz}ok< z<%qACI2(&V(i7waEN;!eeC+zAotvYEd-reG*(k!Hj*YU&tOwgUl0@EvRos&|guOfP zv^z!3+$i%CoC}17K?%8u%^`xg4?hxNn_cWF|7}e-wJOF|P&*h-NQt=PlsXmvWw^W-s?{49PgN)+HoPxNM zfPek5xH&~u52T5vieOPGN^tZ_gndlQ!6OkU8VselJ0oMa_!3UFi^&%Naj%dO%+os{S9YfK2TJoSQrk#+*wGViz6~r16ShK?Bn5eWOtEfaIJK*u0MBY^p z!AjtlSwKJ<-p1`a!!oCZ4Fz#Mtt%1<09V<8V%tf)ATw~-jT7O>lX~7s%q@ho`J_JbJ5m*T$&fKrHGAVw$O% z7y$|FUE>2RBO)UJ8a~!ziM2wgch2%{ z8+!|zrp9sb)v10=logJ3v*gOK?cqy{04=C4+!Drv{g)Hic-69e2{5s20p#`XcUI`A zrm*p~Sp!yL(7v*FWk<`lmE9`42j%_iuk1g+1N9eF*+0IA_&vDn30R^1@GE;!X8Eq+ z4?%x<%S!(8{)eaR=6?kI^$K-WzXOk`93y5hh$lbz2lhHE9e4n&bnmTNnk$L@uzfISXk$oH$j z;wxgW!Do3M!rl6O2>yrcbIbi2+~2UjgM*EI_A7kOL;awKdauOUgR90WoD1j19_L)Z zHRPIsP@`TR;2MJS;(Bs^+yJ-_<3@4e+^~O?p_cg&J_eG&CBgMGHyb_)vea^|=F+$= zaAm>U&cCiK)rXj}JeCKVatFTp$*^s>aJVz-ow=gkxwdLJbI%gXSz5)x$?h2j4)<1{l^leBOVgqV_0 z7EZH?EU-oGLTHoPrl5-pA<9}<8*5`^5mW>%f*{JE0vBx}Xp*?vo<5&$ zvz`aInP+L)(@vwW*Q{?Q^VG|zqhGn7QFE!hnRl`1H`t0lxr#Hn6AikkfE~P!I*#-P zj_*x)yoXR^gxrJV9>;YZ8Ar`HMqkEhT+)~6&US|OVh`~z&(dk_20a<)=+gL->@#Fv zV1ycujd@*?q#bEDd_&rUf11v>YJnQ3o1sOv#83^UvHIpQuAcy$(Qp?;36;M{670%wt_nr+^glEy-K*^7nu2-t4f=; MAMyJJ=lc8g2T_PU(f|Me literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-Regular.otf b/public/assets/fonts/metropolis/Metropolis-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..737760b5df73bf4e48e8d17146a574e8deabc80d GIT binary patch literal 23124 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 Ktr*Wz`TKukRV^_9 literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-RegularItalic.otf b/public/assets/fonts/metropolis/Metropolis-RegularItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..14d62bc41c6329eabd574a05dfcc6b64bb2313fd GIT binary patch literal 24236 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 literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-SemiBold.otf b/public/assets/fonts/metropolis/Metropolis-SemiBold.otf new file mode 100644 index 0000000000000000000000000000000000000000..f9889d0a16ede57dd48a1e868ec2782f9d65fbf5 GIT binary patch literal 23480 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 PYN|qwFMt;Q{rCR>Ut5Ut literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-SemiBoldItalic.otf b/public/assets/fonts/metropolis/Metropolis-SemiBoldItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..fdbd016620ce2d82cb2350f770c23191b9bed672 GIT binary patch literal 24284 zcmdSBcU%<7(>UC-voni5xGL))u=XyBm~+k%Oo$0{MnpgfN>)_x%;AFJR75eH7?Gf& zsEAn)42OD#69amB#xtCuhwDXtH3Q!Hz2~0rdH;J^dZwnjy1J)xRaeb`Awvcrdz659 z)U`*?o~}nz1{_1E@*9Lae(mMq*^>|C8zD6GXM|AwUIPdCta!f35usu5Xjjn7XJ~iC z0f@#Gzy%NRY0^BX+MY0kgd%vJ;1}XM?fjbKb_hxR05?C--**!Bkyb&R%CB`GAPn8@ z+#oIoo@)h$M8;+}b>D*!XOECREyOo=8rN_jM4^ii#8BT5|Ae^{mjT!n(n!<7A|gv? zb*&2JRr7a6XdvPm0;HA+Ld>bY~zp-#^{>bYDM*zl?P7<~kJ% zN#3KeI#&Ah{}S}IO7H0oA{Pi9{v-T}TzE5Ts{4GOjjHJWuOS?0AEWkvh5M)qXGEs| zAt0Tl^sR0;a@ImeBze_=c#RZactV zhKSNq-Irk&nymXA-k?6Z|1G>lA^J8b{GUO0q4c3H4f+0;0Ijb3GJJz-L;3#Kz^_J? z)OXOiqgwwFzJ;_gsG;s_xTip91@ZqDM*LSiHw`t{#UV}$Bj7#`*>fDK_}_=p9F8lE zQiHBJvR4Dp8vhDIpsm&bejKX!U&2ht|Gy2TAJsViInaDt`g>VGwYeWq<^KrpOBL>m zpc@JOYBB2kIY6FG{?{-N_2zq_{{IZRW-tzhmp=I~p;GCex-Ua_Xovqx$VDBvC1{{- zTq)BHgFcpkWSt+X0Ar|?ZVc+7n~I!tb5MP51scvBMWZVg zeO+hZKMmE>NhlaXBxgp!5Y#);`jFc150*aH%`3G*Kkcd;0p(IdeblKOZm1i8+;sy{ zSMD_G!nZ+v^oLO&emb<%R#b_rg=%n5(Ex-#-QWVzT<#EB!5u`KxbCG-;Xar95v@Rf z0&XJOpz96K7tuVfS1IF0p|#v<7#q-^OMh1HgnC?GJ>b(d@Nrp;QrPMqP|BQQKD!qq1zWLiX6Xk%~x$ndafVZlKW zKK>y=uHD0eC%N{C^bHR3Yu31F)21EN*68pzQ6rT~B`Tx&JHqv!$%pxeM+Ak1x|XpS z=;PY7X&D$87U>rj8m&e&Zrip)i0@SYu*k`cgM%hEZ``VJ>y~ZWwECOvKk^$EC{%`j3|ijEtPtzDbklGUBjM{}7e5v0qq-8WRCg0YQ<0 zQ4>{66F;>&LL$nlqsiYnqaG*>O+zzKI0`}mC=f*=SF{U4bJP?yL#+Xt2(hj}7pT!h z0PF*_A&@Ep(uShO$Q$`Xx^RtC7z&2iGAe(d3Ih7>5EG0hp*}$6tHt{P@5YdW`s;v( zA}=%?^#|zRI5mR&$~gTSpMOiCmhhi>yZ%S+!yrB!N*ScRf$M*iW+0??)k^kd83Tbb z68UNL(GXu2*BG^hUk7+kUo;hXsx*_~&D1)W2zA&PwSv$ZwM1>;*XsYn`wat5e!w*h z%B!}+0H|?)xU26y3F3SK9tiPjTtB!^`X5?KZQV#{xAv$B{G$JZv)YnsoqguoSbNtH ztw*S7BFa+*K&nW&rH?T zSwMRhIR)Y>Aj*|bxS#KU{U82->J7|ue{h&{ac1-$;GV~4l7Oh2zC<$#sn^6i%N113J zI*5*g=gPGrIAp#vS*;F_!;`*9)(iT z2lVy}j0(PnAj0a@9Xetfr{g$I&k3B!8MrDCa|JpW;v|*u%RjCf(jzBW@0?L}R2$Vn zby0m7Rvm$+GYrQeAQFAY)!^!JwK)st#?|FqId`rOXGMB`8qmN_0BWK#bm}?i2dK53 zP;UoNHsopI%$yZcG~k+XZMgPaXRbHr&5h>#xvAV7T^rqb-Ce%6Wr5|e<(TE2YgJcg zSK?aRwW(`rO^4D_;H*vrTmI&Vj&t_VQ!HFfu0Ge8Yt6OeI&s~&e%wHA95;mv1&-%* zw}4}UCEJo?`NP%Z>f~DeKRBwd9SE%x0|O~gefXdLKKZJ#B_IE$DSB1(v?#CWNzwRw zCD8W7YMhZFES`FRH@`ae}^8zr1fbz@1M$>U^JpF_+ zppP5SbeNe!VDlG_j3^dWg6Y|WW}~XmKM7g{d#m}#f)=A{XfEvHmLoUxHEMvqhh5wn zR1bXz{dherFdJY2*@#-8WLQA9z%ug#EFoK=r|&^s&~9~fq26de>Wi{qX*&Ru{~=gH z55shujRv7(&@*z-2y_OGLg!#{J&i`9vuGU3hXtYl#$X`m2&SML&xU!aysyZ;j z++ojn5sgK8Xgsg-$kzAGwS0PpfIe;kMk2!_1N-#d(d>}}N8 z=1L``%;S{#I;E=K^1vmk)LzG&?fFgidS+!=)%A1!oG4T`epjh_;L8PaVO$g!$IayyabLqAO6F2v813hdb7x`rT;pzY zzi}^N2r1kr9oALTS#-5v__Wq_)OqOo>IUh?>HKxUy6L)^x&+-a-3r|X-Bw+yZlCUu z?xgO5?z*l>_d=)e2EH=y!drNEzA@jLAH&CV3-R>}4-4%!G2B1ezgt)UY~!Z(@bd*! z4`08iNPiCv_5d2+$f(euW}e;KdTJ=oNnw$`et!O;<>(&0V4D}>TZZbTvFq~}NuRP@ zyuKjmQ|_t)_KHT;0UsL%l4@Tibr->Ap|Wvo2Qk`LAhJj-x{wKRjj z;Nqi2`}o1eG&tCIh!ziT0bBIuL%(D?w2Z;f@SxCup=F$hYe|Ru1%>-Xg-j0ij~)3p zIDAr&f4F}{P{i=_jvrdDi==B+3B!>fi)@(=edzyB@ojj8K5rr!T5^Zgg84V_S@6A`8pb-&Rb z=Fc#gg%80F>l*A|in*p-3s~9Jy~0>-E%y`mGxtnaL1%^`-(1&T*G1>08v#T8Yuy$Y z)^Bw-UgRBkCm7BX`6zxBzmea{@8L7~9R3`Chkwl%^PlvB9_y><9rYHyo4&5Tk-mk# zi{4Y;SMRMKq#vOltDm3`(1+^h=@;u)=-2Ca>(lfH^oRAi`d{?#1zxZhWTCoHS7;*m z2xEkaLWuCakR#81>uTNC_EIN2rq??LW#(U2Cp{>kD~1v-evhc}PU}Kri!{shiTz{*-g| zz`lhEY1TzE7sV`$v@>ps6jrTC{BEr|arN9e5fQWeXU2TDKF%68MuMy(k#yAQcV#jV!6 ziggufZ*!JvVAGr)#FSeL%Qr3``2C!f{;Hf3m@Kjgo1>@VC@=?+a<+{@zC!qn&^aOI z8ByP@jj>K{BgE~@nzP?*lyVXZq#uak)}>R-QPTDl3&|t)*oYq z1M9bL-foua|1dc@-6ijA?r$frg^fI7xl<(M4QQO%+|0VL3bmM}-u20}`V{N$;d^5P zT)g^?sN1tc>gkb|*6k(FEwSr2x}+c4b|(8sTxh1{!hK=ius$h0%&cm|&NVxo4}TYG zEr?E<8SCOdCe(Yxz>S&XExkJm(%N@zuu-N?uL|E6_D`v|%i5BRI&mlX9u)la`OOE9 zTSuK2rcL#mIoUilXnjhwwf7KVLRxO*S+m4yh_>$62(2OBp^gH*BTA{MyE1l1Y@Z_S z#irB-*feH1+?$Xd*n?Q=6Nwu85b0b;;g;By))L%ANp^30?~h~wkvo<#DZ9FcEU=rc#-C<+Lr0^q~FCl&^sPeLw5dkYZt=W zQ8RO)t*yqHZH1HJ0}r${v!=|*+*o~Pf3p*{yK-sg@my=d5TRpS`(d@r1AR8`3AGMx zC-@z_IrXWTHlT75B|EIr;+czPEQ+=Jk>u0UD>r4jNPd{fzqX*x-(pFiis(z&2T}4N zdue-l4gMZmrMlQOZ6cI<85L+xD$-6=;EJnWz)HU>gncCrWNCtj7{Ns0n%JKm5`u`U z?W&whGH6eMb`iHxQD9wRTyzS?B1IdpR6JXLCz@`JBBrN}Itiv*vxubRz~HGOD$|wl zG%jQNhzv{r2@>5EpZu<24hpkU?O)S%$d~^?ut@& zYV_2}6Qez>66?!8Or#$KcaaTdAA$g4l4z8Fx}0|{Cm?fJuU`EICI!8b1X3@?CKf5ujPGVIws|leQJ5;-USqq+IKwz6D&C1d{j|i7Q2Y zVh5L^*|Voh;t%k?(pL2{g&1SUVW|~u$P7_Zam|6iawHL{TX7FTihtMS$wlZh%S8GO zolFPN>9j4huYnD*N^`t>W9gAkG@W1c?zKdlK!>SGn@M@+gU9W*zPTY>9^U9^L$fpi zbJEv%JmDp#-vZ@q9Dt=B-UIq{b{UZplzk{GGiTqllt4@Jo*jGBciBlN#gwz>sOv75 z-BDYE`$qTewAiv_+&3e>o?s_k%R7JRmP_vRz2nCF`j3)mciMv1qFp5#L;dIw8ZDJg zB~tNz+4R02Hoa_4q`2vk(?TO8UZF~&%<712J6rNd>9UKYP}9@fZ`nkFT1Dng_X*NS z^<|Y#G19`!oiY~(>BcLhU;&#L;#bI8897RcFZql;{ zMXxSpP4Zf>Y~j)cmIa}Ll#Ho+@c=F~rkBv|->cpJoi&sniL@(~VQQt7w_)3l*@R9Ljr5_dyG*%X zf2UmGh`eTuZ&82_VLzyl4xxmKeyLhbNLfX~{zy71T_pw4%-zRs8#Jaxw@Q$XxgRwHJt3V%$ z67!_e?P!T^htz)LHjv26KGM@4r9Y^NPNh{PF%l*eDV~bbR?H~}FJNhNba9W{Sh6{W zl4R-7fdfY*2JIA@@KIUtkvjyVz|7i9ncom80LH~7=q?w?oEQhGO*g;ZW3AF}&^x+E zb?@KSY^0JXwKUu zvus2BySC9v*Ef<6O?$^(Ru=G*|Bm1ThYqG6vq;Mzv-^1b#EE0961PCv$4lG|=p0vR z6%LBxAUT|e4p*6%&Ou4kBa=OF5SI#qdKyS}OF%J{0g5&^REt~2Ed}M8J6g{z=irzU z?c=@$aryxF9rq2&;LUM`)>07XT6be2m)=eSHby4#P=bNfKG_9J%y z1oV7#fy;s;t&1S#eg_Hx5AG0m1QdjxXa}f%4uk6PCpg3_Kv%e9Tn-5ExggD+0Ci+< z?i6;zhXil9`{fwDpm>J?W|pz@&9s1C}WuApWe2dcx)pc=)Xx(I`9 zeh{eJx`FTI0^h- zw^p}Tm#!%RuIqjS1pwx2g6Q8xlN8o~oN%1KsW<2=>#h2x`fhq3y{|r6zeayie_j7f z|A)R*um}T$nZiOLQAiig3r~gD0uw8W?L-f8py($)G$2D)!xY1Q*mH|^RqYzs^|l*e zH`;ElU8dbByIU3b3b=w}g}N2GROnk_ScSj}yDFTi@Up@?jBr(42e-t*I07f&m3SM@ zz(?^V{20HNkW@*kDYce{OOvIU(jn=geI@%1_NVOg?62EDtyr~U+lsp@zBD#Bb})Jv z2OGy5XBbx+vy8dMpNu7yER_N(Evl4S>3wBu<(`!XRi0Qms`A3hYbx)me4`3i#i5F| zO6w}!stm0%qsk8sl^m)$)NttR5a_VdA<-elAY}P^ ztM0CvSM^oZ4>Bjq@?iO-e9KYq*vhe!V{gZCj!};Bj$0fLIX;NKQYNuqUgU-BjBj>TsKR6$A(YwUB z955TrGtKL(*Q~yrbR@&ba*{-jkcSqdWsYUF<(ajc)yF#4nqW<|X1F@IM!0TpJzoRW zXkDX!4gVUmYiy};rbc0nmo;A399i?8o0r=Tx6)b-YqhN9Uu$ozGqrwmH@Mey_jcb~ zJFHH{I<@NbsWYigc%856tg5rOPHvscb?()9S*N(JRJTRlo^^fehSZ%0+fCns)FY`| zA)HVB;q;chTT?Sqx9?5gn*#UC+|%o+se4mXZ}Cdw;&ho^`811O5j+3cPM*?d@}()P zed?u*zNv;+OqM+_1+n(;43~oBDFLbC>;6FDSqGx~q#9`Z0dgJIelK;tWJqO3nF*{t z6;eCAJ~AaT=(OQA>sF33Q0FOfoiVS)R3CZDRDQ!&EFIdUQiW7Pl?FwgS7BEN)CbvTnanyRQi>T!nn`s4ntSvK=q{ znziSSq_Mdsm6_8SY6KxqFtke-r%3D=j`A#%tPrFJ~$4gj;PXj8jDzsLNHPELn*_>Lm>UGxTGtS1FupxMN0jD@l$Gyo-e0C>M-cbi&r|(PH zmQNLB6`w_lYbsaV;I7>N2GjYSu^%~msSmB?a08p(E3xYc-LBzit=mKyrZsx5iYO#B zZ6%>kn_|i_Z#NPP8v@!3Li<&i251=8hgLa#iO|9Kv`lJ}MI{wh5F=!@R_hnjRXznb zfG<j#0D`neOMA31%8K9P^Kjl7 zQjJu1T!+u$htyb3-`(cX8XIpz4u>I!)EI6V;iFqD!Ncm8Ve;<>nY$u$-E6DjTy!!0Z1sn}3f zM-j+R-LyUa+Rens#Q61?o26Xg>A-jp^QrzBB|EJzmB3Y`v2B>pDb8yUC}GC#K03!* zznjo2_1?&bW@Aby*;X7l8yi#hYuxEHYMhO)ewri?#l}2BTTxM-NAid=_#4dhB@#Tq zhH+1f1AR=5rVM&bSte%$3PUk#ZgZAR1@p)R*iUXzcJg#QB;8L(Q)~Was%NC%NxFU& z>BW9&Jt>;;_cDjGZv;&?p?;wxrT77#@)LfkjHfkhZRka%O?}&VsN`J2ezLV;R;7)= zDv8E}m`f>M#HToR#h+oNN>6NC{z;ZK)Gs@M)gl-GyWpI>~#S_QII3?q=2=XLo7-qstAeGR|QXTF-|9k?hwfHrE;yTX6``E zyj+Xfw30zIR0y%0fW75X#!ns?3gdwJO)$2|HjLFEd?-%Wr9I zS_g#a+Sc=8Luggwk|SipPdJCh3ADRNJAzDaN9$6d`E6F!%8rUBVTL|JqlLM|xDkS&DVr`}NV$z-P``+@Ep-JwOk=8VeoIZ+Mchh-Rb;nqG$fA^Xj}1ScF3^y z?fNye8fnwRqdT&>*DSibJ-fhSiak5v=Fh`V38w6;*Ry~B;9_gX z&U7Zd!g`M%W^MbROZVIDgy|DT#SJ$bw;UnGEtPpqunH;9U_M>WzEPjHYP0V_n0?N(ZxPZ$NAGXzn3FkOWya_EZ+;X%P!LawzU#f!gomsF*I02QmNWA*UfrxlG{{yYcD@bvdTae=ee)WBl;H)kZTlQYY&%6(^ zI%yVT%;sq23M?samHRv$=a@`1#4QZZWot!a7%70w#uv*7>DGLnR=Gk{$rD6tW^cP9 z>=6C>)+IX*3EQ_}V;G^o#Jl1!qS!&vM|`T`ioaGj4xoaeKf}C@?dqq)NIiT_S+0Q|S)M zDPszugB+XV6r#L z+_K_c{4%{4DF^9oc$qL@=0z65qOOd;g@FS4LS>jX&jZWP_*K|80Qh;4Ef^-Cb;>#= zu^k3@r?P7_F|DIb2erfF$b-VY#FVNycwy59>e8n@8AqTmXgF7Y0=OxIRNOhTmt2X% zrgXZmDKTx@<^js%bWk3T2jy{k6E%ySitl2TEz#IMx}mW+TU>7iFb?V2o-BbL@y_EA z22Bf{QE0lMENLjG5vwU}KeoVfh?KPjIHr+cx&d4d#&s6H-;GT-mV$zr4ydD+GapJo zs}&GadV*3(DeMWQNce-zQp=H`79>F}NkS7S>&-I+GJ$tap+&_NWYZqd^`*chm_++A zJ<#s~^3g!OrwO6!;vY5Fl&79WFDR<>+M$$7jA&7cCM>^nfSC3aTjt>o-KGp1Y&j9` zliJ4IzhB(s_Eyu{k@)e3VFTt^7e)!mWhW?tTi^OI)*4aQdQvCzqr!}HC#(Z9E(a8u zzlB9)YJJGv7Rz4B{imiJT5UbKCU4(GbJ;1${HcO>e2-zB%*Lhh?>zGHJK8zML0JGV zke!ZAu}sriZF&y#Ti>1MeCObcm~M>krQQ;byT!p0QES_22GJJGA(&H0B5UbdshdC$G@j1-*ShjL{CzgSHcx47wnkvbIl1elV)y+-Qdg&6SvIVGIR3` z=e9w~-D#!VgJbuMP8{NVFlhW94^_!;4@&-~tjfbS)I$41=u8K{@VnFXft8K7t(QH0 zvo5}U@Z^tc`^S0LZq>M!)wnp2-9nEtwh3=2u8DKG`*?v&Vyg85@g}t&7-VB)z6bBYpllzON)U~Gzu<1a& zkHA{M)9gM1Z7EJ=jnsDzj_bUPPuz;x^mZ^{pNKW7ACB=9=;}Qo9>@H)@+QKl&~Ayc z>1lUjy0sabo_-Ja^914_6lxSNm1@=;Byc7yaGP= z&XbXw%SIKa^rn?~#q~b!+b?8{pEZ{*+eI$Yi^3v9-rB3Du6HHIB=U+{IM|z5U=OT3 zmG`Bm?N6J&Bfu{p&@V70EW^qM+n!Da{ROv<&g9oQj?_T4uIj>I%qW>UnLrID-p1?b zV?J{XVa-eYRC18O53eNeni7^{EBY%vZ5WSZN`|V>ATq2|bo?&m-dsGjq~2r#g4Wh0 zD`6FO=v4>;ZDms~4K5zL0$zxXD(NZDTp{>IPn$R@5TAl`9oF-$@;K&qYUNg_aPs7Ul+a8o`=%su4k;t$U|a6M`?8*MNTVb|$Hj1Kl@~LKvC)2z zwPVz0=!wReggLO6u-iF{6G2`|bX=@~N*A8?E?&|M_V=G^$bf@azD1>*g#M<=6)G7W z#o}ZitPW9&so+O!XJiFu@fLcIr|*?Xa$Em1G^GIdWDlG8f-iRXqAW?%rdvcYyVL^pJhs&E7s?qhQPzBwp-KF4Jp*DdWeaAG0r*Pi&bo z+PXY$?xX=M3(f>HY2S@StF!GcthtnP(VY83$cW|ExUVMlXIYjX)pRSi>{d@E>sgGs zSaDTSd@7yDlKt#_j^)VhlEAcgMz&+Lmx1c7WN-2vuFl zG)7Gi6v03-raN?G*2;DtY7E%GSku@b({6fC9cl+*sO^TKcJNXiNO1#F90Z>83C!ni z7;f933pFi?al>%pa}UmZ=(I7UMM;?U41!8J#n*33& z!M0Ge8Thw{`}6Xx{nCG$^sBbahJ|2*DV_bqsEk-6VMJIyWH`YA}OVX!DrqEiriMQVa_sr!K;LI!v@B>~G3BYHYl^ zS|U@1x~GB-MZty8fmuD8;mc{Kj#)uAUIxd4Am4ims!4(DH9Geq^x1yIV#;8K=Cv5I z7}?y-hj5b89O$Bz_OnU(vnQ||I+~1RjWpC5{L2-f@;7DER|`lSYXoPGx8Te%8_pcr zT&*u2!Y5#$j8M5iWFSP2I14i@94$veFFcH?e|&2Kw;t`Q?TFG%wJ{N!>IE)PD8Do3C6< zpEN@Ri*ZP~9?qLqa!|U_ip^C$+y+NlS$wO^5=>9etv!3_qWSpl>3##f2K2Osh|%t# zW;-qBrH77RV(qi2_uy{k(Qr@3Zjv1$i}ClmCkQe`jmXrd*EaH4)@zPCU2g_^gd`vU9xT8))iaVBqutXY`}aG zR;DV6y$Ia5j3!hX)QiNayX0dqD=1F>pzIq2)&;Q>0eg-d!^dEsoJ)5%CGj4Bo-r>KQ1Uce8q|fskdhmunN#v^n0wNMP~khQ{}py2$tLS;lyzws~HO zk73%e&~!%`QMPx^fxYw6Yq$@)3IZmu$N?5BVBdUaDKW;WTV|l=Vat46F{nG{OKcXf zi=RlmU;(?PoZ#sIM=FZ6a06yeB8#!vdn)zT6+uMKU^R80c+9$$429GUAv~I2kq5G){wPoLt6=~nn(gD1y0UwVFiXAp4e|Dl{So$uDGq;{dGQ z=`47qYU(S&<5^k@F#AF=3oG%{FolF30`=ZoZ^Edp2v7?_jjE(Hgu9Y7nk*RG5Rb(t z3zt9}D|#;+Hnbrbix1OU8p6S!93QJ9?vpfphgQBuC8mSL`#7T8V9L%-fc@Zc#K=G} zSc*qrv2+~OQW^U!CgB?6GdEN|G^n_qypOEEAuvDY)R1(7=AQ~2saIhlm0)llSGt#} z5e3uTe0ox~fO*^V60`5`0rH8Z7Kl~%&s^Mc=&;pvyxdY|UhFHHcc&9f?BYITJWBS;7oZ=3=|0=Q&s}KsxD(k6JQ<7N`UG5 zXu_5{Kp&^l9|iiupe}b%_zRex0xf1JY$2x6DB7~|2iAZEvleU`i)5{y)SwNlt3bcl zactfTTK5h0q&03I?%#mbb7!8+)oNr(p`?&rtdwC?QnO zDM8f4FLYFvO&}~!gtb_JS?SKxU#Wx3hc;JPe}Wre(2~~ z;eOU^+C!i>!S>1KCAPM4g_DGx*~hn>HUD&A%JBB>do=3nv*-9kbusrkc5@uHGaF;$ zKhQ;QX??2WPJr;S2dY((6)(AO@9=RWz>I6(y|?epXVRl4r&+H*5{`@=kP0?#(^+d4 z&%RQE8w&-uO(g%?A^Zx1w=!{735hnhyQo@B=mZft(pYjom>h`<^ChEmNG_ki%RfGGd0qEBEDY6|dlzQzw|~O%NSM6q1a<6L+r{m5KMKq3^8%%* zJo=mATaUP0x^=QJ??9+;?^YwaEdsiJ?5x~#%#Oo9zdZHJH`bF&eheMy;?ZJQD~oYP zJk`WAcvcAr=GZmynZVB2MyLR5@6^Th}H!Mw#Ulp3{ zyL#&S%=L#?r6(t?TD@sO(t-`KD`tIVH#s(7N1F>~XBq}6sA z$!V$STjTvBeCPSw#VuYtI~mFw)UEg|_ZvOS(@ouE3dWV5#b*UpRW#Zvox-4lZg!Jw zrcFE3rZ7WIqFoeT1_PJF`{H3!($QAwG-!u1!*=_P14AT>X~c1C;}fH~ZL}GGjJeB0 z$=i6^jDz&|wSWFeyc`QBUXJA#Bl~m;7Y~SW*ahsTy`WL@eUVmHCJJES=v^`Zm}lgG zh2L?^J}Gu;Nnp%0HBF#HZxPex8^knWf7tE`mhaeHxsAvw+rX}?hG^Uj!?OKjSaE2_ z7%s863t#M}bd$3lgW2OP+7Sk3XVy{3B`VxNgKLQso55DNBdkz$MBiq@Yq1M!FT4J2<*FA;lY&ggq z3KJ5o0)xq(noP53dpcdF_G0p5f!b~R_>dZ0p7prQq=v00c=fX6w->Swp5B{hKC?S? zqGyfK4HsG$+3Ew+9AG+2Wy<~2{=*lomLD0Sk74i})5dV^XtQdV?*QTwqm{ExzT%I?U=fHj?q-%)zPOoXJx?&GR}7 zr?<@Ux0;G31Tb-=ONY}Fs3jgYl$efw<^8*CDL~ zuG^FdCd7f{yOTNJEADcSo3Hfd=QC%St`n2)39OZBL)k^3t;7xRv=;WIyUGazfH0tp zka`q97T7uw%w>U))hy|vCN#3$#Xd3IVO8Tdh;@*!{wVaj9bEX_h59^)Ik_oyviMvR z*dP$!9l$0OJ*03ol# z?v4#z*x<&jC2PiWnF0U8cV{?Vi6gZhhpFi%wIrhNTYteqFv(GjWcW zz#2|xRarIG*v0K?^WVcE9yBmt@FAILQ`>0e}OfaQ@b9k>eAx; zB&rLx__EPM*9_U^pXJ=T{m~)6_}!o7JiC|ho4D@6W&GIZAamYpVU6$0x%&=YNVEjP zd^CDP%!U+~C$=hb2JI!}$8Mbw;xc5+*e(ecV*0B$`17fU$DWzNlDj=?P?uSHSUZZdJcNtl{OJp) zEtzK5OPuW?6s;y(XcflM+U9ao?nGjov+ONxa)Yh}JL*NnpaEM!zn7_pm;{?v53nD` z!mXr>=dPJgWQUAeX?=NJxIDd0ZhbRzWV*)85^4=))rCG{Tvy?;IE6K7K5FhTK{+9A zek-tdqH)(U+PmwGf*Z6n#^FM-51jg~x+G+rmlkBXzryu^JJT7nZNF}Qh&QEn>3Nz7ZI z97MsbuS$HGrfnrgcUo0x#{H;F;*~9mzuf;iYr^E3v|6*y@8E5kv1)nUz`EJ-J*)Qk zmK#{D7=7+hx6|)VQ#S`XiPr2z-AsY>jnZGv?$Bm1@|taWYx|Z3#MT##%$Mfe zA^D16+Dw0>Ija6;0&M6vuZ1J`4nJU1QrAt`G`uTpdVZH*h*>J)x{B}`+0)Bn+I?aZ zS(;9a%CR4C_5<4GzA7G!Mw@Usy{Q_4Bocxo)lgZI&2KglMRue*&BS*&nE2|Nt0umu z2L5WbIi|xAqoZbbn^SOcuWENY8tiV3G>X|}(8d?N9@3Q$sdJ`7`T;mnRu?rL^*dm? zpFm$TJNfagEk}y1vv&%<9s9(#Gqa8i)=SvR$G~qIY{WWHo+0K|voEXBD0pVl_Pse2 zU7*dZwO54?5cbcWytlWRSy*ilNZmkON@#z4`2D=|sYj1kAcK+L?wxwcOl!bdb!#}S zZow+SFzC-#t73GhKz1E#$(?%TaZRbB~MC53*(T3E;IF+v9 zQ@g1yFP&j6ZUNJDN9FzPo8-1)HBGp!G?Sl-&`avk;TPF(;a9Of-7d5gjU}~M7L8*P zDCk)#s9ZL)M3yC+CV=S)%lQRUnI`g7?gLLDN?{>K-RVW1W_iJLsB#Ug)W9|$5VJx7 z@sJHaoA-dD5*%FHkC)R<2|dLzUFyPGP);hVr1BU*j8Tff5ShAzoIk!PO!@W8pFv>s zw_BqN1l7c?BXlKIx9&1HGw2*FnfXc~7`D*{a12csD1{3k>37PNGvp-nei{J*Wf=urV%4Nlc=Rlb$4rYCK9j_V!fzZn=F$`hC^nTJlj-nLC{ctg7pSm2)Ssz#R(qwZY&(y#y?b zlfYRz4eWp)qYvPB+aA1bJ-9*KBrXKJZ5MJExGP}y`Gqf6550Jr*!x*Om_`?1{Jt{QmJ*5w=Vo%o)-7e9a>#*gCt`6+w^AI~r0 zmxCK#BA?9f;4}Es{006RU&t5nulSFAiC)xK0!O?i`d0dmU~oGUobMKb)7=_ zuYSM&kp7hZrv9G(k^Y7LjsAn)CUAlXE_lv@tKcp)7di+Yf;TwgjRi-%Kp|L|Cd3Q# zgk)i_uunKB6bN^OBH=gT4LIX{0#`f-(Ft7fYKry6PGWCx#PbnHh*QKcF+!Z7IpeJm zzZchwDdH|MQ#>dh6G81LUKa0&Mc|tETzn<|Au_SlfDJ~2$xzK;Hq`ZhT(=W2491}AxQ2E_Dl_kzGJ!SPDdwODJBGDV9dwV2d9MlLz5J#HeYS>tWU5ZB`H1?AL;mCb2V##8zW8Hqa4tLPv1>D>KNk zu%pX~W~$>N(i#j*b}S;R1C|T4a_VodsJ)A=$t`&pBHgR3ykJ|Ihp7!LDj2xJd}~V>q$CKc1~1u`FkS`C;F3hU(5f$~Tbb30wFMD+ zo~LN+M>q*2o>*dk!uhE@9$RM+IIQ)-;1bqr$Q=x)1_h@E_tcIEtWrQQRLqv?>8fAa zPB@|;0Y~&Zn~*3%E4jaA@)Y&Gx@41}k^LiwnQOMa_XfPsT*0NNMgE1*F?&>xqJm)! z4#N&(2Ad2PO;KRcI?lcOp^>7}vzmBpcWv8HZqZTMSE5VpJP83APuf=^AQNx(Tou@v?OjjAu9e zlyjvkc(XKH^7P_Im!h_37$^0(Ed=J@gKK`s(ApL$M*7tWPcqxqiJex|&%x zP=>iN@Jwn43rbbieX8nJ(+s?E?p)h(D&Oj%b|ItC5j@JS0haav6DuR_nPI)BxCxR{ z*oH`JaVIPd#7iMfnHsqvOwE$gTia^y6zOw%eZwQc)=i88CT3(+l7WAb)EE-$@q08g@9(7=Q<_dmwV9N`xq%kB~bEJAF z4ug7|1e*M-MEbb-Ya#`yE`Te*;qQgw8;tWq24;D{Ae&B9(>@8bmjsH`LSn5!RqaGO zNIm@aU9)~KF@vp-+%mNh$`iz2P+*)L%?3V)i3#cKa zOk8$EWsSkgwGjmR3|wSzL{fLR;En{%(H?3BtQC5|VDTm3|G4I~{5@U+6&3NTFgGD0 zKHMBLXWh0n%a)v_yTI)W4hT#c(i*Ub6eUmz?}8O5{v9~NCE>@d1ym((g(DNDVeg?&G`fqE#9PmO|3z9ax%sV|+AC zy1C*89d%aQtXGefgD!M>!Yl#k&gQcB;sW1r-=Blw`Cl)$vwP_&I>o8+L#ZTrBJ({2Km&R_>g z-4yMX%8%=gV(An)Cvk8-M;$5nW1S=x$>9jCB*8(mgLcfEAsxUL<3do8gYhoR-2nvr z&YH36(GsAp#6Z@n|OLJEeK>?BbKUILpU&7w$> zk3j@&zM9%Sqt#s`N1zeZ?gBRG5;zD*eYDQQme8163IXS_A9H@bn7%pO&mwIA$BPf( zZmalG@Xr&$!X4%_+K`h9p$su_ekPqM0FTvZ(CSHWfFda=GPsm+@ZpoPFDBIl2PE|i zR7LPrlM3)XCyuMmY2T!RE2q(^wCb1o`XbJwXTKrff}~eJn*!e!f-k861*D(qA0CRT zhWLh0Mb$&5hD-%&_&|>qTSlQ?dF^{Pj^M0RTZ>b_^EZqOEu+)b)wpuH&hQ0Bpcb|x zPOPlq1aO^l0r#ld+7|+2O1}YK|9;g8Pt_FSM?-gTu!8q1eO-E@bXV!E(z{TWfBh@{ z=eM8!qALCQFYpVX^bt5{eeqZNyj1(%;TNdCz|v=bf&TzXulxh?*JEiRe1Y*_|KL6D zl^#`p{~29+3*PgB`uhhSaxcAB`fcgA@G(Y5tzKq{8Q>fS-@yVd7a-=tf2L5M%3|RD z>YZj!`K~pOo${-ThaZr=KB+ zd8Vb|^z*g;paW+(^*dWHOXK0|X6hFxivi-`+Y^xh+k>;6+JTm$liX5pgj}QjHo$eM z25kiw#WeWsrA|ON2kwBMe^)g~#oXfVL3qSH=iX?)k8pj&*>pMxb~>Z3D*V)| zi_R6kLseVX5WcHX8=h+G+QPLnd{V~)u6=a_;nx@PI>8-)?`)3w;-@}M)CKB7;TNfW zbSD8myp!;`Ji3J-I{f`Bds?Ymr%Q(4I^8zi?!SH+8l++l>T)2Qg5Qt2%kcYIyWWOx zeB1`#y_dQ_bPD{`>)+fzK`!vb>%p_HGW;;_$XAD-Bl!8%{oFlRGfx+romn+tgEbHo@?+d z^~yKb=)vm|^7>heU7*3K8hk~A6^%YZg>{7*yk5J8Xf)e2nhP2nqSe4^-3g#Pqrnrk z>k<{i`D*ZD6-Kv8_W~wd!z5~$LmKR)!S}Rlrh4V7=#Ij*Egucn&MJ%!YLrv8>q?F0 zzIx?dG>o%$?W*CMYw$=7_SfL$8hlHIb)7W0RJ&f*uH!YDg&ORs!T+y{vsY;#h@$Y$ z>`%-N!H5)J6VxuXv4Okf~OA))pLM<#U#MT$Eu+YMXPz$lJw8{gBjW6JL zPYlEixeVFddu9&VxoqH^W1HjtH*mjkst4XvJU%ZX2i`>ByUV?~heWpj8%R}QO>tFm zU2)4|^r`v0;-z9sF;|==nqKt~7cc89fw_6cnQLK=xONl)ZIe+2eTmODkj{?r5WkH( z&JLYx0{6l;J*0!!wyr7-stn>*{s98@CvuJJ6zGK_>(;#*L}j5Y#c|OH}c=3 z54xIlyDv^1IwSqj>#Q*+zzPD~fb_Nw2h;Sa8tYg_a=n72c>xjgK8zfI-3GfrR&0nz zLOj7S@fsQM4ZdmT{L%1;K-Y}FZgER|#y{~D^n1{|T%ptAYd9H2uI6T#&$$KyVSH=B zud=2Qh8G)NY{X(C5gV!4NX14bHcGJ3fdgAtS)Al#SEv){61Eqo%#6%d)XVY8iItNm zC&m4-po;CNtR3azFo?rI#U9H&ex0s)UGw5MhTj*?b=zkumNRmOh2wfqFUKNtrD{DF5moS1nkp(;EL|hfBgc%GsheN literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-Thin.otf b/public/assets/fonts/metropolis/Metropolis-Thin.otf new file mode 100644 index 0000000000000000000000000000000000000000..f969dcc3a48c2e9bc956c1d547bc79de2ae2edb6 GIT binary patch literal 22920 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 a3YH1hu1}Ev9exsSnEL}`g%#$@-~R`>396d_ literal 0 HcmV?d00001 diff --git a/public/assets/fonts/metropolis/Metropolis-ThinItalic.otf b/public/assets/fonts/metropolis/Metropolis-ThinItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..248bd9417100661366235ba48f6ea225613c698c GIT binary patch literal 24052 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 + + + + + diff --git a/public/assets/img/backgrounds/bg-pattern-shapes.png b/public/assets/img/backgrounds/bg-pattern-shapes.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc606242c5adeda279e7fad2d609347cb68e543 GIT binary patch literal 3182 zcmZ`*2UL^U5)KeBQUVd_VL{4Ll%fbEsDKKDUIYRpR1s;?BvgYyq^N+JfQS%8O6Y-z z(t8t@-Vxj^i>#E;M4Ets7jfS?@11>b&iUugKQs5-^Zzs7H}{dbDT0e#m>mEBa2e?9 z+yDTWh(8_>3&S&=HP69V9L$ZabQx=UdOC?jV(5m3hSt_rhOVotYiep@=!%Mp>gwva zW2vvNuRIpTV`029b}kB*KQdl{Nxi^|0U z0C9N^fT}crl@S5x0z?3YKP(FKU0(ozBilgds#Pe{Ds?t|8pg}&d}|;cOb{G@7H&;g zqdUzDRGA7Be0!6DDm$-sWg-V%RZ=hJK5sZ9@k374QBu#^lC{7`?epxnD)(x-YZ{sD ze6&nwWuYfdKaqvTsvy`Ar=PS9BMRr94sk2Z#H6_P6|MZ$=M@r|8E`tYGuL0@s%@ek zZad-oyZyVadX$|51nHE#!T<;EWaq6jln#Plp{lv}kdm3ly4^OeWZ4`a1E zR&zeg(vk6Kb}U`E*M1^5`Fv~0K#??s3oxZ)%eGbG2f@O}jd%lfc zxOiqDnW0dWqUJm>dxs0wn}Z%gcu3wQ2Es(6 z-)r&8sR?O`Ue}ZzJBgJ$vMGJ_sYe;-3}<`=}8`K}f}I z1<9>s32gn|J{8w(p;%AyxRts0wO=+bJkyFsp5B0fNv~|Up-P-_$Sndc$_Ft&+(TXqDry1 z#slmNaCrVyxT71B{BOlFT}95&A!`3P&3Ee5(z-a29cOWVVCUU9?c*m^!kd}FA+IAb z9s{*2aMK`ha$&}FQJ;|7VQJGL0(c1-u~758iS`?$dG=wO1x%r|bEz03Oo3!=PDmsL zrxEQbCO$xi;6X2C3xHq(o|*~!IOqwS+tD1No|Z9@?`wyBE0v@`%vhuG(2_-(yl5GZ>90dE9r9*j#^|rOwrYMpB` z;wHY%!xlS-WJ)MjEx)tapg5xsE!GpbXB`hSaL;JCUf};-o+X^h{K<-&O<^XKFFyaX zNcmTDYjPuc%3=IOk18LK{wAV6-&a{-rom>OXTrv+JLhx8uG~e+j1#_59c%3kk;yn) zab(R0Tpxi{G6&bZLT;n(iA8a9;}g+-R%DV`h^TN{5dDq1S)@83xr}v_q)DZqL26XW zvccejp*YX=p#Xb?#5bt^0&POb+B^E8k~hoiN%ETGhcIEjM0rxC$K~=N`49b+uwo^L zVh96XdJUX1JORF9+0yCJGF@xF7VJ?1pEqj`;U!1JwQkKk?PqHN1+*b%^l zHfMf8*HZFzmWNx`-^n~clp0Q-?nvYVCN1vvf72iJY4i~yw$&aTHYNat+ELKe7$mA$ z>m(kSYp9MGN0CJJq;=a{PHa@jXGX>a9$jJP^j6wJ^(KClfkZuKMzCJRf(yEGlVH>N zRRze;+9Tjdi8G%C1LZ9*!_{8-oNUQjNH%hZc3!Z9B?%C<3Hm(zxp?Qso#Dbm1T3iL zb%uSS^Xl$XLutWs?5DR!?ttr1#YI}OzHPG@U(|M;nJH7dhU18VBDLi4N#|Nxq^US6 zU(-(!;P-`4IdXN^jQdV0vF>IWrE>P4lZ!c78zganP9L1tDwTAsGBsM!XCupR%(Qf^Xl$qXGTFdJ=hXQ6-3$sGkYOWu|i$8@@Wbew> zi((n0tr3P3``uqe3vvpd+CUdk<%!A^uZAAK0Bv9TA^*r5oA$MJVEQZ)@rm%hU(I8E_?0S;;b z``gXHGaxPQV_7P_|{H%bj7`O+|@P8|#S<(G%Rik>)x)ErW=YTEP! zMnhP4&YFD@Bltouob{RfI2P%hq+{C)7psoSi(cIQWl7RX`rXV8)DI=xTkENm=VtBA zYTu#zDZ)k)_94g78#?cFEk2d&GSeM{Sq$g$OCuID9?OT$TU%L@klVGfU1@90B5Cw< zGy3qe9w4MTnvKw1aSsXlHL15*hqh}Y;2AH#+?t0Jco-)=KI5SMDht`RnZSY%d;6Vw>9#rTy1p7_BBp#k2 zOS}#pU8)ym!cJ6RVuaGRvNq4Nbu4gIyN2w-??egpN|fbbz0>{QV?uGZ^%VzFa4GTP zltX0^W#5{JoP%qM!9G51{$TQorjz(SsY>+MX_tvQm#b%ia+3l#-uJb8cKMz^fbVsy z0My>@9Q3!1&!`Yi+;dwqGp!`qL+>x{8u2E7Wch^<`jh=1|`ie+xB0g+C&Y{-$uV;KuY{CSMd(|Dsv(bifqCL4~EBtv* zefPm2=RY678ZtD7fARDv?43kqUl}1QX_i!i?!_d*ejoIFhq!+5EBJ+jcQC4H`RlF510d(~d*<`mt$RXL(dWW|4k*Ia%3 zEL)=A0pkuhHWFCwfneK?X}b0Wp~1FuP-H#r0#s|9aFpxNT8I$w3us;%^be2SNY^e()625_FDKvn;p}XcEVL|yB0A4Nr~poCCc^8|#k5xNFGX5i z0WkKiO>YzGm?b|j$J+DnAM + + + + + diff --git a/public/assets/img/demo/cards/card-img-bottom.jpg b/public/assets/img/demo/cards/card-img-bottom.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1304e0241b5891efb9acd99108aa7dcf128a5808 GIT binary patch literal 120159 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/demo/cards/card-img-left.jpg b/public/assets/img/demo/cards/card-img-left.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db6961f2cbe008059fdd11e427d36f11d7943f80 GIT binary patch literal 32974 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