From 9392d34c7667f1b5dede4b4cd13fc1e4a2e115ac Mon Sep 17 00:00:00 2001 From: aanol Date: Tue, 6 May 2025 23:15:56 +0545 Subject: [PATCH] reinstalled --- .../Auth/ConfirmPasswordController.php | 39 + .../Auth/ForgotPasswordController.php | 22 + .../Http/Controllers/Auth/LoginController.php | 40 + .../Controllers/Auth/RegisterController.php | 72 ++ .../Auth/ResetPasswordController.php | 29 + .../Auth/VerificationController.php | 41 + .../Http/Controllers/CompanyController.php | 83 -- crm-panel/app/Http/Controllers/Controller.php | 8 +- .../Http/Controllers/EmployeeController.php | 65 -- .../app/Http/Controllers/HomeController.php | 28 + crm-panel/app/Models/Company.php | 17 - crm-panel/app/Models/Employee.php | 17 - crm-panel/composer.json | 6 +- crm-panel/composer.lock | 1028 ++++++++++++++++- ...25_05_06_033216_create_companies_table.php | 31 - ...25_05_06_033239_create_employees_table.php | 32 - .../database/seeders/AdminUserSeeder.php | 21 - crm-panel/database/seeders/DatabaseSeeder.php | 4 - crm-panel/package.json | 3 + crm-panel/resources/js/bootstrap.js | 30 + crm-panel/resources/sass/_variables.scss | 7 + crm-panel/resources/sass/app.scss | 8 + .../views/auth/confirm-password.blade.php | 2 +- .../views/auth/forgot-password.blade.php | 2 +- .../resources/views/auth/login.blade.php | 114 +- .../views/auth/passwords/confirm.blade.php | 49 + .../views/auth/passwords/email.blade.php | 47 + .../views/auth/passwords/reset.blade.php | 65 ++ .../resources/views/auth/register.blade.php | 125 +- .../views/auth/verify-email.blade.php | 6 +- .../resources/views/auth/verify.blade.php | 28 + .../components/auth-session-status.blade.php | 2 +- .../views/components/danger-button.blade.php | 2 +- .../views/components/dropdown-link.blade.php | 2 +- .../views/components/dropdown.blade.php | 2 +- .../views/components/input-error.blade.php | 2 +- .../views/components/input-label.blade.php | 2 +- .../views/components/modal.blade.php | 4 +- .../views/components/nav-link.blade.php | 4 +- .../views/components/primary-button.blade.php | 2 +- .../components/responsive-nav-link.blade.php | 4 +- .../components/secondary-button.blade.php | 2 +- .../views/components/text-input.blade.php | 2 +- crm-panel/resources/views/dashboard.blade.php | 29 +- crm-panel/resources/views/home.blade.php | 23 + .../resources/views/layouts/app.blade.php | 102 +- .../resources/views/layouts/guest.blade.php | 4 +- .../views/layouts/navigation.blade.php | 12 +- .../resources/views/profile/edit.blade.php | 8 +- .../partials/delete-user-form.blade.php | 8 +- .../partials/update-password-form.blade.php | 6 +- .../update-profile-information-form.blade.php | 12 +- crm-panel/resources/views/welcome.blade.php | 285 +---- crm-panel/routes/web.php | 11 +- .../tests/Feature/Auth/AuthenticationTest.php | 67 +- .../Feature/Auth/EmailVerificationTest.php | 68 +- .../Feature/Auth/PasswordConfirmationTest.php | 52 +- .../tests/Feature/Auth/PasswordResetTest.php | 101 +- .../tests/Feature/Auth/PasswordUpdateTest.php | 69 +- .../tests/Feature/Auth/RegistrationTest.php | 40 +- crm-panel/tests/Feature/ExampleTest.php | 20 +- crm-panel/tests/Feature/HomeTest.php | 18 + crm-panel/tests/Feature/ProfileTest.php | 138 +-- crm-panel/tests/Pest.php | 47 + crm-panel/tests/Unit/ExampleTest.php | 17 +- crm-panel/vite.config.js | 5 +- 66 files changed, 2145 insertions(+), 1096 deletions(-) create mode 100644 crm-panel/app/Http/Controllers/Auth/ConfirmPasswordController.php create mode 100644 crm-panel/app/Http/Controllers/Auth/ForgotPasswordController.php create mode 100644 crm-panel/app/Http/Controllers/Auth/LoginController.php create mode 100644 crm-panel/app/Http/Controllers/Auth/RegisterController.php create mode 100644 crm-panel/app/Http/Controllers/Auth/ResetPasswordController.php create mode 100644 crm-panel/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 crm-panel/app/Http/Controllers/CompanyController.php delete mode 100644 crm-panel/app/Http/Controllers/EmployeeController.php create mode 100644 crm-panel/app/Http/Controllers/HomeController.php delete mode 100644 crm-panel/app/Models/Company.php delete mode 100644 crm-panel/app/Models/Employee.php delete mode 100644 crm-panel/database/migrations/2025_05_06_033216_create_companies_table.php delete mode 100644 crm-panel/database/migrations/2025_05_06_033239_create_employees_table.php delete mode 100644 crm-panel/database/seeders/AdminUserSeeder.php create mode 100644 crm-panel/resources/sass/_variables.scss create mode 100644 crm-panel/resources/sass/app.scss create mode 100644 crm-panel/resources/views/auth/passwords/confirm.blade.php create mode 100644 crm-panel/resources/views/auth/passwords/email.blade.php create mode 100644 crm-panel/resources/views/auth/passwords/reset.blade.php create mode 100644 crm-panel/resources/views/auth/verify.blade.php create mode 100644 crm-panel/resources/views/home.blade.php create mode 100644 crm-panel/tests/Feature/HomeTest.php create mode 100644 crm-panel/tests/Pest.php diff --git a/crm-panel/app/Http/Controllers/Auth/ConfirmPasswordController.php b/crm-panel/app/Http/Controllers/Auth/ConfirmPasswordController.php new file mode 100644 index 0000000..3559954 --- /dev/null +++ b/crm-panel/app/Http/Controllers/Auth/ConfirmPasswordController.php @@ -0,0 +1,39 @@ +middleware('auth'); + } +} diff --git a/crm-panel/app/Http/Controllers/Auth/ForgotPasswordController.php b/crm-panel/app/Http/Controllers/Auth/ForgotPasswordController.php new file mode 100644 index 0000000..465c39c --- /dev/null +++ b/crm-panel/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -0,0 +1,22 @@ +middleware('guest')->except('logout'); + $this->middleware('auth')->only('logout'); + } +} diff --git a/crm-panel/app/Http/Controllers/Auth/RegisterController.php b/crm-panel/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..961ea36 --- /dev/null +++ b/crm-panel/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/crm-panel/app/Http/Controllers/Auth/ResetPasswordController.php b/crm-panel/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100644 index 0000000..fe965b2 --- /dev/null +++ b/crm-panel/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,29 @@ +middleware('auth'); + $this->middleware('signed')->only('verify'); + $this->middleware('throttle:6,1')->only('verify', 'resend'); + } +} diff --git a/crm-panel/app/Http/Controllers/CompanyController.php b/crm-panel/app/Http/Controllers/CompanyController.php deleted file mode 100644 index e8e7851..0000000 --- a/crm-panel/app/Http/Controllers/CompanyController.php +++ /dev/null @@ -1,83 +0,0 @@ -validate([ - 'name' => 'required', - 'email' => 'nullable|email', - 'logo' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', - 'website' => 'nullable|url', - ]); - - $company = new Company; - $company->name = $request->name; - $company->email = $request->email; - if ($request->hasFile('logo')) { - $path = $request->file('logo')->store('logos', 'public'); - $company->logo = $path; - } - $company->website = $request->website; - $company->save(); - - return redirect()->route('companies.index'); - } - - /** - * Display the specified resource. - */ - public function show(Company $company) - { - // - } - - /** - * Show the form for editing the specified resource. - */ - public function edit(Company $company) - { - // - } - - /** - * Update the specified resource in storage. - */ - public function update(Request $request, Company $company) - { - // - } - - /** - * Remove the specified resource from storage. - */ - public function destroy(Company $company) - { - // - } -} diff --git a/crm-panel/app/Http/Controllers/Controller.php b/crm-panel/app/Http/Controllers/Controller.php index 8677cd5..77ec359 100644 --- a/crm-panel/app/Http/Controllers/Controller.php +++ b/crm-panel/app/Http/Controllers/Controller.php @@ -2,7 +2,11 @@ namespace App\Http\Controllers; -abstract class Controller +use Illuminate\Foundation\Auth\Access\AuthorizesRequests; +use Illuminate\Foundation\Validation\ValidatesRequests; +use Illuminate\Routing\Controller as BaseController; + +class Controller extends BaseController { - // + use AuthorizesRequests, ValidatesRequests; } diff --git a/crm-panel/app/Http/Controllers/EmployeeController.php b/crm-panel/app/Http/Controllers/EmployeeController.php deleted file mode 100644 index cc8257c..0000000 --- a/crm-panel/app/Http/Controllers/EmployeeController.php +++ /dev/null @@ -1,65 +0,0 @@ -middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function index() + { + return view('home'); + } +} diff --git a/crm-panel/app/Models/Company.php b/crm-panel/app/Models/Company.php deleted file mode 100644 index c62e2f6..0000000 --- a/crm-panel/app/Models/Company.php +++ /dev/null @@ -1,17 +0,0 @@ -hasMany(Employee::class); - } -} diff --git a/crm-panel/app/Models/Employee.php b/crm-panel/app/Models/Employee.php deleted file mode 100644 index 2870b3c..0000000 --- a/crm-panel/app/Models/Employee.php +++ /dev/null @@ -1,17 +0,0 @@ -belongsTo(Company::class); - } -} diff --git a/crm-panel/composer.json b/crm-panel/composer.json index 7946d70..d4e89f7 100644 --- a/crm-panel/composer.json +++ b/crm-panel/composer.json @@ -8,7 +8,8 @@ "require": { "php": "^8.2", "laravel/framework": "^12.0", - "laravel/tinker": "^2.10.1" + "laravel/tinker": "^2.10.1", + "laravel/ui": "^4.6" }, "require-dev": { "fakerphp/faker": "^1.23", @@ -18,7 +19,8 @@ "laravel/sail": "^1.41", "mockery/mockery": "^1.6", "nunomaduro/collision": "^8.6", - "phpunit/phpunit": "^11.5.3" + "pestphp/pest": "^3.8", + "pestphp/pest-plugin-laravel": "^3.2" }, "autoload": { "psr-4": { diff --git a/crm-panel/composer.lock b/crm-panel/composer.lock index 481b5da..fd9c8f9 100644 --- a/crm-panel/composer.lock +++ b/crm-panel/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d6c73ea5dadcd971050eeb806511e47d", + "content-hash": "fb4755d8da27280f26f93ae0d50c2105", "packages": [ { "name": "brick/math", @@ -1455,6 +1455,69 @@ }, "time": "2025-01-27T14:24:01+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.7.0", @@ -5788,6 +5851,147 @@ } ], "packages-dev": [ + { + "name": "brianium/paratest", + "version": "v7.8.3", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "a585c346ddf1bec22e51e20b5387607905604a71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/a585c346ddf1bec22e51e20b5387607905604a71", + "reference": "a585c346ddf1bec22e51e20b5387607905604a71", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^1.2.0", + "jean85/pretty-package-versions": "^2.1.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "phpunit/php-code-coverage": "^11.0.9 || ^12.0.4", + "phpunit/php-file-iterator": "^5.1.0 || ^6", + "phpunit/php-timer": "^7.0.1 || ^8", + "phpunit/phpunit": "^11.5.11 || ^12.0.6", + "sebastian/environment": "^7.2.0 || ^8", + "symfony/console": "^6.4.17 || ^7.2.1", + "symfony/process": "^6.4.19 || ^7.2.4" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "phpstan/phpstan": "^2.1.6", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpstan/phpstan-phpunit": "^2.0.4", + "phpstan/phpstan-strict-rules": "^2.0.3", + "squizlabs/php_codesniffer": "^3.11.3", + "symfony/filesystem": "^6.4.13 || ^7.2.0" + }, + "bin": [ + "bin/paratest", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.8.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2025-03-05T08:29:11+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" + }, + "time": "2025-04-07T20:06:18+00:00" + }, { "name": "fakerphp/faker", "version": "v1.24.1", @@ -5851,6 +6055,67 @@ }, "time": "2024-11-21T13:46:39+00:00" }, + { + "name": "fidry/cpu-core-counter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "8520451a140d3f46ac33042715115e290cf5785f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-08-06T10:04:20+00:00" + }, { "name": "filp/whoops", "version": "2.18.0", @@ -5973,6 +6238,66 @@ }, "time": "2025-04-30T06:54:44+00:00" }, + { + "name": "jean85/pretty-package-versions", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", + "vimeo/psalm": "^4.3 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1" + }, + "time": "2025-03-19T14:43:43+00:00" + }, { "name": "laravel/breeze", "version": "v2.3.6", @@ -6483,6 +6808,404 @@ ], "time": "2025-04-03T14:33:09+00:00" }, + { + "name": "pestphp/pest", + "version": "v3.8.2", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest.git", + "reference": "c6244a8712968dbac88eb998e7ff3b5caa556b0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest/zipball/c6244a8712968dbac88eb998e7ff3b5caa556b0d", + "reference": "c6244a8712968dbac88eb998e7ff3b5caa556b0d", + "shasum": "" + }, + "require": { + "brianium/paratest": "^7.8.3", + "nunomaduro/collision": "^8.8.0", + "nunomaduro/termwind": "^2.3.0", + "pestphp/pest-plugin": "^3.0.0", + "pestphp/pest-plugin-arch": "^3.1.0", + "pestphp/pest-plugin-mutate": "^3.0.5", + "php": "^8.2.0", + "phpunit/phpunit": "^11.5.15" + }, + "conflict": { + "filp/whoops": "<2.16.0", + "phpunit/phpunit": ">11.5.15", + "sebastian/exporter": "<6.0.0", + "webmozart/assert": "<1.11.0" + }, + "require-dev": { + "pestphp/pest-dev-tools": "^3.4.0", + "pestphp/pest-plugin-type-coverage": "^3.5.0", + "symfony/process": "^7.2.5" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Mutate\\Plugins\\Mutate", + "Pest\\Plugins\\Configuration", + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], + "psr-4": { + "Pest\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "The elegant PHP Testing Framework.", + "keywords": [ + "framework", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v3.8.2" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-04-17T10:53:02+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "e79b26c65bc11c41093b10150c1341cc5cdbea83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e79b26c65bc11c41093b10150c1341cc5cdbea83", + "reference": "e79b26c65bc11c41093b10150c1341cc5cdbea83", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.2" + }, + "conflict": { + "pestphp/pest": "<3.0.0" + }, + "require-dev": { + "composer/composer": "^2.7.9", + "pestphp/pest": "^3.0.0", + "pestphp/pest-dev-tools": "^3.0.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Pest\\Plugin\\Manager" + }, + "autoload": { + "psr-4": { + "Pest\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest plugin manager", + "keywords": [ + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin/tree/v3.0.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2024-09-08T23:21:41+00:00" + }, + { + "name": "pestphp/pest-plugin-arch", + "version": "v3.1.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "db7bd9cb1612b223e16618d85475c6f63b9c8daa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/db7bd9cb1612b223e16618d85475c6f63b9c8daa", + "reference": "db7bd9cb1612b223e16618d85475c6f63b9c8daa", + "shasum": "" + }, + "require": { + "pestphp/pest-plugin": "^3.0.0", + "php": "^8.2", + "ta-tikoma/phpunit-architecture-test": "^0.8.4" + }, + "require-dev": { + "pestphp/pest": "^3.8.1", + "pestphp/pest-dev-tools": "^3.4.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Arch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Arch plugin for Pest PHP.", + "keywords": [ + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v3.1.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-04-16T22:59:48+00:00" + }, + { + "name": "pestphp/pest-plugin-laravel", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "6801be82fd92b96e82dd72e563e5674b1ce365fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/6801be82fd92b96e82dd72e563e5674b1ce365fc", + "reference": "6801be82fd92b96e82dd72e563e5674b1ce365fc", + "shasum": "" + }, + "require": { + "laravel/framework": "^11.39.1|^12.9.2", + "pestphp/pest": "^3.8.2", + "php": "^8.2.0" + }, + "require-dev": { + "laravel/dusk": "^8.2.13|dev-develop", + "orchestra/testbench": "^9.9.0|^10.2.1", + "pestphp/pest-dev-tools": "^3.4.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Laravel\\Plugin" + ] + }, + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Laravel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Laravel Plugin", + "keywords": [ + "framework", + "laravel", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2025-04-21T07:40:53+00:00" + }, + { + "name": "pestphp/pest-plugin-mutate", + "version": "v3.0.5", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-mutate.git", + "reference": "e10dbdc98c9e2f3890095b4fe2144f63a5717e08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-mutate/zipball/e10dbdc98c9e2f3890095b4fe2144f63a5717e08", + "reference": "e10dbdc98c9e2f3890095b4fe2144f63a5717e08", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.2.0", + "pestphp/pest-plugin": "^3.0.0", + "php": "^8.2", + "psr/simple-cache": "^3.0.0" + }, + "require-dev": { + "pestphp/pest": "^3.0.8", + "pestphp/pest-dev-tools": "^3.0.0", + "pestphp/pest-plugin-type-coverage": "^3.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Pest\\Mutate\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sandro Gehri", + "email": "sandrogehri@gmail.com" + } + ], + "description": "Mutates your code to find untested cases", + "keywords": [ + "framework", + "mutate", + "mutation", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-mutate/tree/v3.0.5" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/gehrisandro", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-09-22T07:54:40+00:00" + }, { "name": "phar-io/manifest", "version": "2.0.4", @@ -6601,6 +7324,228 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.6.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62", + "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2" + }, + "time": "2025-04-13T19:20:35+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.18|^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" + }, + "time": "2024-11-09T15:12:26+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" + }, + "time": "2025-02-19T13:28:12+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "11.0.9", @@ -6926,16 +7871,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.19", + "version": "11.5.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0da1ebcdbc4d5bd2d189cfe02846a89936d8dda5" + "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0da1ebcdbc4d5bd2d189cfe02846a89936d8dda5", - "reference": "0da1ebcdbc4d5bd2d189cfe02846a89936d8dda5", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", + "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", "shasum": "" }, "require": { @@ -6945,7 +7890,7 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.1", + "myclabs/deep-copy": "^1.13.0", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", @@ -7007,7 +7952,7 @@ "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.19" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.15" }, "funding": [ { @@ -7018,20 +7963,12 @@ "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": "2025-05-02T06:56:52+00:00" + "time": "2025-03-23T16:02:11+00:00" }, { "name": "sebastian/cli-parser", @@ -8083,6 +9020,65 @@ ], "time": "2025-04-04T10:10:11+00:00" }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.8.5", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "cf6fb197b676ba716837c886baca842e4db29005" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/cf6fb197b676ba716837c886baca842e4db29005", + "reference": "cf6fb197b676ba716837c886baca842e4db29005", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18.0 || ^5.0.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" + }, + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.5" + }, + "time": "2025-04-20T20:23:40+00:00" + }, { "name": "theseer/tokenizer", "version": "1.2.3", diff --git a/crm-panel/database/migrations/2025_05_06_033216_create_companies_table.php b/crm-panel/database/migrations/2025_05_06_033216_create_companies_table.php deleted file mode 100644 index 966647f..0000000 --- a/crm-panel/database/migrations/2025_05_06_033216_create_companies_table.php +++ /dev/null @@ -1,31 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->nullable(); - $table->string('logo')->nullable(); - $table->string('website')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('companies'); - } -}; diff --git a/crm-panel/database/migrations/2025_05_06_033239_create_employees_table.php b/crm-panel/database/migrations/2025_05_06_033239_create_employees_table.php deleted file mode 100644 index b60a2b8..0000000 --- a/crm-panel/database/migrations/2025_05_06_033239_create_employees_table.php +++ /dev/null @@ -1,32 +0,0 @@ -id(); - $table->string('first_name'); - $table->string('last_name'); - $table->string('email')->nullable(); - $table->string('phone')->nullable(); - $table->foreignId('company_id')->constrained()->onDelete('cascade'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('employees'); - } -}; diff --git a/crm-panel/database/seeders/AdminUserSeeder.php b/crm-panel/database/seeders/AdminUserSeeder.php deleted file mode 100644 index dd26e0a..0000000 --- a/crm-panel/database/seeders/AdminUserSeeder.php +++ /dev/null @@ -1,21 +0,0 @@ - 'admin@gmail.com'], - [ - 'name' => 'Admin', - 'password' => Hash::make('admin'), - ] - ); - } -} diff --git a/crm-panel/database/seeders/DatabaseSeeder.php b/crm-panel/database/seeders/DatabaseSeeder.php index 4d0a636..d01a0ef 100644 --- a/crm-panel/database/seeders/DatabaseSeeder.php +++ b/crm-panel/database/seeders/DatabaseSeeder.php @@ -14,10 +14,6 @@ class DatabaseSeeder extends Seeder public function run(): void { // User::factory(10)->create(); - $this->call([ - AdminUserSeeder::class, - // - ]); User::factory()->create([ 'name' => 'Test User', diff --git a/crm-panel/package.json b/crm-panel/package.json index 60324cf..8e1f9c7 100644 --- a/crm-panel/package.json +++ b/crm-panel/package.json @@ -6,14 +6,17 @@ "dev": "vite" }, "devDependencies": { + "@popperjs/core": "^2.11.6", "@tailwindcss/forms": "^0.5.2", "@tailwindcss/vite": "^4.0.0", "alpinejs": "^3.4.2", "autoprefixer": "^10.4.2", "axios": "^1.8.2", + "bootstrap": "^5.2.3", "concurrently": "^9.0.1", "laravel-vite-plugin": "^1.2.0", "postcss": "^8.4.31", + "sass": "^1.56.1", "tailwindcss": "^3.1.0", "vite": "^6.2.4" } diff --git a/crm-panel/resources/js/bootstrap.js b/crm-panel/resources/js/bootstrap.js index 5f1390b..46f7a33 100644 --- a/crm-panel/resources/js/bootstrap.js +++ b/crm-panel/resources/js/bootstrap.js @@ -1,4 +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/crm-panel/resources/sass/_variables.scss b/crm-panel/resources/sass/_variables.scss new file mode 100644 index 0000000..172daaa --- /dev/null +++ b/crm-panel/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/crm-panel/resources/sass/app.scss b/crm-panel/resources/sass/app.scss new file mode 100644 index 0000000..1026a0b --- /dev/null +++ b/crm-panel/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/crm-panel/resources/views/auth/confirm-password.blade.php b/crm-panel/resources/views/auth/confirm-password.blade.php index 3d38186..3cbbe08 100644 --- a/crm-panel/resources/views/auth/confirm-password.blade.php +++ b/crm-panel/resources/views/auth/confirm-password.blade.php @@ -1,5 +1,5 @@ -
+
{{ __('This is a secure area of the application. Please confirm your password before continuing.') }}
diff --git a/crm-panel/resources/views/auth/forgot-password.blade.php b/crm-panel/resources/views/auth/forgot-password.blade.php index cb32e08..3c70788 100644 --- a/crm-panel/resources/views/auth/forgot-password.blade.php +++ b/crm-panel/resources/views/auth/forgot-password.blade.php @@ -1,5 +1,5 @@ -
+
{{ __('Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.') }}
diff --git a/crm-panel/resources/views/auth/login.blade.php b/crm-panel/resources/views/auth/login.blade.php index 78b684f..ea9ac94 100644 --- a/crm-panel/resources/views/auth/login.blade.php +++ b/crm-panel/resources/views/auth/login.blade.php @@ -1,47 +1,73 @@ - - - +@extends('layouts.app') -
- @csrf +@section('content') +
+
+
+
+
{{ __('Login') }}
- -
- - - +
+ + @csrf + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+
+
+ + + +
+
+
+ +
+
+ + + @if (Route::has('password.request')) + + {{ __('Forgot Your Password?') }} + + @endif +
+
+ +
+
- - -
- - - - - -
- - -
- -
- -
- @if (Route::has('password.request')) - - {{ __('Forgot your password?') }} - - @endif - - - {{ __('Log in') }} - -
- - +
+
+@endsection diff --git a/crm-panel/resources/views/auth/passwords/confirm.blade.php b/crm-panel/resources/views/auth/passwords/confirm.blade.php new file mode 100644 index 0000000..f8c8e61 --- /dev/null +++ b/crm-panel/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/crm-panel/resources/views/auth/passwords/email.blade.php b/crm-panel/resources/views/auth/passwords/email.blade.php new file mode 100644 index 0000000..d1ac783 --- /dev/null +++ b/crm-panel/resources/views/auth/passwords/email.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+ @if (session('status')) + + @endif + +
+ @csrf + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/crm-panel/resources/views/auth/passwords/reset.blade.php b/crm-panel/resources/views/auth/passwords/reset.blade.php new file mode 100644 index 0000000..dccf6c6 --- /dev/null +++ b/crm-panel/resources/views/auth/passwords/reset.blade.php @@ -0,0 +1,65 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+
+ @csrf + + + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/crm-panel/resources/views/auth/register.blade.php b/crm-panel/resources/views/auth/register.blade.php index a857242..12cad1a 100644 --- a/crm-panel/resources/views/auth/register.blade.php +++ b/crm-panel/resources/views/auth/register.blade.php @@ -1,52 +1,77 @@ - -
- @csrf +@extends('layouts.app') - -
- - - +@section('content') +
+
+
+
+
{{ __('Register') }}
+ +
+ + @csrf + +
+ + +
+ + + @error('name') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+ +
+
- - -
- - - -
- - -
- - - - - -
- - -
- - - - - -
- -
- - {{ __('Already registered?') }} - - - - {{ __('Register') }} - -
- - +
+
+@endsection diff --git a/crm-panel/resources/views/auth/verify-email.blade.php b/crm-panel/resources/views/auth/verify-email.blade.php index eaf811d..4e4222f 100644 --- a/crm-panel/resources/views/auth/verify-email.blade.php +++ b/crm-panel/resources/views/auth/verify-email.blade.php @@ -1,10 +1,10 @@ -
+
{{ __('Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn\'t receive the email, we will gladly send you another.') }}
@if (session('status') == 'verification-link-sent') -
+
{{ __('A new verification link has been sent to the email address you provided during registration.') }}
@endif @@ -23,7 +23,7 @@
@csrf -
diff --git a/crm-panel/resources/views/auth/verify.blade.php b/crm-panel/resources/views/auth/verify.blade.php new file mode 100644 index 0000000..9f8c1bc --- /dev/null +++ b/crm-panel/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/crm-panel/resources/views/components/auth-session-status.blade.php b/crm-panel/resources/views/components/auth-session-status.blade.php index c4bd6e2..a39bc7d 100644 --- a/crm-panel/resources/views/components/auth-session-status.blade.php +++ b/crm-panel/resources/views/components/auth-session-status.blade.php @@ -1,7 +1,7 @@ @props(['status']) @if ($status) -
merge(['class' => 'font-medium text-sm text-green-600']) }}> +
merge(['class' => 'font-medium text-sm text-green-600 dark:text-green-400']) }}> {{ $status }}
@endif diff --git a/crm-panel/resources/views/components/danger-button.blade.php b/crm-panel/resources/views/components/danger-button.blade.php index d17d288..d7417b2 100644 --- a/crm-panel/resources/views/components/danger-button.blade.php +++ b/crm-panel/resources/views/components/danger-button.blade.php @@ -1,3 +1,3 @@ - diff --git a/crm-panel/resources/views/components/dropdown-link.blade.php b/crm-panel/resources/views/components/dropdown-link.blade.php index e0f8ce1..6d5279d 100644 --- a/crm-panel/resources/views/components/dropdown-link.blade.php +++ b/crm-panel/resources/views/components/dropdown-link.blade.php @@ -1 +1 @@ -merge(['class' => 'block w-full px-4 py-2 text-start text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out']) }}>{{ $slot }} +merge(['class' => 'block w-full px-4 py-2 text-start text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out']) }}>{{ $slot }} diff --git a/crm-panel/resources/views/components/dropdown.blade.php b/crm-panel/resources/views/components/dropdown.blade.php index a46f7c8..e4106a4 100644 --- a/crm-panel/resources/views/components/dropdown.blade.php +++ b/crm-panel/resources/views/components/dropdown.blade.php @@ -1,4 +1,4 @@ -@props(['align' => 'right', 'width' => '48', 'contentClasses' => 'py-1 bg-white']) +@props(['align' => 'right', 'width' => '48', 'contentClasses' => 'py-1 bg-white dark:bg-gray-700']) @php $alignmentClasses = match ($align) { diff --git a/crm-panel/resources/views/components/input-error.blade.php b/crm-panel/resources/views/components/input-error.blade.php index 9e6da21..ad95f6b 100644 --- a/crm-panel/resources/views/components/input-error.blade.php +++ b/crm-panel/resources/views/components/input-error.blade.php @@ -1,7 +1,7 @@ @props(['messages']) @if ($messages) -
    merge(['class' => 'text-sm text-red-600 space-y-1']) }}> +
      merge(['class' => 'text-sm text-red-600 dark:text-red-400 space-y-1']) }}> @foreach ((array) $messages as $message)
    • {{ $message }}
    • @endforeach diff --git a/crm-panel/resources/views/components/input-label.blade.php b/crm-panel/resources/views/components/input-label.blade.php index 1cc65e2..e93b059 100644 --- a/crm-panel/resources/views/components/input-label.blade.php +++ b/crm-panel/resources/views/components/input-label.blade.php @@ -1,5 +1,5 @@ @props(['value']) -
merge(['class' => $classes]) }}> diff --git a/crm-panel/resources/views/components/primary-button.blade.php b/crm-panel/resources/views/components/primary-button.blade.php index d71f0b6..99bf389 100644 --- a/crm-panel/resources/views/components/primary-button.blade.php +++ b/crm-panel/resources/views/components/primary-button.blade.php @@ -1,3 +1,3 @@ - diff --git a/crm-panel/resources/views/components/responsive-nav-link.blade.php b/crm-panel/resources/views/components/responsive-nav-link.blade.php index 43b91e7..98b55d1 100644 --- a/crm-panel/resources/views/components/responsive-nav-link.blade.php +++ b/crm-panel/resources/views/components/responsive-nav-link.blade.php @@ -2,8 +2,8 @@ @php $classes = ($active ?? false) - ? 'block w-full ps-3 pe-4 py-2 border-l-4 border-indigo-400 text-start text-base font-medium text-indigo-700 bg-indigo-50 focus:outline-none focus:text-indigo-800 focus:bg-indigo-100 focus:border-indigo-700 transition duration-150 ease-in-out' - : 'block w-full ps-3 pe-4 py-2 border-l-4 border-transparent text-start text-base font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-50 hover:border-gray-300 focus:outline-none focus:text-gray-800 focus:bg-gray-50 focus:border-gray-300 transition duration-150 ease-in-out'; + ? 'block w-full ps-3 pe-4 py-2 border-l-4 border-indigo-400 dark:border-indigo-600 text-start text-base font-medium text-indigo-700 dark:text-indigo-300 bg-indigo-50 dark:bg-indigo-900/50 focus:outline-none focus:text-indigo-800 dark:focus:text-indigo-200 focus:bg-indigo-100 dark:focus:bg-indigo-900 focus:border-indigo-700 dark:focus:border-indigo-300 transition duration-150 ease-in-out' + : 'block w-full ps-3 pe-4 py-2 border-l-4 border-transparent text-start text-base font-medium text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 hover:border-gray-300 dark:hover:border-gray-600 focus:outline-none focus:text-gray-800 dark:focus:text-gray-200 focus:bg-gray-50 dark:focus:bg-gray-700 focus:border-gray-300 dark:focus:border-gray-600 transition duration-150 ease-in-out'; @endphp merge(['class' => $classes]) }}> diff --git a/crm-panel/resources/views/components/secondary-button.blade.php b/crm-panel/resources/views/components/secondary-button.blade.php index b32b69f..fa1c549 100644 --- a/crm-panel/resources/views/components/secondary-button.blade.php +++ b/crm-panel/resources/views/components/secondary-button.blade.php @@ -1,3 +1,3 @@ - diff --git a/crm-panel/resources/views/components/text-input.blade.php b/crm-panel/resources/views/components/text-input.blade.php index da1b12d..3f44b2f 100644 --- a/crm-panel/resources/views/components/text-input.blade.php +++ b/crm-panel/resources/views/components/text-input.blade.php @@ -1,3 +1,3 @@ @props(['disabled' => false]) -merge(['class' => 'border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm']) }}> +merge(['class' => 'border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-sm']) }}> diff --git a/crm-panel/resources/views/dashboard.blade.php b/crm-panel/resources/views/dashboard.blade.php index 66028f2..3088c40 100644 --- a/crm-panel/resources/views/dashboard.blade.php +++ b/crm-panel/resources/views/dashboard.blade.php @@ -1,17 +1,12 @@ - - -

- {{ __('Dashboard') }} -

-
- -
-
-
-
- {{ __("You're logged in!") }} -
-
-
-
-
+ + + + + + Dashboard + + +

Dashboard

+
Back to Home + + diff --git a/crm-panel/resources/views/home.blade.php b/crm-panel/resources/views/home.blade.php new file mode 100644 index 0000000..1f34466 --- /dev/null +++ b/crm-panel/resources/views/home.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Dashboard') }}
+ +
+ @if (session('status')) + + @endif + + {{ __('You are logged in!') }} +
+
+
+
+
+@endsection diff --git a/crm-panel/resources/views/layouts/app.blade.php b/crm-panel/resources/views/layouts/app.blade.php index c5ff315..a6970da 100644 --- a/crm-panel/resources/views/layouts/app.blade.php +++ b/crm-panel/resources/views/layouts/app.blade.php @@ -1,36 +1,80 @@ - + - - - - + + + - {{ config('app.name', 'Laravel') }} + + - - - + {{ config('app.name', 'Laravel') }} - - @vite(['resources/css/app.css', 'resources/js/app.js']) - - -
- @include('layouts.navigation') + + + - - @isset($header) -
-
- {{ $header }} -
-
- @endisset + + @vite(['resources/sass/app.scss', 'resources/js/app.js']) + + +
+
+ + +
+ @yield('content') +
+
+ diff --git a/crm-panel/resources/views/layouts/guest.blade.php b/crm-panel/resources/views/layouts/guest.blade.php index 11feb47..4b369b6 100644 --- a/crm-panel/resources/views/layouts/guest.blade.php +++ b/crm-panel/resources/views/layouts/guest.blade.php @@ -15,14 +15,14 @@ @vite(['resources/css/app.css', 'resources/js/app.js']) -
+
-
+
{{ $slot }}
diff --git a/crm-panel/resources/views/layouts/navigation.blade.php b/crm-panel/resources/views/layouts/navigation.blade.php index c2d3a65..c64bf64 100644 --- a/crm-panel/resources/views/layouts/navigation.blade.php +++ b/crm-panel/resources/views/layouts/navigation.blade.php @@ -1,4 +1,4 @@ -