commit beca25fcd79957ef8c0b9f19a0f3d224d5df37db Author: Husnu Setiawan Date: Mon Dec 29 14:25:34 2025 +0700 init diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..35db1dd --- /dev/null +++ b/.env.example @@ -0,0 +1,65 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +APP_LOCALE=en +APP_FALLBACK_LOCALE=en +APP_FAKER_LOCALE=en_US + +APP_MAINTENANCE_DRIVER=file +# APP_MAINTENANCE_STORE=database + +PHP_CLI_SERVER_WORKERS=4 + +BCRYPT_ROUNDS=12 + +LOG_CHANNEL=stack +LOG_STACK=single +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=sqlite +# DB_HOST=127.0.0.1 +# DB_PORT=3306 +# DB_DATABASE=laravel +# DB_USERNAME=root +# DB_PASSWORD= + +SESSION_DRIVER=database +SESSION_LIFETIME=120 +SESSION_ENCRYPT=false +SESSION_PATH=/ +SESSION_DOMAIN=null + +BROADCAST_CONNECTION=log +FILESYSTEM_DISK=local +QUEUE_CONNECTION=database + +CACHE_STORE=database +# CACHE_PREFIX= + +MEMCACHED_HOST=127.0.0.1 + +REDIS_CLIENT=phpredis +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_SCHEME=null +MAIL_HOST=127.0.0.1 +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +VITE_APP_NAME="${APP_NAME}" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..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..b71b1ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +*.log +.DS_Store +.env +.env.backup +.env.production +.phpactor.json +.phpunit.result.cache +/.fleet +/.idea +/.nova +/.phpunit.cache +/.vscode +/.zed +/auth.json +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/storage/pail +/vendor +Homestead.json +Homestead.yaml +Thumbs.db diff --git a/README.md b/README.md new file mode 100644 index 0000000..75c347a --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +

Laravel Logo

+ +

+Build Status +Total Downloads +Latest Stable Version +License +

+ +## About Laravel + +Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: + +- [Simple, fast routing engine](https://laravel.com/docs/routing). +- [Powerful dependency injection container](https://laravel.com/docs/container). +- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. +- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). +- Database agnostic [schema migrations](https://laravel.com/docs/migrations). +- [Robust background job processing](https://laravel.com/docs/queues). +- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). + +Laravel is accessible, powerful, and provides tools required for large, robust applications. + +## Learning Laravel + +Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. + +You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch. + +If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. + +## Laravel Sponsors + +We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com). + +### Premium Partners + +- **[Vehikl](https://vehikl.com)** +- **[Tighten Co.](https://tighten.co)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel)** +- **[DevSquad](https://devsquad.com/hire-laravel-developers)** +- **[Redberry](https://redberry.international/laravel-development)** +- **[Active Logic](https://activelogic.com)** + +## Contributing + +Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). + +## Code of Conduct + +In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). + +## Security Vulnerabilities + +If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. + +## License + +The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..8677cd5 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,8 @@ + */ + use HasFactory, Notifiable; + + /** + * The attributes that are mass assignable. + * + * @var list + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var list + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * Get the attributes that should be cast. + * + * @return array + */ + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ +handleCommand(new ArgvInput); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..c183276 --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,18 @@ +withRouting( + web: __DIR__.'/../routes/web.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware): void { + // + }) + ->withExceptions(function (Exceptions $exceptions): void { + // + })->create(); diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/bootstrap/providers.php b/bootstrap/providers.php new file mode 100644 index 0000000..38b258d --- /dev/null +++ b/bootstrap/providers.php @@ -0,0 +1,5 @@ +=3.0.0 <4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { "sass": "sass.js" } }, "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q=="], + + "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], + + "simplebar": ["simplebar@6.3.2", "", { "dependencies": { "simplebar-core": "^1.3.2" } }, "sha512-l4P1Oma0nply0g+pkrkwfC1SF5WDnIHrgiQDXSDzIdjngUDLkPgZcPGKrOvuFeXoSensfKijjIjDlUJSEp+mLQ=="], + + "simplebar-core": ["simplebar-core@1.3.2", "", { "dependencies": { "lodash": "^4.17.21", "lodash-es": "^4.17.21" } }, "sha512-qKgTTuTqapjsFGkNhCjyPhysnbZGpQqNmjk0nOYjFN5ordC/Wjvg+RbYCyMSnW60l/Z0ZS82GbNltly6PMUH1w=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "string-natural-compare": ["string-natural-compare@2.0.3", "", {}, "sha512-4Kcl12rNjc+6EKhY8QyDVuQTAlMWwRiNbsxnVwBUKFr7dYPQuXVrtNU4sEkjF9LHY0AY6uVbB3ktbkIH4LC+BQ=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + + "swiper": ["swiper@11.2.10", "", {}, "sha512-RMeVUUjTQH+6N3ckimK93oxz6Sn5la4aDlgPzB+rBrG/smPdCTicXyhxa+woIpopz+jewEloiEE3lKo1h9w2YQ=="], + + "timezz": ["timezz@9.0.2", "", {}, "sha512-oZrPwr4MJtzuD1R+2zy1rLaorF2c1urprqLI39IUj9et8b5xW2Zylbye0V1UbqMLGal/Z8bnoBNxyLZ9qnXhXQ=="], + + "tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "vite": ["vite@6.3.5", "", { "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" }, "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" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], + + "vite-plugin-full-reload": ["vite-plugin-full-reload@1.2.0", "", { "dependencies": { "picocolors": "^1.0.0", "picomatch": "^2.3.1" } }, "sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA=="], + + "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yargs": ["yargs@17.7.2", "", { "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" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "vite-plugin-full-reload/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + } +} diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..7ee5043 --- /dev/null +++ b/composer.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://getcomposer.org/schema.json", + "name": "laravel/laravel", + "type": "project", + "description": "The skeleton application for the Laravel framework.", + "keywords": [ + "laravel", + "framework" + ], + "license": "MIT", + "require": { + "php": "^8.2", + "laravel/framework": "^12.0", + "laravel/tinker": "^2.10.1" + }, + "require-dev": { + "fakerphp/faker": "^1.23", + "laravel/pail": "^1.2.2", + "laravel/pint": "^1.13", + "laravel/sail": "^1.41", + "mockery/mockery": "^1.6", + "nunomaduro/collision": "^8.6", + "phpunit/phpunit": "^11.5.3" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi", + "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"", + "@php artisan migrate --graceful --ansi" + ], + "dev": [ + "Composer\\Config::disableProcessTimeout", + "npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite" + ], + "test": [ + "@php artisan config:clear --ansi", + "@php artisan test" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true, + "php-http/discovery": true + } + }, + "minimum-stability": "stable", + "prefer-stable": true +} \ No newline at end of file diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..1943771 --- /dev/null +++ b/composer.lock @@ -0,0 +1,8152 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "88970a0117c062eed55fa8728fc43833", + "packages": [ + { + "name": "brick/math", + "version": "0.13.1", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "6.8.8" + }, + "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.13.1" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2025-03-29T13:50:30+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": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "8c784d071debd117328803d86b2097615b457500" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2024-10-09T13:47:03+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:45:45+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.9.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.9.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2025-03-27T13:37:11+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.2.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2025-03-27T13:27:01+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.7.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-03-27T12:30:47+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/30e286560c137526eccd4ce21b2de477ab0676d2", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2025-02-03T10:55:03+00:00" + }, + { + "name": "laravel/framework", + "version": "v12.21.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "ac8c4e73bf1b5387b709f7736d41427e6af1c93b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/ac8c4e73bf1b5387b709f7736d41427e6af1c93b", + "reference": "ac8c4e73bf1b5387b709f7736d41427e6af1c93b", + "shasum": "" + }, + "require": { + "brick/math": "^0.11|^0.12|^0.13", + "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.31", + "symfony/process": "^7.2.0", + "symfony/routing": "^7.2.0", + "symfony/uid": "^7.2.0", + "symfony/var-dumper": "^7.2.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.6.1", + "voku/portable-ascii": "^2.0.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/log-implementation": "1.0|2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.322.9", + "ext-gmp": "*", + "fakerphp/faker": "^1.24", + "guzzlehttp/promises": "^2.0.3", + "guzzlehttp/psr7": "^2.4", + "laravel/pint": "^1.18", + "league/flysystem-aws-s3-v3": "^3.25.1", + "league/flysystem-ftp": "^3.25.1", + "league/flysystem-path-prefixing": "^3.25.1", + "league/flysystem-read-only": "^3.25.1", + "league/flysystem-sftp-v3": "^3.25.1", + "mockery/mockery": "^1.6.10", + "orchestra/testbench-core": "^10.0.0", + "pda/pheanstalk": "^5.0.6|^7.0.0", + "php-http/discovery": "^1.15", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", + "predis/predis": "^2.3|^3.0", + "resend/resend-php": "^0.10.0", + "symfony/cache": "^7.2.0", + "symfony/http-client": "^7.2.0", + "symfony/psr-http-message-bridge": "^7.2.0", + "symfony/translation": "^7.2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.322.9).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", + "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", + "mockery/mockery": "Required to use mocking (^1.6).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.5.3|^12.0.1).", + "predis/predis": "Required to use the predis connector (^2.3|^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).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "12.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/functions.php", + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Support/functions.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2025-07-22T15:41:55+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.3.6", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "86a8b692e8661d0fb308cec64f3d176821323077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/86a8b692e8661d0fb308cec64f3d176821323077", + "reference": "86a8b692e8661d0fb308cec64f3d176821323077", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "illuminate/collections": "^10.0|^11.0|^12.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.3.6" + }, + "time": "2025-07-07T14:17:42+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2025-03-19T13:51:03+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.10.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.10.1" + }, + "time": "2025-01-27T14:24:01+00:00" + }, + { + "name": "league/commonmark", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", + "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.8-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-07-20T12:47:49+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.30.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e", + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e", + "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.30.0" + }, + "time": "2025-06-25T13:29:59+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.30.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10", + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10", + "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.30.0" + }, + "time": "2025-05-21T10:34:19+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-09-21T08:32:55+00:00" + }, + { + "name": "league/uri", + "version": "7.5.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "81fb5145d2644324614cc532b28efd0215bda430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.5", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.5.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:40:02+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:18:47+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.9.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2025-03-24T10:02:05+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.10.1", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/1fd1935b2d90aef2f093c5e35f7ae1257c448d00", + "reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "<100.0", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3.12 || ^7.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.75.0", + "kylekatarnls/multi-tester": "^2.5.3", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.17", + "phpunit/phpunit": "^10.5.46", + "squizlabs/php_codesniffer": "^3.13.0" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2025-06-21T15:19:35+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.4" + }, + "require-dev": { + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.2" + }, + "time": "2024-10-06T23:10:23+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.7", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/e67c4061eb40b9c113b218214e42cb5a0dda28f2", + "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.7" + }, + "time": "2025-06-03T04:55:08+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.6.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/221b0d0fdf1369c71047ad1d18bb5880017bbc56", + "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.0" + }, + "time": "2025-07-27T20:03:57+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "dfa08f390e509967a15c22493dc0bac5733d9123" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dfa08f390e509967a15c22493dc0bac5733d9123", + "reference": "dfa08f390e509967a15c22493dc0bac5733d9123", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.2.6" + }, + "require-dev": { + "illuminate/console": "^11.44.7", + "laravel/pint": "^1.22.0", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0 || ^3.8.2", + "phpstan/phpstan": "^1.12.25", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.2.6", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.1" + }, + "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": "2025-05-08T08:14:37+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:41:07+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.9", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "1b801844becfe648985372cb4b12ad6840245ace" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/1b801844becfe648985372cb4b12ad6840245ace", + "reference": "1b801844becfe648985372cb4b12ad6840245ace", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.9" + }, + "time": "2025-06-23T02:35:06+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.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", + "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.0" + }, + "time": "2025-06-25T14:20:11+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/console", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/5f360ebc65c55265a74d23d7fe27f957870158a1", + "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1", + "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" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.3.2" + }, + "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-30T17:13:41+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.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.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^6.4|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.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.3.2" + }, + "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-07T08:17:57+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.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": "2025-04-22T09:11:45+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/finder", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.3.2" + }, + "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/http-foundation", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6877c122b3a6cc3695849622720054f6e6fa5fa6", + "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "symfony/clock": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v7.3.2" + }, + "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-10T08:47:49+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "6ecc895559ec0097e221ed2fd5eb44d5fede083c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6ecc895559ec0097e221ed2fd5eb44d5fede083c", + "reference": "6ecc895559ec0097e221ed2fd5eb44d5fede083c", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^7.3", + "symfony/http-foundation": "^7.3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^7.1", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v7.3.2" + }, + "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-31T10:45:04+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d43e84d9522345f96ad6283d5dfccc8c1cfc299b", + "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^7.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v7.3.2" + }, + "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:36:08+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v7.3.2" + }, + "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/polyfill-ctype", + "version": "v1.32.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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.32.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.32.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-10T14:38:51+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.32.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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.32.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.32.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-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.32.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.32.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": "2025-01-02T08:10:11+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.32.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.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "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.3.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": "2025-04-17T09:11:12+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v7.3.2" + }, + "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:36:08+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "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.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": "2025-04-25T09:37:31+00:00" + }, + { + "name": "symfony/string", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/42f505aff654e62ac7ac2ce21033818297ca89ca", + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.3.2" + }, + "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-10T08:47:49+00:00" + }, + { + "name": "symfony/translation", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "81b48f4daa96272efcce9c7a6c4b58e629df3c90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/81b48f4daa96272efcce9c7a6c4b58e629df3c90", + "reference": "81b48f4daa96272efcce9c7a6c4b58e629df3c90", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "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", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v7.3.2" + }, + "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-30T17:31:46+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "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.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-27T08:32:26+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.3.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-27T19:55:54+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "53205bea27450dc5c65377518b3275e126d45e75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/53205bea27450dc5c65377518b3275e126d45e75", + "reference": "53205bea27450dc5c65377518b3275e126d45e75", + "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", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v7.3.2" + }, + "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-29T20:02:46+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" + }, + "time": "2024-12-21T16:25:41+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.2", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.3", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-04-30T23:37:27+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "https://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2024-11-21T01:49:47+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "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.3", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "59a123a3d459c5a23055802237cb317f609867e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5", + "reference": "59a123a3d459c5a23055802237cb317f609867e5", + "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.3" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-06-16T00:02:10+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.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "8cc3d575c1f0e57eeb923f366a37528c50d2385a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/8cc3d575c1f0e57eeb923f366a37528c50d2385a", + "reference": "8cc3d575c1f0e57eeb923f366a37528c50d2385a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0|^12.0", + "illuminate/contracts": "^10.24|^11.0|^12.0", + "illuminate/log": "^10.24|^11.0|^12.0", + "illuminate/process": "^10.24|^11.0|^12.0", + "illuminate/support": "^10.24|^11.0|^12.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0|^12.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.13|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0", + "phpstan/phpstan": "^1.12.27", + "symfony/var-dumper": "^6.3|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Pail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", + "keywords": [ + "dev", + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2025-06-05T13:55:57+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/0345f3b05f136801af8c339f9d16ef29e6b4df8a", + "reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.82.2", + "illuminate/view": "^11.45.1", + "larastan/larastan": "^3.5.0", + "laravel-zero/framework": "^11.45.0", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^2.3.1", + "pestphp/pest": "^2.36.0" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "files": [ + "overrides/Runner/Parallel/ProcessFactory.php" + ], + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2025-07-10T18:09:32+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.44.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "a09097bd2a8a38e23ac472fa6a6cf5b0d1c1d3fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/a09097bd2a8a38e23ac472fa6a6cf5b0d1c1d3fe", + "reference": "a09097bd2a8a38e23ac472fa6a6cf5b0d1c1d3fe", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2025-07-04T16:17:06+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.3", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "faed855a7b5f4d4637717c2b3863e277116beb36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36", + "reference": "faed855a7b5f4d4637717c2b3863e277116beb36", + "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.3" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-07-05T12:25:42+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v8.8.2", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.18.1", + "nunomaduro/termwind": "^2.3.1", + "php": "^8.2.0", + "symfony/console": "^7.3.0" + }, + "conflict": { + "laravel/framework": "<11.44.2 || >=13.0.0", + "phpunit/phpunit": "<11.5.15 || >=13.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.8.3", + "larastan/larastan": "^3.4.2", + "laravel/framework": "^11.44.2 || ^12.18", + "laravel/pint": "^1.22.1", + "laravel/sail": "^1.43.1", + "laravel/sanctum": "^4.1.1", + "laravel/tinker": "^2.10.1", + "orchestra/testbench-core": "^9.12.0 || ^10.4", + "pestphp/pest": "^3.8.2", + "sebastian/environment": "^7.2.1 || ^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "dev", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2025-06-25T02:12:12+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.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "1a800a7446add2d79cc6b3c01c45381810367d76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1a800a7446add2d79cc6b3c01c45381810367d76", + "reference": "1a800a7446add2d79cc6b3c01c45381810367d76", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.4.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-text-template": "^4.0.1", + "sebastian/code-unit-reverse-lookup": "^4.0.1", + "sebastian/complexity": "^4.0.1", + "sebastian/environment": "^7.2.0", + "sebastian/lines-of-code": "^3.0.1", + "sebastian/version": "^5.0.2", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^11.5.2" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/show" + }, + "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-06-18T08:56:18+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-27T05:02:59+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:07:44+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:08:43+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:09:35+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "11.5.28", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "93f30aa3889e785ac63493d4976df0ae9fdecb60" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/93f30aa3889e785ac63493d4976df0ae9fdecb60", + "reference": "93f30aa3889e785ac63493d4976df0ae9fdecb60", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.3", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0.10", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-invoker": "^5.0.1", + "phpunit/php-text-template": "^4.0.1", + "phpunit/php-timer": "^7.0.1", + "sebastian/cli-parser": "^3.0.2", + "sebastian/code-unit": "^3.0.3", + "sebastian/comparator": "^6.3.1", + "sebastian/diff": "^6.0.2", + "sebastian/environment": "^7.2.1", + "sebastian/exporter": "^6.3.0", + "sebastian/global-state": "^7.0.2", + "sebastian/object-enumerator": "^6.0.1", + "sebastian/type": "^5.1.2", + "sebastian/version": "^5.0.2", + "staabm/side-effects-detector": "^1.0.5" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.28" + }, + "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": "2025-07-31T07:10:28+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:41:36+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-19T07:56:08+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:45:54+00:00" + }, + { + "name": "sebastian/comparator", + "version": "6.3.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959", + "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.4" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-07T06:57:01+00:00" + }, + { + "name": "sebastian/complexity", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:49:50+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:53:05+00:00" + }, + { + "name": "sebastian/environment", + "version": "7.2.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.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/3473f61172093b2da7de1fb5782e1f24cc036dc3", + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-12-05T09:17:50+00:00" + }, + { + "name": "sebastian/global-state", + "version": "7.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:57:36+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:58:38+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:00:13+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:01:32+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", + "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:10:34+00:00" + }, + { + "name": "sebastian/type", + "version": "5.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", + "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-18T13:35:50+00:00" + }, + { + "name": "sebastian/version", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-09T05:16:32+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/b8d7d868da9eb0919e99c8830431ea087d6aae30", + "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.3.2" + }, + "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-10T08:47:49+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.2" + }, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..423eed5 --- /dev/null +++ b/config/app.php @@ -0,0 +1,126 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | the application so that it's available within Artisan commands. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. The timezone + | is set to "UTC" by default as it is suitable for most use cases. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by Laravel's translation / localization methods. This option can be + | set to any locale for which you plan to have translation strings. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), + + 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is utilized by Laravel's encryption services and should be set + | to a random, 32 character string to ensure that all encrypted values + | are secure. You should do this prior to deploying the application. + | + */ + + 'cipher' => 'AES-256-CBC', + + 'key' => env('APP_KEY'), + + 'previous_keys' => [ + ...array_filter( + explode(',', (string) env('APP_PREVIOUS_KEYS', '')) + ), + ], + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..7d1eb0d --- /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 number of seconds before a password confirmation + | window expires and users are asked to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..c2d927d --- /dev/null +++ b/config/cache.php @@ -0,0 +1,108 @@ + env('CACHE_STORE', 'database'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "array", "database", "file", "memcached", + | "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_CACHE_CONNECTION'), + 'table' => env('DB_CACHE_TABLE', 'cache'), + 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), + 'lock_table' => env('DB_CACHE_LOCK_TABLE'), + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_CACHE_CONNECTION', 'cache'), + 'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'), + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, and DynamoDB cache + | stores, there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-cache-'), + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..5b318f5 --- /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((string) env('APP_NAME', 'laravel')).'-database-'), + 'persistent' => env('REDIS_PERSISTENT', false), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..3d671bd --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,80 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. + | + | Supported drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app/private'), + 'serve' => true, + 'throw' => false, + 'report' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + 'report' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + 'report' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..9e998a4 --- /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(',', (string) 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, + 'handler_with' => [ + 'stream' => 'php://stderr', + ], + 'formatter' => env('LOG_STDERR_FORMATTER'), + '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..522b284 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,118 @@ + 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((string) 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', + ], + 'retry_after' => 60, + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + 'retry_after' => 60, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all emails sent by your application to be sent from + | the same address. Here you may specify a name and address that is + | used globally for all emails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..116bd8d --- /dev/null +++ b/config/queue.php @@ -0,0 +1,112 @@ + env('QUEUE_CONNECTION', 'database'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection options for every queue backend + | used by your application. An example configuration is provided for + | each backend supported by Laravel. You're also free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_QUEUE_CONNECTION'), + 'table' => env('DB_QUEUE_TABLE', 'jobs'), + 'queue' => env('DB_QUEUE', 'default'), + 'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90), + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), + 'queue' => env('BEANSTALKD_QUEUE', 'default'), + 'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90), + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_QUEUE_CONNECTION', 'default'), + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90), + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control how and where failed jobs are stored. Laravel ships with + | support for storing failed jobs in a simple file or in a database. + | + | Supported drivers: "database-uuids", "dynamodb", "file", "null" + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..6182e4b --- /dev/null +++ b/config/services.php @@ -0,0 +1,38 @@ + [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'resend' => [ + 'key' => env('RESEND_KEY'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + '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..f348f5f --- /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: "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::snake((string) env('APP_NAME', 'laravel')).'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application, but you're free to change this when necessary. + | + */ + + 'path' => env('SESSION_PATH', '/'), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | This value determines the domain and subdomains the session cookie is + | available to. By default, the cookie will be available to the root + | domain and all subdomains. Typically, this shouldn't be changed. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. It's unlikely you should disable this option. + | + */ + + 'http_only' => env('SESSION_HTTP_ONLY', true), + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" to permit secure cross-site requests. + | + | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => env('SESSION_SAME_SITE', 'lax'), + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => env('SESSION_PARTITIONED_COOKIE', false), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,44 @@ + + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php new file mode 100644 index 0000000..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/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..d01a0ef --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,23 @@ +create(); + + User::factory()->create([ + 'name' => 'Test User', + 'email' => 'test@example.com', + ]); + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..cbc29f1 --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "dev": "vite" + }, + "devDependencies": { + "axios": "^1.8.2", + "concurrently": "^9.0.1", + "laravel-vite-plugin": "^2.0.0", + "sass": "1.77.6", + "vite": "^6.2.4" + }, + "dependencies": { + "bootstrap": "^5.3.8", + "chart.js": "^4.5.0", + "choices.js": "^11.1.0", + "cleave.js": "^1.6.0", + "drift-zoom": "^1.5.1", + "flatpickr": "^4.6.13", + "glightbox": "^3.3.1", + "img-comparison-slider": "^8.0.6", + "list.js": "^2.3.1", + "nouislider": "^15.8.1", + "simplebar": "^6.3.2", + "swiper": "^11.2.10", + "timezz": "^9.0.2" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..5fd5bcf --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,34 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..b574a59 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,25 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Handle X-XSRF-Token Header + RewriteCond %{HTTP:x-xsrf-token} . + RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/app-icons/favicon.ico b/public/app-icons/favicon.ico new file mode 100644 index 0000000..4efee4e Binary files /dev/null and b/public/app-icons/favicon.ico differ diff --git a/public/app-icons/icon-144x144.png b/public/app-icons/icon-144x144.png new file mode 100644 index 0000000..13633fb Binary files /dev/null and b/public/app-icons/icon-144x144.png differ diff --git a/public/app-icons/icon-180x180.png b/public/app-icons/icon-180x180.png new file mode 100644 index 0000000..ed1421d Binary files /dev/null and b/public/app-icons/icon-180x180.png differ diff --git a/public/app-icons/icon-192x192.png b/public/app-icons/icon-192x192.png new file mode 100644 index 0000000..62a7781 Binary files /dev/null and b/public/app-icons/icon-192x192.png differ diff --git a/public/app-icons/icon-32x32.png b/public/app-icons/icon-32x32.png new file mode 100644 index 0000000..0b05212 Binary files /dev/null and b/public/app-icons/icon-32x32.png differ diff --git a/public/app-icons/icon-512x512.png b/public/app-icons/icon-512x512.png new file mode 100644 index 0000000..efabbbd Binary files /dev/null and b/public/app-icons/icon-512x512.png differ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..4efee4e Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/img/404/furniture.png b/public/img/404/furniture.png new file mode 100644 index 0000000..db54267 Binary files /dev/null and b/public/img/404/furniture.png differ diff --git a/public/img/404/grocery-bg-1.png b/public/img/404/grocery-bg-1.png new file mode 100644 index 0000000..627aaf0 Binary files /dev/null and b/public/img/404/grocery-bg-1.png differ diff --git a/public/img/404/grocery-bg-2.png b/public/img/404/grocery-bg-2.png new file mode 100644 index 0000000..478119a Binary files /dev/null and b/public/img/404/grocery-bg-2.png differ diff --git a/public/img/404/grocery.png b/public/img/404/grocery.png new file mode 100644 index 0000000..10118d1 Binary files /dev/null and b/public/img/404/grocery.png differ diff --git a/public/img/about/v1/avatar.jpg b/public/img/about/v1/avatar.jpg new file mode 100644 index 0000000..853a567 Binary files /dev/null and b/public/img/about/v1/avatar.jpg differ diff --git a/public/img/about/v1/delivery.jpg b/public/img/about/v1/delivery.jpg new file mode 100644 index 0000000..bb2d8d2 Binary files /dev/null and b/public/img/about/v1/delivery.jpg differ diff --git a/public/img/about/v1/hero.jpg b/public/img/about/v1/hero.jpg new file mode 100644 index 0000000..22d9afd Binary files /dev/null and b/public/img/about/v1/hero.jpg differ diff --git a/public/img/about/v1/video-cover.jpg b/public/img/about/v1/video-cover.jpg new file mode 100644 index 0000000..23cdef1 Binary files /dev/null and b/public/img/about/v1/video-cover.jpg differ diff --git a/public/img/about/v2/feature01.jpg b/public/img/about/v2/feature01.jpg new file mode 100644 index 0000000..d19aec9 Binary files /dev/null and b/public/img/about/v2/feature01.jpg differ diff --git a/public/img/about/v2/feature02.jpg b/public/img/about/v2/feature02.jpg new file mode 100644 index 0000000..1067723 Binary files /dev/null and b/public/img/about/v2/feature02.jpg differ diff --git a/public/img/about/v2/feature03.jpg b/public/img/about/v2/feature03.jpg new file mode 100644 index 0000000..8f81a04 Binary files /dev/null and b/public/img/about/v2/feature03.jpg differ diff --git a/public/img/about/v2/hero.jpg b/public/img/about/v2/hero.jpg new file mode 100644 index 0000000..1c1ab9f Binary files /dev/null and b/public/img/about/v2/hero.jpg differ diff --git a/public/img/account/avatar-lg.png b/public/img/account/avatar-lg.png new file mode 100644 index 0000000..d52fb22 Binary files /dev/null and b/public/img/account/avatar-lg.png differ diff --git a/public/img/account/avatar-sm.png b/public/img/account/avatar-sm.png new file mode 100644 index 0000000..3476cd3 Binary files /dev/null and b/public/img/account/avatar-sm.png differ diff --git a/public/img/account/avatar.png b/public/img/account/avatar.png new file mode 100644 index 0000000..5621cd6 Binary files /dev/null and b/public/img/account/avatar.png differ diff --git a/public/img/account/cover.png b/public/img/account/cover.png new file mode 100644 index 0000000..392afd0 Binary files /dev/null and b/public/img/account/cover.png differ diff --git a/public/img/account/products/01.jpg b/public/img/account/products/01.jpg new file mode 100644 index 0000000..57fadc8 Binary files /dev/null and b/public/img/account/products/01.jpg differ diff --git a/public/img/account/products/02.jpg b/public/img/account/products/02.jpg new file mode 100644 index 0000000..5e2c8e6 Binary files /dev/null and b/public/img/account/products/02.jpg differ diff --git a/public/img/account/products/03.jpg b/public/img/account/products/03.jpg new file mode 100644 index 0000000..22ce352 Binary files /dev/null and b/public/img/account/products/03.jpg differ diff --git a/public/img/account/products/04.jpg b/public/img/account/products/04.jpg new file mode 100644 index 0000000..5139193 Binary files /dev/null and b/public/img/account/products/04.jpg differ diff --git a/public/img/account/products/05.jpg b/public/img/account/products/05.jpg new file mode 100644 index 0000000..e8b9745 Binary files /dev/null and b/public/img/account/products/05.jpg differ diff --git a/public/img/account/products/06.jpg b/public/img/account/products/06.jpg new file mode 100644 index 0000000..7e84458 Binary files /dev/null and b/public/img/account/products/06.jpg differ diff --git a/public/img/account/products/07.jpg b/public/img/account/products/07.jpg new file mode 100644 index 0000000..e8115f1 Binary files /dev/null and b/public/img/account/products/07.jpg differ diff --git a/public/img/account/products/08.jpg b/public/img/account/products/08.jpg new file mode 100644 index 0000000..c695866 Binary files /dev/null and b/public/img/account/products/08.jpg differ diff --git a/public/img/account/products/09.jpg b/public/img/account/products/09.jpg new file mode 100644 index 0000000..4e9e435 Binary files /dev/null and b/public/img/account/products/09.jpg differ diff --git a/public/img/account/products/10.jpg b/public/img/account/products/10.jpg new file mode 100644 index 0000000..f6e0826 Binary files /dev/null and b/public/img/account/products/10.jpg differ diff --git a/public/img/account/products/11.jpg b/public/img/account/products/11.jpg new file mode 100644 index 0000000..edb6811 Binary files /dev/null and b/public/img/account/products/11.jpg differ diff --git a/public/img/account/products/12.jpg b/public/img/account/products/12.jpg new file mode 100644 index 0000000..3963a5d Binary files /dev/null and b/public/img/account/products/12.jpg differ diff --git a/public/img/account/products/13.jpg b/public/img/account/products/13.jpg new file mode 100644 index 0000000..e3157f7 Binary files /dev/null and b/public/img/account/products/13.jpg differ diff --git a/public/img/account/products/14.jpg b/public/img/account/products/14.jpg new file mode 100644 index 0000000..f4982cf Binary files /dev/null and b/public/img/account/products/14.jpg differ diff --git a/public/img/account/products/15.jpg b/public/img/account/products/15.jpg new file mode 100644 index 0000000..21a5c9a Binary files /dev/null and b/public/img/account/products/15.jpg differ diff --git a/public/img/account/products/16.jpg b/public/img/account/products/16.jpg new file mode 100644 index 0000000..beb4548 Binary files /dev/null and b/public/img/account/products/16.jpg differ diff --git a/public/img/account/products/17.jpg b/public/img/account/products/17.jpg new file mode 100644 index 0000000..1f15be7 Binary files /dev/null and b/public/img/account/products/17.jpg differ diff --git a/public/img/account/products/18.jpg b/public/img/account/products/18.jpg new file mode 100644 index 0000000..7d1a4a6 Binary files /dev/null and b/public/img/account/products/18.jpg differ diff --git a/public/img/blog/grid/v1/01.jpg b/public/img/blog/grid/v1/01.jpg new file mode 100644 index 0000000..8acd0dd Binary files /dev/null and b/public/img/blog/grid/v1/01.jpg differ diff --git a/public/img/blog/grid/v1/02.jpg b/public/img/blog/grid/v1/02.jpg new file mode 100644 index 0000000..ecadf77 Binary files /dev/null and b/public/img/blog/grid/v1/02.jpg differ diff --git a/public/img/blog/grid/v1/03.jpg b/public/img/blog/grid/v1/03.jpg new file mode 100644 index 0000000..69aad26 Binary files /dev/null and b/public/img/blog/grid/v1/03.jpg differ diff --git a/public/img/blog/grid/v1/04.jpg b/public/img/blog/grid/v1/04.jpg new file mode 100644 index 0000000..0732215 Binary files /dev/null and b/public/img/blog/grid/v1/04.jpg differ diff --git a/public/img/blog/grid/v1/05.jpg b/public/img/blog/grid/v1/05.jpg new file mode 100644 index 0000000..db79c45 Binary files /dev/null and b/public/img/blog/grid/v1/05.jpg differ diff --git a/public/img/blog/grid/v1/06.jpg b/public/img/blog/grid/v1/06.jpg new file mode 100644 index 0000000..4d7c1e9 Binary files /dev/null and b/public/img/blog/grid/v1/06.jpg differ diff --git a/public/img/blog/grid/v1/07.jpg b/public/img/blog/grid/v1/07.jpg new file mode 100644 index 0000000..020ecfe Binary files /dev/null and b/public/img/blog/grid/v1/07.jpg differ diff --git a/public/img/blog/grid/v1/08.jpg b/public/img/blog/grid/v1/08.jpg new file mode 100644 index 0000000..67e18de Binary files /dev/null and b/public/img/blog/grid/v1/08.jpg differ diff --git a/public/img/blog/grid/v1/09.jpg b/public/img/blog/grid/v1/09.jpg new file mode 100644 index 0000000..58d769d Binary files /dev/null and b/public/img/blog/grid/v1/09.jpg differ diff --git a/public/img/blog/grid/v1/10.jpg b/public/img/blog/grid/v1/10.jpg new file mode 100644 index 0000000..0cc7a54 Binary files /dev/null and b/public/img/blog/grid/v1/10.jpg differ diff --git a/public/img/blog/grid/v1/11.jpg b/public/img/blog/grid/v1/11.jpg new file mode 100644 index 0000000..b887598 Binary files /dev/null and b/public/img/blog/grid/v1/11.jpg differ diff --git a/public/img/blog/grid/v1/12.jpg b/public/img/blog/grid/v1/12.jpg new file mode 100644 index 0000000..8ff8ec1 Binary files /dev/null and b/public/img/blog/grid/v1/12.jpg differ diff --git a/public/img/blog/grid/v1/13.jpg b/public/img/blog/grid/v1/13.jpg new file mode 100644 index 0000000..5b859b0 Binary files /dev/null and b/public/img/blog/grid/v1/13.jpg differ diff --git a/public/img/blog/grid/v1/14.jpg b/public/img/blog/grid/v1/14.jpg new file mode 100644 index 0000000..b06fc3c Binary files /dev/null and b/public/img/blog/grid/v1/14.jpg differ diff --git a/public/img/blog/grid/v1/slider01.jpg b/public/img/blog/grid/v1/slider01.jpg new file mode 100644 index 0000000..e1071c4 Binary files /dev/null and b/public/img/blog/grid/v1/slider01.jpg differ diff --git a/public/img/blog/grid/v1/slider02.jpg b/public/img/blog/grid/v1/slider02.jpg new file mode 100644 index 0000000..c7865f2 Binary files /dev/null and b/public/img/blog/grid/v1/slider02.jpg differ diff --git a/public/img/blog/grid/v1/th01.jpg b/public/img/blog/grid/v1/th01.jpg new file mode 100644 index 0000000..9db9146 Binary files /dev/null and b/public/img/blog/grid/v1/th01.jpg differ diff --git a/public/img/blog/grid/v1/th02.jpg b/public/img/blog/grid/v1/th02.jpg new file mode 100644 index 0000000..5d3b599 Binary files /dev/null and b/public/img/blog/grid/v1/th02.jpg differ diff --git a/public/img/blog/grid/v1/th03.jpg b/public/img/blog/grid/v1/th03.jpg new file mode 100644 index 0000000..042246f Binary files /dev/null and b/public/img/blog/grid/v1/th03.jpg differ diff --git a/public/img/blog/grid/v1/video01.jpg b/public/img/blog/grid/v1/video01.jpg new file mode 100644 index 0000000..6ce3a8b Binary files /dev/null and b/public/img/blog/grid/v1/video01.jpg differ diff --git a/public/img/blog/grid/v1/video02.jpg b/public/img/blog/grid/v1/video02.jpg new file mode 100644 index 0000000..428669c Binary files /dev/null and b/public/img/blog/grid/v1/video02.jpg differ diff --git a/public/img/blog/grid/v1/video03.jpg b/public/img/blog/grid/v1/video03.jpg new file mode 100644 index 0000000..895404d Binary files /dev/null and b/public/img/blog/grid/v1/video03.jpg differ diff --git a/public/img/blog/grid/v1/video04.jpg b/public/img/blog/grid/v1/video04.jpg new file mode 100644 index 0000000..69864ce Binary files /dev/null and b/public/img/blog/grid/v1/video04.jpg differ diff --git a/public/img/blog/grid/v2/01.jpg b/public/img/blog/grid/v2/01.jpg new file mode 100644 index 0000000..e2e6230 Binary files /dev/null and b/public/img/blog/grid/v2/01.jpg differ diff --git a/public/img/blog/grid/v2/02.jpg b/public/img/blog/grid/v2/02.jpg new file mode 100644 index 0000000..15a6ec3 Binary files /dev/null and b/public/img/blog/grid/v2/02.jpg differ diff --git a/public/img/blog/grid/v2/03.jpg b/public/img/blog/grid/v2/03.jpg new file mode 100644 index 0000000..7de3db4 Binary files /dev/null and b/public/img/blog/grid/v2/03.jpg differ diff --git a/public/img/blog/grid/v2/04.jpg b/public/img/blog/grid/v2/04.jpg new file mode 100644 index 0000000..9e646c1 Binary files /dev/null and b/public/img/blog/grid/v2/04.jpg differ diff --git a/public/img/blog/grid/v2/05.jpg b/public/img/blog/grid/v2/05.jpg new file mode 100644 index 0000000..8527d0b Binary files /dev/null and b/public/img/blog/grid/v2/05.jpg differ diff --git a/public/img/blog/grid/v2/06.jpg b/public/img/blog/grid/v2/06.jpg new file mode 100644 index 0000000..e5e49cd Binary files /dev/null and b/public/img/blog/grid/v2/06.jpg differ diff --git a/public/img/blog/grid/v2/07.jpg b/public/img/blog/grid/v2/07.jpg new file mode 100644 index 0000000..bcf2d46 Binary files /dev/null and b/public/img/blog/grid/v2/07.jpg differ diff --git a/public/img/blog/grid/v2/08.jpg b/public/img/blog/grid/v2/08.jpg new file mode 100644 index 0000000..3a992a5 Binary files /dev/null and b/public/img/blog/grid/v2/08.jpg differ diff --git a/public/img/blog/grid/v2/09.jpg b/public/img/blog/grid/v2/09.jpg new file mode 100644 index 0000000..ede5b23 Binary files /dev/null and b/public/img/blog/grid/v2/09.jpg differ diff --git a/public/img/blog/grid/v2/10.jpg b/public/img/blog/grid/v2/10.jpg new file mode 100644 index 0000000..f5c5022 Binary files /dev/null and b/public/img/blog/grid/v2/10.jpg differ diff --git a/public/img/blog/grid/v2/11.jpg b/public/img/blog/grid/v2/11.jpg new file mode 100644 index 0000000..2bb75ee Binary files /dev/null and b/public/img/blog/grid/v2/11.jpg differ diff --git a/public/img/blog/grid/v2/12.jpg b/public/img/blog/grid/v2/12.jpg new file mode 100644 index 0000000..c711b9f Binary files /dev/null and b/public/img/blog/grid/v2/12.jpg differ diff --git a/public/img/blog/grid/v2/13.jpg b/public/img/blog/grid/v2/13.jpg new file mode 100644 index 0000000..dc040ce Binary files /dev/null and b/public/img/blog/grid/v2/13.jpg differ diff --git a/public/img/blog/grid/v2/14.jpg b/public/img/blog/grid/v2/14.jpg new file mode 100644 index 0000000..9215340 Binary files /dev/null and b/public/img/blog/grid/v2/14.jpg differ diff --git a/public/img/blog/grid/v2/15.jpg b/public/img/blog/grid/v2/15.jpg new file mode 100644 index 0000000..1564289 Binary files /dev/null and b/public/img/blog/grid/v2/15.jpg differ diff --git a/public/img/blog/grid/v2/video01.jpg b/public/img/blog/grid/v2/video01.jpg new file mode 100644 index 0000000..ffef3cd Binary files /dev/null and b/public/img/blog/grid/v2/video01.jpg differ diff --git a/public/img/blog/grid/v2/video02.jpg b/public/img/blog/grid/v2/video02.jpg new file mode 100644 index 0000000..65e82ce Binary files /dev/null and b/public/img/blog/grid/v2/video02.jpg differ diff --git a/public/img/blog/list/01.jpg b/public/img/blog/list/01.jpg new file mode 100644 index 0000000..ffaf29b Binary files /dev/null and b/public/img/blog/list/01.jpg differ diff --git a/public/img/blog/list/02.jpg b/public/img/blog/list/02.jpg new file mode 100644 index 0000000..f306356 Binary files /dev/null and b/public/img/blog/list/02.jpg differ diff --git a/public/img/blog/list/03.jpg b/public/img/blog/list/03.jpg new file mode 100644 index 0000000..625cd7d Binary files /dev/null and b/public/img/blog/list/03.jpg differ diff --git a/public/img/blog/list/04.jpg b/public/img/blog/list/04.jpg new file mode 100644 index 0000000..b1989d1 Binary files /dev/null and b/public/img/blog/list/04.jpg differ diff --git a/public/img/blog/list/05.jpg b/public/img/blog/list/05.jpg new file mode 100644 index 0000000..cc8602f Binary files /dev/null and b/public/img/blog/list/05.jpg differ diff --git a/public/img/blog/list/06.jpg b/public/img/blog/list/06.jpg new file mode 100644 index 0000000..b3a3aa1 Binary files /dev/null and b/public/img/blog/list/06.jpg differ diff --git a/public/img/blog/list/07.jpg b/public/img/blog/list/07.jpg new file mode 100644 index 0000000..40e8d38 Binary files /dev/null and b/public/img/blog/list/07.jpg differ diff --git a/public/img/blog/list/08.jpg b/public/img/blog/list/08.jpg new file mode 100644 index 0000000..a5508d4 Binary files /dev/null and b/public/img/blog/list/08.jpg differ diff --git a/public/img/blog/list/09.jpg b/public/img/blog/list/09.jpg new file mode 100644 index 0000000..749a6c0 Binary files /dev/null and b/public/img/blog/list/09.jpg differ diff --git a/public/img/blog/list/10.jpg b/public/img/blog/list/10.jpg new file mode 100644 index 0000000..705fa15 Binary files /dev/null and b/public/img/blog/list/10.jpg differ diff --git a/public/img/blog/list/11.jpg b/public/img/blog/list/11.jpg new file mode 100644 index 0000000..2ba779e Binary files /dev/null and b/public/img/blog/list/11.jpg differ diff --git a/public/img/blog/list/12.jpg b/public/img/blog/list/12.jpg new file mode 100644 index 0000000..134fc2b Binary files /dev/null and b/public/img/blog/list/12.jpg differ diff --git a/public/img/blog/post/main.jpg b/public/img/blog/post/main.jpg new file mode 100644 index 0000000..90439f9 Binary files /dev/null and b/public/img/blog/post/main.jpg differ diff --git a/public/img/blog/post/nav01.jpg b/public/img/blog/post/nav01.jpg new file mode 100644 index 0000000..8bf057e Binary files /dev/null and b/public/img/blog/post/nav01.jpg differ diff --git a/public/img/blog/post/nav02.jpg b/public/img/blog/post/nav02.jpg new file mode 100644 index 0000000..f4fb8f0 Binary files /dev/null and b/public/img/blog/post/nav02.jpg differ diff --git a/public/img/blog/post/slide01.jpg b/public/img/blog/post/slide01.jpg new file mode 100644 index 0000000..4c2134d Binary files /dev/null and b/public/img/blog/post/slide01.jpg differ diff --git a/public/img/blog/post/slide02.jpg b/public/img/blog/post/slide02.jpg new file mode 100644 index 0000000..66cd6f4 Binary files /dev/null and b/public/img/blog/post/slide02.jpg differ diff --git a/public/img/blog/post/slide03.jpg b/public/img/blog/post/slide03.jpg new file mode 100644 index 0000000..6c3e637 Binary files /dev/null and b/public/img/blog/post/slide03.jpg differ diff --git a/public/img/contact/form-image.jpg b/public/img/contact/form-image.jpg new file mode 100644 index 0000000..7a9078c Binary files /dev/null and b/public/img/contact/form-image.jpg differ diff --git a/public/img/contact/map.jpg b/public/img/contact/map.jpg new file mode 100644 index 0000000..34beebb Binary files /dev/null and b/public/img/contact/map.jpg differ diff --git a/public/img/contact/title-bg.png b/public/img/contact/title-bg.png new file mode 100644 index 0000000..c8bea16 Binary files /dev/null and b/public/img/contact/title-bg.png differ diff --git a/public/img/docs/browserslistrc.png b/public/img/docs/browserslistrc.png new file mode 100644 index 0000000..22cf5c8 Binary files /dev/null and b/public/img/docs/browserslistrc.png differ diff --git a/public/img/docs/cache.png b/public/img/docs/cache.png new file mode 100644 index 0000000..7654372 Binary files /dev/null and b/public/img/docs/cache.png differ diff --git a/public/img/docs/card/img-hover.jpg b/public/img/docs/card/img-hover.jpg new file mode 100644 index 0000000..19679ba Binary files /dev/null and b/public/img/docs/card/img-hover.jpg differ diff --git a/public/img/docs/card/img.png b/public/img/docs/card/img.png new file mode 100644 index 0000000..c8ddad0 Binary files /dev/null and b/public/img/docs/card/img.png differ diff --git a/public/img/docs/image-comparison-slider/after.jpg b/public/img/docs/image-comparison-slider/after.jpg new file mode 100644 index 0000000..90ac778 Binary files /dev/null and b/public/img/docs/image-comparison-slider/after.jpg differ diff --git a/public/img/docs/image-comparison-slider/before.jpg b/public/img/docs/image-comparison-slider/before.jpg new file mode 100644 index 0000000..63451c9 Binary files /dev/null and b/public/img/docs/image-comparison-slider/before.jpg differ diff --git a/public/img/docs/local-storage.png b/public/img/docs/local-storage.png new file mode 100644 index 0000000..820fa4d Binary files /dev/null and b/public/img/docs/local-storage.png differ diff --git a/public/img/docs/vercel.png b/public/img/docs/vercel.png new file mode 100644 index 0000000..9362eb2 Binary files /dev/null and b/public/img/docs/vercel.png differ diff --git a/public/img/flags/de.png b/public/img/flags/de.png new file mode 100644 index 0000000..4455a98 Binary files /dev/null and b/public/img/flags/de.png differ diff --git a/public/img/flags/en-uk.png b/public/img/flags/en-uk.png new file mode 100644 index 0000000..dfa705e Binary files /dev/null and b/public/img/flags/en-uk.png differ diff --git a/public/img/flags/en-us.png b/public/img/flags/en-us.png new file mode 100644 index 0000000..0a25bfd Binary files /dev/null and b/public/img/flags/en-us.png differ diff --git a/public/img/flags/fr.png b/public/img/flags/fr.png new file mode 100644 index 0000000..83dcd9f Binary files /dev/null and b/public/img/flags/fr.png differ diff --git a/public/img/flags/it.png b/public/img/flags/it.png new file mode 100644 index 0000000..372da6a Binary files /dev/null and b/public/img/flags/it.png differ diff --git a/public/img/help/article01.jpg b/public/img/help/article01.jpg new file mode 100644 index 0000000..e418000 Binary files /dev/null and b/public/img/help/article01.jpg differ diff --git a/public/img/help/article02.jpg b/public/img/help/article02.jpg new file mode 100644 index 0000000..771ee15 Binary files /dev/null and b/public/img/help/article02.jpg differ diff --git a/public/img/help/article03.jpg b/public/img/help/article03.jpg new file mode 100644 index 0000000..f969dd6 Binary files /dev/null and b/public/img/help/article03.jpg differ diff --git a/public/img/help/article04.jpg b/public/img/help/article04.jpg new file mode 100644 index 0000000..26f38ae Binary files /dev/null and b/public/img/help/article04.jpg differ diff --git a/public/img/help/hero-dark.png b/public/img/help/hero-dark.png new file mode 100644 index 0000000..19cc63a Binary files /dev/null and b/public/img/help/hero-dark.png differ diff --git a/public/img/help/hero-light.png b/public/img/help/hero-light.png new file mode 100644 index 0000000..4e9e305 Binary files /dev/null and b/public/img/help/hero-light.png differ diff --git a/public/img/help/single.jpg b/public/img/help/single.jpg new file mode 100644 index 0000000..75807cc Binary files /dev/null and b/public/img/help/single.jpg differ diff --git a/public/img/home/electronics/banner/background.jpg b/public/img/home/electronics/banner/background.jpg new file mode 100644 index 0000000..8d914e4 Binary files /dev/null and b/public/img/home/electronics/banner/background.jpg differ diff --git a/public/img/home/electronics/banner/camera.png b/public/img/home/electronics/banner/camera.png new file mode 100644 index 0000000..800bb8e Binary files /dev/null and b/public/img/home/electronics/banner/camera.png differ diff --git a/public/img/home/electronics/banner/laptop.png b/public/img/home/electronics/banner/laptop.png new file mode 100644 index 0000000..60b5645 Binary files /dev/null and b/public/img/home/electronics/banner/laptop.png differ diff --git a/public/img/home/electronics/hero-slider/01.png b/public/img/home/electronics/hero-slider/01.png new file mode 100644 index 0000000..b08a968 Binary files /dev/null and b/public/img/home/electronics/hero-slider/01.png differ diff --git a/public/img/home/electronics/hero-slider/02.png b/public/img/home/electronics/hero-slider/02.png new file mode 100644 index 0000000..b8ef950 Binary files /dev/null and b/public/img/home/electronics/hero-slider/02.png differ diff --git a/public/img/home/electronics/hero-slider/03.png b/public/img/home/electronics/hero-slider/03.png new file mode 100644 index 0000000..93a7ccc Binary files /dev/null and b/public/img/home/electronics/hero-slider/03.png differ diff --git a/public/img/home/electronics/vlog/01.jpg b/public/img/home/electronics/vlog/01.jpg new file mode 100644 index 0000000..8b54c09 Binary files /dev/null and b/public/img/home/electronics/vlog/01.jpg differ diff --git a/public/img/home/electronics/vlog/02.jpg b/public/img/home/electronics/vlog/02.jpg new file mode 100644 index 0000000..3bc781f Binary files /dev/null and b/public/img/home/electronics/vlog/02.jpg differ diff --git a/public/img/home/electronics/vlog/03.jpg b/public/img/home/electronics/vlog/03.jpg new file mode 100644 index 0000000..9068bee Binary files /dev/null and b/public/img/home/electronics/vlog/03.jpg differ diff --git a/public/img/home/fashion/v1/collection/01.jpg b/public/img/home/fashion/v1/collection/01.jpg new file mode 100644 index 0000000..7a82c1f Binary files /dev/null and b/public/img/home/fashion/v1/collection/01.jpg differ diff --git a/public/img/home/fashion/v1/collection/02.jpg b/public/img/home/fashion/v1/collection/02.jpg new file mode 100644 index 0000000..f8f29aa Binary files /dev/null and b/public/img/home/fashion/v1/collection/02.jpg differ diff --git a/public/img/home/fashion/v1/hero-slider/01.png b/public/img/home/fashion/v1/hero-slider/01.png new file mode 100644 index 0000000..3147c36 Binary files /dev/null and b/public/img/home/fashion/v1/hero-slider/01.png differ diff --git a/public/img/home/fashion/v1/hero-slider/02.png b/public/img/home/fashion/v1/hero-slider/02.png new file mode 100644 index 0000000..4b2b8da Binary files /dev/null and b/public/img/home/fashion/v1/hero-slider/02.png differ diff --git a/public/img/home/fashion/v1/hero-slider/03.png b/public/img/home/fashion/v1/hero-slider/03.png new file mode 100644 index 0000000..4b93a00 Binary files /dev/null and b/public/img/home/fashion/v1/hero-slider/03.png differ diff --git a/public/img/home/fashion/v1/popular/01.jpg b/public/img/home/fashion/v1/popular/01.jpg new file mode 100644 index 0000000..effc594 Binary files /dev/null and b/public/img/home/fashion/v1/popular/01.jpg differ diff --git a/public/img/home/fashion/v1/popular/02.jpg b/public/img/home/fashion/v1/popular/02.jpg new file mode 100644 index 0000000..c723a8e Binary files /dev/null and b/public/img/home/fashion/v1/popular/02.jpg differ diff --git a/public/img/home/fashion/v1/reviews/01.png b/public/img/home/fashion/v1/reviews/01.png new file mode 100644 index 0000000..d90f922 Binary files /dev/null and b/public/img/home/fashion/v1/reviews/01.png differ diff --git a/public/img/home/fashion/v1/reviews/02.png b/public/img/home/fashion/v1/reviews/02.png new file mode 100644 index 0000000..45d6caa Binary files /dev/null and b/public/img/home/fashion/v1/reviews/02.png differ diff --git a/public/img/home/fashion/v1/reviews/03.png b/public/img/home/fashion/v1/reviews/03.png new file mode 100644 index 0000000..b89ba93 Binary files /dev/null and b/public/img/home/fashion/v1/reviews/03.png differ diff --git a/public/img/home/fashion/v1/reviews/04.png b/public/img/home/fashion/v1/reviews/04.png new file mode 100644 index 0000000..edef80c Binary files /dev/null and b/public/img/home/fashion/v1/reviews/04.png differ diff --git a/public/img/home/fashion/v1/reviews/05.png b/public/img/home/fashion/v1/reviews/05.png new file mode 100644 index 0000000..c1d7f8c Binary files /dev/null and b/public/img/home/fashion/v1/reviews/05.png differ diff --git a/public/img/home/fashion/v2/brands/adidas-dark.svg b/public/img/home/fashion/v2/brands/adidas-dark.svg new file mode 100644 index 0000000..a33f8fe --- /dev/null +++ b/public/img/home/fashion/v2/brands/adidas-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/adidas-light.svg b/public/img/home/fashion/v2/brands/adidas-light.svg new file mode 100644 index 0000000..0cd3e34 --- /dev/null +++ b/public/img/home/fashion/v2/brands/adidas-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/brooks-dark.svg b/public/img/home/fashion/v2/brands/brooks-dark.svg new file mode 100644 index 0000000..8d194e2 --- /dev/null +++ b/public/img/home/fashion/v2/brands/brooks-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/brooks-light.svg b/public/img/home/fashion/v2/brands/brooks-light.svg new file mode 100644 index 0000000..f4ca18a --- /dev/null +++ b/public/img/home/fashion/v2/brands/brooks-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/dior-dark.svg b/public/img/home/fashion/v2/brands/dior-dark.svg new file mode 100644 index 0000000..c76ae48 --- /dev/null +++ b/public/img/home/fashion/v2/brands/dior-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/dior-light.svg b/public/img/home/fashion/v2/brands/dior-light.svg new file mode 100644 index 0000000..c9f84d6 --- /dev/null +++ b/public/img/home/fashion/v2/brands/dior-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/fila-dark.svg b/public/img/home/fashion/v2/brands/fila-dark.svg new file mode 100644 index 0000000..dc55d5d --- /dev/null +++ b/public/img/home/fashion/v2/brands/fila-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/fila-light.svg b/public/img/home/fashion/v2/brands/fila-light.svg new file mode 100644 index 0000000..175b103 --- /dev/null +++ b/public/img/home/fashion/v2/brands/fila-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/hermes-dark.svg b/public/img/home/fashion/v2/brands/hermes-dark.svg new file mode 100644 index 0000000..0b6819e --- /dev/null +++ b/public/img/home/fashion/v2/brands/hermes-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/hermes-light.svg b/public/img/home/fashion/v2/brands/hermes-light.svg new file mode 100644 index 0000000..977a410 --- /dev/null +++ b/public/img/home/fashion/v2/brands/hermes-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/hm-dark.svg b/public/img/home/fashion/v2/brands/hm-dark.svg new file mode 100644 index 0000000..959493d --- /dev/null +++ b/public/img/home/fashion/v2/brands/hm-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/hm-light.svg b/public/img/home/fashion/v2/brands/hm-light.svg new file mode 100644 index 0000000..5659bf5 --- /dev/null +++ b/public/img/home/fashion/v2/brands/hm-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/newbalance-dark.svg b/public/img/home/fashion/v2/brands/newbalance-dark.svg new file mode 100644 index 0000000..6705cd2 --- /dev/null +++ b/public/img/home/fashion/v2/brands/newbalance-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/newbalance-light.svg b/public/img/home/fashion/v2/brands/newbalance-light.svg new file mode 100644 index 0000000..b2f3810 --- /dev/null +++ b/public/img/home/fashion/v2/brands/newbalance-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/puma-dark.svg b/public/img/home/fashion/v2/brands/puma-dark.svg new file mode 100644 index 0000000..41c4162 --- /dev/null +++ b/public/img/home/fashion/v2/brands/puma-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/puma-light.svg b/public/img/home/fashion/v2/brands/puma-light.svg new file mode 100644 index 0000000..da07f3d --- /dev/null +++ b/public/img/home/fashion/v2/brands/puma-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/zara-dark.svg b/public/img/home/fashion/v2/brands/zara-dark.svg new file mode 100644 index 0000000..4ae42b7 --- /dev/null +++ b/public/img/home/fashion/v2/brands/zara-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/brands/zara-light.svg b/public/img/home/fashion/v2/brands/zara-light.svg new file mode 100644 index 0000000..1d642c7 --- /dev/null +++ b/public/img/home/fashion/v2/brands/zara-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/home/fashion/v2/categories/01.png b/public/img/home/fashion/v2/categories/01.png new file mode 100644 index 0000000..49852eb Binary files /dev/null and b/public/img/home/fashion/v2/categories/01.png differ diff --git a/public/img/home/fashion/v2/categories/02.png b/public/img/home/fashion/v2/categories/02.png new file mode 100644 index 0000000..deb45ce Binary files /dev/null and b/public/img/home/fashion/v2/categories/02.png differ diff --git a/public/img/home/fashion/v2/categories/03.png b/public/img/home/fashion/v2/categories/03.png new file mode 100644 index 0000000..b4041c0 Binary files /dev/null and b/public/img/home/fashion/v2/categories/03.png differ diff --git a/public/img/home/fashion/v2/hero/hotspot01.png b/public/img/home/fashion/v2/hero/hotspot01.png new file mode 100644 index 0000000..9d6289b Binary files /dev/null and b/public/img/home/fashion/v2/hero/hotspot01.png differ diff --git a/public/img/home/fashion/v2/hero/hotspot02.png b/public/img/home/fashion/v2/hero/hotspot02.png new file mode 100644 index 0000000..42252c0 Binary files /dev/null and b/public/img/home/fashion/v2/hero/hotspot02.png differ diff --git a/public/img/home/fashion/v2/hero/hotspot03.png b/public/img/home/fashion/v2/hero/hotspot03.png new file mode 100644 index 0000000..972dcba Binary files /dev/null and b/public/img/home/fashion/v2/hero/hotspot03.png differ diff --git a/public/img/home/fashion/v2/hero/image.png b/public/img/home/fashion/v2/hero/image.png new file mode 100644 index 0000000..48fe348 Binary files /dev/null and b/public/img/home/fashion/v2/hero/image.png differ diff --git a/public/img/home/fashion/v2/offers-slider/preview01.png b/public/img/home/fashion/v2/offers-slider/preview01.png new file mode 100644 index 0000000..1bf5496 Binary files /dev/null and b/public/img/home/fashion/v2/offers-slider/preview01.png differ diff --git a/public/img/home/fashion/v2/offers-slider/preview02.png b/public/img/home/fashion/v2/offers-slider/preview02.png new file mode 100644 index 0000000..442b8cf Binary files /dev/null and b/public/img/home/fashion/v2/offers-slider/preview02.png differ diff --git a/public/img/home/fashion/v2/offers-slider/product01.png b/public/img/home/fashion/v2/offers-slider/product01.png new file mode 100644 index 0000000..13e54fc Binary files /dev/null and b/public/img/home/fashion/v2/offers-slider/product01.png differ diff --git a/public/img/home/fashion/v2/offers-slider/product02.png b/public/img/home/fashion/v2/offers-slider/product02.png new file mode 100644 index 0000000..5c96f54 Binary files /dev/null and b/public/img/home/fashion/v2/offers-slider/product02.png differ diff --git a/public/img/home/furniture/categories/01.png b/public/img/home/furniture/categories/01.png new file mode 100644 index 0000000..1d3464e Binary files /dev/null and b/public/img/home/furniture/categories/01.png differ diff --git a/public/img/home/furniture/categories/02.png b/public/img/home/furniture/categories/02.png new file mode 100644 index 0000000..521befe Binary files /dev/null and b/public/img/home/furniture/categories/02.png differ diff --git a/public/img/home/furniture/categories/03.png b/public/img/home/furniture/categories/03.png new file mode 100644 index 0000000..213d8fa Binary files /dev/null and b/public/img/home/furniture/categories/03.png differ diff --git a/public/img/home/furniture/categories/04.png b/public/img/home/furniture/categories/04.png new file mode 100644 index 0000000..f02e85e Binary files /dev/null and b/public/img/home/furniture/categories/04.png differ diff --git a/public/img/home/furniture/categories/05.png b/public/img/home/furniture/categories/05.png new file mode 100644 index 0000000..0404a84 Binary files /dev/null and b/public/img/home/furniture/categories/05.png differ diff --git a/public/img/home/furniture/categories/06.png b/public/img/home/furniture/categories/06.png new file mode 100644 index 0000000..5ace77e Binary files /dev/null and b/public/img/home/furniture/categories/06.png differ diff --git a/public/img/home/furniture/featured-product-thumbnail.jpg b/public/img/home/furniture/featured-product-thumbnail.jpg new file mode 100644 index 0000000..7258053 Binary files /dev/null and b/public/img/home/furniture/featured-product-thumbnail.jpg differ diff --git a/public/img/home/furniture/featured-product.png b/public/img/home/furniture/featured-product.png new file mode 100644 index 0000000..7742191 Binary files /dev/null and b/public/img/home/furniture/featured-product.png differ diff --git a/public/img/home/furniture/gallery/01.jpg b/public/img/home/furniture/gallery/01.jpg new file mode 100644 index 0000000..805faeb Binary files /dev/null and b/public/img/home/furniture/gallery/01.jpg differ diff --git a/public/img/home/furniture/gallery/02.jpg b/public/img/home/furniture/gallery/02.jpg new file mode 100644 index 0000000..6c7591e Binary files /dev/null and b/public/img/home/furniture/gallery/02.jpg differ diff --git a/public/img/home/furniture/gallery/03.jpg b/public/img/home/furniture/gallery/03.jpg new file mode 100644 index 0000000..0f60fe8 Binary files /dev/null and b/public/img/home/furniture/gallery/03.jpg differ diff --git a/public/img/home/furniture/gallery/04.jpg b/public/img/home/furniture/gallery/04.jpg new file mode 100644 index 0000000..30fb925 Binary files /dev/null and b/public/img/home/furniture/gallery/04.jpg differ diff --git a/public/img/home/furniture/gallery/hotspot01.png b/public/img/home/furniture/gallery/hotspot01.png new file mode 100644 index 0000000..60c0dbc Binary files /dev/null and b/public/img/home/furniture/gallery/hotspot01.png differ diff --git a/public/img/home/furniture/gallery/hotspot02.png b/public/img/home/furniture/gallery/hotspot02.png new file mode 100644 index 0000000..b7bebc0 Binary files /dev/null and b/public/img/home/furniture/gallery/hotspot02.png differ diff --git a/public/img/home/furniture/gallery/hotspot03.png b/public/img/home/furniture/gallery/hotspot03.png new file mode 100644 index 0000000..80926dd Binary files /dev/null and b/public/img/home/furniture/gallery/hotspot03.png differ diff --git a/public/img/home/furniture/hero-slider/01.png b/public/img/home/furniture/hero-slider/01.png new file mode 100644 index 0000000..de73b01 Binary files /dev/null and b/public/img/home/furniture/hero-slider/01.png differ diff --git a/public/img/home/furniture/hero-slider/02.png b/public/img/home/furniture/hero-slider/02.png new file mode 100644 index 0000000..b5ad768 Binary files /dev/null and b/public/img/home/furniture/hero-slider/02.png differ diff --git a/public/img/home/furniture/hero-slider/03.png b/public/img/home/furniture/hero-slider/03.png new file mode 100644 index 0000000..8edc516 Binary files /dev/null and b/public/img/home/furniture/hero-slider/03.png differ diff --git a/public/img/home/furniture/hero-slider/04.png b/public/img/home/furniture/hero-slider/04.png new file mode 100644 index 0000000..cdb942a Binary files /dev/null and b/public/img/home/furniture/hero-slider/04.png differ diff --git a/public/img/home/furniture/hero-slider/th01.png b/public/img/home/furniture/hero-slider/th01.png new file mode 100644 index 0000000..a3ac74c Binary files /dev/null and b/public/img/home/furniture/hero-slider/th01.png differ diff --git a/public/img/home/furniture/hero-slider/th02.png b/public/img/home/furniture/hero-slider/th02.png new file mode 100644 index 0000000..15ca2e0 Binary files /dev/null and b/public/img/home/furniture/hero-slider/th02.png differ diff --git a/public/img/home/furniture/hero-slider/th03.png b/public/img/home/furniture/hero-slider/th03.png new file mode 100644 index 0000000..ecd0a3c Binary files /dev/null and b/public/img/home/furniture/hero-slider/th03.png differ diff --git a/public/img/home/furniture/hero-slider/th04.png b/public/img/home/furniture/hero-slider/th04.png new file mode 100644 index 0000000..35f0fd2 Binary files /dev/null and b/public/img/home/furniture/hero-slider/th04.png differ diff --git a/public/img/home/grocery/banner01.png b/public/img/home/grocery/banner01.png new file mode 100644 index 0000000..fea9bfb Binary files /dev/null and b/public/img/home/grocery/banner01.png differ diff --git a/public/img/home/grocery/banner02.png b/public/img/home/grocery/banner02.png new file mode 100644 index 0000000..aa6e381 Binary files /dev/null and b/public/img/home/grocery/banner02.png differ diff --git a/public/img/home/grocery/featured/01.png b/public/img/home/grocery/featured/01.png new file mode 100644 index 0000000..8f6cc4a Binary files /dev/null and b/public/img/home/grocery/featured/01.png differ diff --git a/public/img/home/grocery/featured/02.png b/public/img/home/grocery/featured/02.png new file mode 100644 index 0000000..2f3e4e5 Binary files /dev/null and b/public/img/home/grocery/featured/02.png differ diff --git a/public/img/home/grocery/featured/03.png b/public/img/home/grocery/featured/03.png new file mode 100644 index 0000000..d114b08 Binary files /dev/null and b/public/img/home/grocery/featured/03.png differ diff --git a/public/img/home/grocery/hero-slider/01.jpg b/public/img/home/grocery/hero-slider/01.jpg new file mode 100644 index 0000000..fdbd054 Binary files /dev/null and b/public/img/home/grocery/hero-slider/01.jpg differ diff --git a/public/img/home/grocery/hero-slider/02.jpg b/public/img/home/grocery/hero-slider/02.jpg new file mode 100644 index 0000000..4823044 Binary files /dev/null and b/public/img/home/grocery/hero-slider/02.jpg differ diff --git a/public/img/home/grocery/hero-slider/03.jpg b/public/img/home/grocery/hero-slider/03.jpg new file mode 100644 index 0000000..712a189 Binary files /dev/null and b/public/img/home/grocery/hero-slider/03.jpg differ diff --git a/public/img/home/grocery/recipes/01.jpg b/public/img/home/grocery/recipes/01.jpg new file mode 100644 index 0000000..6b99540 Binary files /dev/null and b/public/img/home/grocery/recipes/01.jpg differ diff --git a/public/img/home/grocery/recipes/02.jpg b/public/img/home/grocery/recipes/02.jpg new file mode 100644 index 0000000..4f87740 Binary files /dev/null and b/public/img/home/grocery/recipes/02.jpg differ diff --git a/public/img/home/grocery/recipes/03.jpg b/public/img/home/grocery/recipes/03.jpg new file mode 100644 index 0000000..fd9aa15 Binary files /dev/null and b/public/img/home/grocery/recipes/03.jpg differ diff --git a/public/img/home/grocery/recipes/book-cover.jpg b/public/img/home/grocery/recipes/book-cover.jpg new file mode 100644 index 0000000..dfbcd03 Binary files /dev/null and b/public/img/home/grocery/recipes/book-cover.jpg differ diff --git a/public/img/home/marketplace/cart/01.jpg b/public/img/home/marketplace/cart/01.jpg new file mode 100644 index 0000000..1fcd48d Binary files /dev/null and b/public/img/home/marketplace/cart/01.jpg differ diff --git a/public/img/home/marketplace/cart/02.jpg b/public/img/home/marketplace/cart/02.jpg new file mode 100644 index 0000000..12ad530 Binary files /dev/null and b/public/img/home/marketplace/cart/02.jpg differ diff --git a/public/img/home/marketplace/cart/03.jpg b/public/img/home/marketplace/cart/03.jpg new file mode 100644 index 0000000..2eaf561 Binary files /dev/null and b/public/img/home/marketplace/cart/03.jpg differ diff --git a/public/img/home/marketplace/categories/01.jpg b/public/img/home/marketplace/categories/01.jpg new file mode 100644 index 0000000..e5370db Binary files /dev/null and b/public/img/home/marketplace/categories/01.jpg differ diff --git a/public/img/home/marketplace/categories/02.jpg b/public/img/home/marketplace/categories/02.jpg new file mode 100644 index 0000000..d96aa58 Binary files /dev/null and b/public/img/home/marketplace/categories/02.jpg differ diff --git a/public/img/home/marketplace/categories/03.jpg b/public/img/home/marketplace/categories/03.jpg new file mode 100644 index 0000000..b6682ef Binary files /dev/null and b/public/img/home/marketplace/categories/03.jpg differ diff --git a/public/img/home/marketplace/categories/04.jpg b/public/img/home/marketplace/categories/04.jpg new file mode 100644 index 0000000..402a8c8 Binary files /dev/null and b/public/img/home/marketplace/categories/04.jpg differ diff --git a/public/img/home/marketplace/categories/05.jpg b/public/img/home/marketplace/categories/05.jpg new file mode 100644 index 0000000..0a0660c Binary files /dev/null and b/public/img/home/marketplace/categories/05.jpg differ diff --git a/public/img/home/marketplace/categories/06.jpg b/public/img/home/marketplace/categories/06.jpg new file mode 100644 index 0000000..d31a147 Binary files /dev/null and b/public/img/home/marketplace/categories/06.jpg differ diff --git a/public/img/home/marketplace/collections/01.jpg b/public/img/home/marketplace/collections/01.jpg new file mode 100644 index 0000000..93c76a2 Binary files /dev/null and b/public/img/home/marketplace/collections/01.jpg differ diff --git a/public/img/home/marketplace/collections/02.jpg b/public/img/home/marketplace/collections/02.jpg new file mode 100644 index 0000000..3a4621e Binary files /dev/null and b/public/img/home/marketplace/collections/02.jpg differ diff --git a/public/img/home/marketplace/collections/03.jpg b/public/img/home/marketplace/collections/03.jpg new file mode 100644 index 0000000..58c79c2 Binary files /dev/null and b/public/img/home/marketplace/collections/03.jpg differ diff --git a/public/img/home/marketplace/collections/04.jpg b/public/img/home/marketplace/collections/04.jpg new file mode 100644 index 0000000..7661129 Binary files /dev/null and b/public/img/home/marketplace/collections/04.jpg differ diff --git a/public/img/home/marketplace/collections/05.jpg b/public/img/home/marketplace/collections/05.jpg new file mode 100644 index 0000000..0e75568 Binary files /dev/null and b/public/img/home/marketplace/collections/05.jpg differ diff --git a/public/img/home/marketplace/collections/06.jpg b/public/img/home/marketplace/collections/06.jpg new file mode 100644 index 0000000..09041de Binary files /dev/null and b/public/img/home/marketplace/collections/06.jpg differ diff --git a/public/img/home/marketplace/collections/07.jpg b/public/img/home/marketplace/collections/07.jpg new file mode 100644 index 0000000..7f99c7e Binary files /dev/null and b/public/img/home/marketplace/collections/07.jpg differ diff --git a/public/img/home/marketplace/collections/08.jpg b/public/img/home/marketplace/collections/08.jpg new file mode 100644 index 0000000..ea2f202 Binary files /dev/null and b/public/img/home/marketplace/collections/08.jpg differ diff --git a/public/img/home/marketplace/collections/09.jpg b/public/img/home/marketplace/collections/09.jpg new file mode 100644 index 0000000..bab937f Binary files /dev/null and b/public/img/home/marketplace/collections/09.jpg differ diff --git a/public/img/home/marketplace/collections/10.jpg b/public/img/home/marketplace/collections/10.jpg new file mode 100644 index 0000000..043e356 Binary files /dev/null and b/public/img/home/marketplace/collections/10.jpg differ diff --git a/public/img/home/marketplace/collections/11.jpg b/public/img/home/marketplace/collections/11.jpg new file mode 100644 index 0000000..8d25005 Binary files /dev/null and b/public/img/home/marketplace/collections/11.jpg differ diff --git a/public/img/home/marketplace/collections/12.jpg b/public/img/home/marketplace/collections/12.jpg new file mode 100644 index 0000000..df622c6 Binary files /dev/null and b/public/img/home/marketplace/collections/12.jpg differ diff --git a/public/img/home/marketplace/formats/figma.png b/public/img/home/marketplace/formats/figma.png new file mode 100644 index 0000000..9017f63 Binary files /dev/null and b/public/img/home/marketplace/formats/figma.png differ diff --git a/public/img/home/marketplace/formats/framer.png b/public/img/home/marketplace/formats/framer.png new file mode 100644 index 0000000..9ef5ce1 Binary files /dev/null and b/public/img/home/marketplace/formats/framer.png differ diff --git a/public/img/home/marketplace/formats/illustrator.png b/public/img/home/marketplace/formats/illustrator.png new file mode 100644 index 0000000..9e2cc45 Binary files /dev/null and b/public/img/home/marketplace/formats/illustrator.png differ diff --git a/public/img/home/marketplace/formats/photoshop.png b/public/img/home/marketplace/formats/photoshop.png new file mode 100644 index 0000000..c798e50 Binary files /dev/null and b/public/img/home/marketplace/formats/photoshop.png differ diff --git a/public/img/home/marketplace/formats/webflow.png b/public/img/home/marketplace/formats/webflow.png new file mode 100644 index 0000000..cae86a9 Binary files /dev/null and b/public/img/home/marketplace/formats/webflow.png differ diff --git a/public/img/home/marketplace/products/01.jpg b/public/img/home/marketplace/products/01.jpg new file mode 100644 index 0000000..43e1c2a Binary files /dev/null and b/public/img/home/marketplace/products/01.jpg differ diff --git a/public/img/home/marketplace/products/02.jpg b/public/img/home/marketplace/products/02.jpg new file mode 100644 index 0000000..3ee5752 Binary files /dev/null and b/public/img/home/marketplace/products/02.jpg differ diff --git a/public/img/home/marketplace/products/03.jpg b/public/img/home/marketplace/products/03.jpg new file mode 100644 index 0000000..0acd0e3 Binary files /dev/null and b/public/img/home/marketplace/products/03.jpg differ diff --git a/public/img/home/single-product/01.png b/public/img/home/single-product/01.png new file mode 100644 index 0000000..04cd33e Binary files /dev/null and b/public/img/home/single-product/01.png differ diff --git a/public/img/home/single-product/02.jpg b/public/img/home/single-product/02.jpg new file mode 100644 index 0000000..7cc30bc Binary files /dev/null and b/public/img/home/single-product/02.jpg differ diff --git a/public/img/home/single-product/03.jpg b/public/img/home/single-product/03.jpg new file mode 100644 index 0000000..e46f35d Binary files /dev/null and b/public/img/home/single-product/03.jpg differ diff --git a/public/img/home/single-product/bpa-fee-dark.png b/public/img/home/single-product/bpa-fee-dark.png new file mode 100644 index 0000000..a427559 Binary files /dev/null and b/public/img/home/single-product/bpa-fee-dark.png differ diff --git a/public/img/home/single-product/bpa-fee-light.png b/public/img/home/single-product/bpa-fee-light.png new file mode 100644 index 0000000..774d827 Binary files /dev/null and b/public/img/home/single-product/bpa-fee-light.png differ diff --git a/public/img/home/single-product/colors/darkness.png b/public/img/home/single-product/colors/darkness.png new file mode 100644 index 0000000..4d07d2d Binary files /dev/null and b/public/img/home/single-product/colors/darkness.png differ diff --git a/public/img/home/single-product/colors/freshness.png b/public/img/home/single-product/colors/freshness.png new file mode 100644 index 0000000..d1f0073 Binary files /dev/null and b/public/img/home/single-product/colors/freshness.png differ diff --git a/public/img/home/single-product/colors/heavenly.png b/public/img/home/single-product/colors/heavenly.png new file mode 100644 index 0000000..2580c73 Binary files /dev/null and b/public/img/home/single-product/colors/heavenly.png differ diff --git a/public/img/home/single-product/colors/sunflower.png b/public/img/home/single-product/colors/sunflower.png new file mode 100644 index 0000000..49e68e8 Binary files /dev/null and b/public/img/home/single-product/colors/sunflower.png differ diff --git a/public/img/home/single-product/hero/background.jpg b/public/img/home/single-product/hero/background.jpg new file mode 100644 index 0000000..a259cd8 Binary files /dev/null and b/public/img/home/single-product/hero/background.jpg differ diff --git a/public/img/home/single-product/hero/foreground.png b/public/img/home/single-product/hero/foreground.png new file mode 100644 index 0000000..a005d5d Binary files /dev/null and b/public/img/home/single-product/hero/foreground.png differ diff --git a/public/img/home/single-product/reviews/ava01.jpg b/public/img/home/single-product/reviews/ava01.jpg new file mode 100644 index 0000000..d19aadd Binary files /dev/null and b/public/img/home/single-product/reviews/ava01.jpg differ diff --git a/public/img/home/single-product/reviews/ava02.jpg b/public/img/home/single-product/reviews/ava02.jpg new file mode 100644 index 0000000..46bf4b9 Binary files /dev/null and b/public/img/home/single-product/reviews/ava02.jpg differ diff --git a/public/img/home/single-product/reviews/ava03.jpg b/public/img/home/single-product/reviews/ava03.jpg new file mode 100644 index 0000000..a95a13c Binary files /dev/null and b/public/img/home/single-product/reviews/ava03.jpg differ diff --git a/public/img/home/single-product/reviews/ava04.jpg b/public/img/home/single-product/reviews/ava04.jpg new file mode 100644 index 0000000..a4ba6d7 Binary files /dev/null and b/public/img/home/single-product/reviews/ava04.jpg differ diff --git a/public/img/home/single-product/reviews/ava05.jpg b/public/img/home/single-product/reviews/ava05.jpg new file mode 100644 index 0000000..1aa2296 Binary files /dev/null and b/public/img/home/single-product/reviews/ava05.jpg differ diff --git a/public/img/home/single-product/reviews/video.jpg b/public/img/home/single-product/reviews/video.jpg new file mode 100644 index 0000000..566572a Binary files /dev/null and b/public/img/home/single-product/reviews/video.jpg differ diff --git a/public/img/home/single-product/socials/01.jpg b/public/img/home/single-product/socials/01.jpg new file mode 100644 index 0000000..e62d57e Binary files /dev/null and b/public/img/home/single-product/socials/01.jpg differ diff --git a/public/img/home/single-product/socials/02.jpg b/public/img/home/single-product/socials/02.jpg new file mode 100644 index 0000000..2db2cb4 Binary files /dev/null and b/public/img/home/single-product/socials/02.jpg differ diff --git a/public/img/home/single-product/socials/03.jpg b/public/img/home/single-product/socials/03.jpg new file mode 100644 index 0000000..c9e44b0 Binary files /dev/null and b/public/img/home/single-product/socials/03.jpg differ diff --git a/public/img/home/single-product/socials/04.jpg b/public/img/home/single-product/socials/04.jpg new file mode 100644 index 0000000..acd0f13 Binary files /dev/null and b/public/img/home/single-product/socials/04.jpg differ diff --git a/public/img/instagram/01.jpg b/public/img/instagram/01.jpg new file mode 100644 index 0000000..471d672 Binary files /dev/null and b/public/img/instagram/01.jpg differ diff --git a/public/img/instagram/02.jpg b/public/img/instagram/02.jpg new file mode 100644 index 0000000..56b5ac9 Binary files /dev/null and b/public/img/instagram/02.jpg differ diff --git a/public/img/instagram/03.jpg b/public/img/instagram/03.jpg new file mode 100644 index 0000000..4f41b14 Binary files /dev/null and b/public/img/instagram/03.jpg differ diff --git a/public/img/instagram/04.jpg b/public/img/instagram/04.jpg new file mode 100644 index 0000000..cbcd39a Binary files /dev/null and b/public/img/instagram/04.jpg differ diff --git a/public/img/instagram/05.jpg b/public/img/instagram/05.jpg new file mode 100644 index 0000000..c5dbb11 Binary files /dev/null and b/public/img/instagram/05.jpg differ diff --git a/public/img/intro/customizer/borders-dark.png b/public/img/intro/customizer/borders-dark.png new file mode 100644 index 0000000..3221ace Binary files /dev/null and b/public/img/intro/customizer/borders-dark.png differ diff --git a/public/img/intro/customizer/borders-light.jpg b/public/img/intro/customizer/borders-light.jpg new file mode 100644 index 0000000..9588e59 Binary files /dev/null and b/public/img/intro/customizer/borders-light.jpg differ diff --git a/public/img/intro/customizer/colors-dark.png b/public/img/intro/customizer/colors-dark.png new file mode 100644 index 0000000..a2beff3 Binary files /dev/null and b/public/img/intro/customizer/colors-dark.png differ diff --git a/public/img/intro/customizer/colors-light.jpg b/public/img/intro/customizer/colors-light.jpg new file mode 100644 index 0000000..9a6226c Binary files /dev/null and b/public/img/intro/customizer/colors-light.jpg differ diff --git a/public/img/intro/customizer/typography-dark.png b/public/img/intro/customizer/typography-dark.png new file mode 100644 index 0000000..eaa521f Binary files /dev/null and b/public/img/intro/customizer/typography-dark.png differ diff --git a/public/img/intro/customizer/typography-light.jpg b/public/img/intro/customizer/typography-light.jpg new file mode 100644 index 0000000..dfbdff2 Binary files /dev/null and b/public/img/intro/customizer/typography-light.jpg differ diff --git a/public/img/intro/dark-mode.jpg b/public/img/intro/dark-mode.jpg new file mode 100644 index 0000000..e4c2a05 Binary files /dev/null and b/public/img/intro/dark-mode.jpg differ diff --git a/public/img/intro/demos/electronics-dark.png b/public/img/intro/demos/electronics-dark.png new file mode 100644 index 0000000..7c43613 Binary files /dev/null and b/public/img/intro/demos/electronics-dark.png differ diff --git a/public/img/intro/demos/electronics-light.png b/public/img/intro/demos/electronics-light.png new file mode 100644 index 0000000..8d5263a Binary files /dev/null and b/public/img/intro/demos/electronics-light.png differ diff --git a/public/img/intro/demos/fashion-1-dark.png b/public/img/intro/demos/fashion-1-dark.png new file mode 100644 index 0000000..267230d Binary files /dev/null and b/public/img/intro/demos/fashion-1-dark.png differ diff --git a/public/img/intro/demos/fashion-1-light.png b/public/img/intro/demos/fashion-1-light.png new file mode 100644 index 0000000..dd0c156 Binary files /dev/null and b/public/img/intro/demos/fashion-1-light.png differ diff --git a/public/img/intro/demos/fashion-2-dark.png b/public/img/intro/demos/fashion-2-dark.png new file mode 100644 index 0000000..58eb412 Binary files /dev/null and b/public/img/intro/demos/fashion-2-dark.png differ diff --git a/public/img/intro/demos/fashion-2-light.png b/public/img/intro/demos/fashion-2-light.png new file mode 100644 index 0000000..4e1ebc1 Binary files /dev/null and b/public/img/intro/demos/fashion-2-light.png differ diff --git a/public/img/intro/demos/furniture-dark.png b/public/img/intro/demos/furniture-dark.png new file mode 100644 index 0000000..bf6c126 Binary files /dev/null and b/public/img/intro/demos/furniture-dark.png differ diff --git a/public/img/intro/demos/furniture-light.png b/public/img/intro/demos/furniture-light.png new file mode 100644 index 0000000..19c80f5 Binary files /dev/null and b/public/img/intro/demos/furniture-light.png differ diff --git a/public/img/intro/demos/grocery-dark.png b/public/img/intro/demos/grocery-dark.png new file mode 100644 index 0000000..5015904 Binary files /dev/null and b/public/img/intro/demos/grocery-dark.png differ diff --git a/public/img/intro/demos/grocery-light.png b/public/img/intro/demos/grocery-light.png new file mode 100644 index 0000000..b2fcffa Binary files /dev/null and b/public/img/intro/demos/grocery-light.png differ diff --git a/public/img/intro/demos/marketplace-dark.png b/public/img/intro/demos/marketplace-dark.png new file mode 100644 index 0000000..8b07963 Binary files /dev/null and b/public/img/intro/demos/marketplace-dark.png differ diff --git a/public/img/intro/demos/marketplace-light.png b/public/img/intro/demos/marketplace-light.png new file mode 100644 index 0000000..ff470cb Binary files /dev/null and b/public/img/intro/demos/marketplace-light.png differ diff --git a/public/img/intro/demos/single-store-dark.png b/public/img/intro/demos/single-store-dark.png new file mode 100644 index 0000000..b96ee3a Binary files /dev/null and b/public/img/intro/demos/single-store-dark.png differ diff --git a/public/img/intro/demos/single-store-light.png b/public/img/intro/demos/single-store-light.png new file mode 100644 index 0000000..d368e95 Binary files /dev/null and b/public/img/intro/demos/single-store-light.png differ diff --git a/public/img/intro/features/bootstrap.png b/public/img/intro/features/bootstrap.png new file mode 100644 index 0000000..b7af227 Binary files /dev/null and b/public/img/intro/features/bootstrap.png differ diff --git a/public/img/intro/features/figma.png b/public/img/intro/features/figma.png new file mode 100644 index 0000000..11f3f6c Binary files /dev/null and b/public/img/intro/features/figma.png differ diff --git a/public/img/intro/features/google-fonts.png b/public/img/intro/features/google-fonts.png new file mode 100644 index 0000000..aefb308 Binary files /dev/null and b/public/img/intro/features/google-fonts.png differ diff --git a/public/img/intro/features/html5.png b/public/img/intro/features/html5.png new file mode 100644 index 0000000..6513475 Binary files /dev/null and b/public/img/intro/features/html5.png differ diff --git a/public/img/intro/features/js.png b/public/img/intro/features/js.png new file mode 100644 index 0000000..5d50b01 Binary files /dev/null and b/public/img/intro/features/js.png differ diff --git a/public/img/intro/features/npm.png b/public/img/intro/features/npm.png new file mode 100644 index 0000000..a3ba1fb Binary files /dev/null and b/public/img/intro/features/npm.png differ diff --git a/public/img/intro/features/sass.png b/public/img/intro/features/sass.png new file mode 100644 index 0000000..c25d54a Binary files /dev/null and b/public/img/intro/features/sass.png differ diff --git a/public/img/intro/features/touch.png b/public/img/intro/features/touch.png new file mode 100644 index 0000000..6f2ad51 Binary files /dev/null and b/public/img/intro/features/touch.png differ diff --git a/public/img/intro/features/vector.png b/public/img/intro/features/vector.png new file mode 100644 index 0000000..6b2e1d7 Binary files /dev/null and b/public/img/intro/features/vector.png differ diff --git a/public/img/intro/light-mode.jpg b/public/img/intro/light-mode.jpg new file mode 100644 index 0000000..f159f9f Binary files /dev/null and b/public/img/intro/light-mode.jpg differ diff --git a/public/img/intro/mobile-dark.png b/public/img/intro/mobile-dark.png new file mode 100644 index 0000000..02b2f27 Binary files /dev/null and b/public/img/intro/mobile-dark.png differ diff --git a/public/img/intro/mobile-light.png b/public/img/intro/mobile-light.png new file mode 100644 index 0000000..a7207a7 Binary files /dev/null and b/public/img/intro/mobile-light.png differ diff --git a/public/img/intro/pages-dark.png b/public/img/intro/pages-dark.png new file mode 100644 index 0000000..84f1276 Binary files /dev/null and b/public/img/intro/pages-dark.png differ diff --git a/public/img/intro/pages-light.jpg b/public/img/intro/pages-light.jpg new file mode 100644 index 0000000..81bccbe Binary files /dev/null and b/public/img/intro/pages-light.jpg differ diff --git a/public/img/intro/qr-dark.png b/public/img/intro/qr-dark.png new file mode 100644 index 0000000..d703f9e Binary files /dev/null and b/public/img/intro/qr-dark.png differ diff --git a/public/img/intro/qr-light.png b/public/img/intro/qr-light.png new file mode 100644 index 0000000..c65f549 Binary files /dev/null and b/public/img/intro/qr-light.png differ diff --git a/public/img/mega-menu/demo-preview/electronics-dark.jpg b/public/img/mega-menu/demo-preview/electronics-dark.jpg new file mode 100644 index 0000000..a92fc29 Binary files /dev/null and b/public/img/mega-menu/demo-preview/electronics-dark.jpg differ diff --git a/public/img/mega-menu/demo-preview/electronics-light.jpg b/public/img/mega-menu/demo-preview/electronics-light.jpg new file mode 100644 index 0000000..5bc13aa Binary files /dev/null and b/public/img/mega-menu/demo-preview/electronics-light.jpg differ diff --git a/public/img/mega-menu/demo-preview/fashion-1-dark.jpg b/public/img/mega-menu/demo-preview/fashion-1-dark.jpg new file mode 100644 index 0000000..56cd497 Binary files /dev/null and b/public/img/mega-menu/demo-preview/fashion-1-dark.jpg differ diff --git a/public/img/mega-menu/demo-preview/fashion-1-light.jpg b/public/img/mega-menu/demo-preview/fashion-1-light.jpg new file mode 100644 index 0000000..e7e49f5 Binary files /dev/null and b/public/img/mega-menu/demo-preview/fashion-1-light.jpg differ diff --git a/public/img/mega-menu/demo-preview/fashion-2-dark.jpg b/public/img/mega-menu/demo-preview/fashion-2-dark.jpg new file mode 100644 index 0000000..716ab04 Binary files /dev/null and b/public/img/mega-menu/demo-preview/fashion-2-dark.jpg differ diff --git a/public/img/mega-menu/demo-preview/fashion-2-light.jpg b/public/img/mega-menu/demo-preview/fashion-2-light.jpg new file mode 100644 index 0000000..5609167 Binary files /dev/null and b/public/img/mega-menu/demo-preview/fashion-2-light.jpg differ diff --git a/public/img/mega-menu/demo-preview/furniture-dark.jpg b/public/img/mega-menu/demo-preview/furniture-dark.jpg new file mode 100644 index 0000000..f1d8dc6 Binary files /dev/null and b/public/img/mega-menu/demo-preview/furniture-dark.jpg differ diff --git a/public/img/mega-menu/demo-preview/furniture-light.jpg b/public/img/mega-menu/demo-preview/furniture-light.jpg new file mode 100644 index 0000000..74f3993 Binary files /dev/null and b/public/img/mega-menu/demo-preview/furniture-light.jpg differ diff --git a/public/img/mega-menu/demo-preview/grocery-dark.jpg b/public/img/mega-menu/demo-preview/grocery-dark.jpg new file mode 100644 index 0000000..bb48146 Binary files /dev/null and b/public/img/mega-menu/demo-preview/grocery-dark.jpg differ diff --git a/public/img/mega-menu/demo-preview/grocery-light.jpg b/public/img/mega-menu/demo-preview/grocery-light.jpg new file mode 100644 index 0000000..62e85a9 Binary files /dev/null and b/public/img/mega-menu/demo-preview/grocery-light.jpg differ diff --git a/public/img/mega-menu/demo-preview/marketplace-dark.jpg b/public/img/mega-menu/demo-preview/marketplace-dark.jpg new file mode 100644 index 0000000..650310e Binary files /dev/null and b/public/img/mega-menu/demo-preview/marketplace-dark.jpg differ diff --git a/public/img/mega-menu/demo-preview/marketplace-light.jpg b/public/img/mega-menu/demo-preview/marketplace-light.jpg new file mode 100644 index 0000000..a682afa Binary files /dev/null and b/public/img/mega-menu/demo-preview/marketplace-light.jpg differ diff --git a/public/img/mega-menu/demo-preview/single-store-dark.jpg b/public/img/mega-menu/demo-preview/single-store-dark.jpg new file mode 100644 index 0000000..29b6068 Binary files /dev/null and b/public/img/mega-menu/demo-preview/single-store-dark.jpg differ diff --git a/public/img/mega-menu/demo-preview/single-store-light.jpg b/public/img/mega-menu/demo-preview/single-store-light.jpg new file mode 100644 index 0000000..f7664f0 Binary files /dev/null and b/public/img/mega-menu/demo-preview/single-store-light.jpg differ diff --git a/public/img/mega-menu/electronics/01.png b/public/img/mega-menu/electronics/01.png new file mode 100644 index 0000000..cd6ba2f Binary files /dev/null and b/public/img/mega-menu/electronics/01.png differ diff --git a/public/img/mega-menu/electronics/02.png b/public/img/mega-menu/electronics/02.png new file mode 100644 index 0000000..0272cec Binary files /dev/null and b/public/img/mega-menu/electronics/02.png differ diff --git a/public/img/mega-menu/electronics/03.png b/public/img/mega-menu/electronics/03.png new file mode 100644 index 0000000..7bdd1ca Binary files /dev/null and b/public/img/mega-menu/electronics/03.png differ diff --git a/public/img/mega-menu/electronics/04.png b/public/img/mega-menu/electronics/04.png new file mode 100644 index 0000000..31c4dac Binary files /dev/null and b/public/img/mega-menu/electronics/04.png differ diff --git a/public/img/mega-menu/electronics/05.png b/public/img/mega-menu/electronics/05.png new file mode 100644 index 0000000..ac93285 Binary files /dev/null and b/public/img/mega-menu/electronics/05.png differ diff --git a/public/img/mega-menu/electronics/06.png b/public/img/mega-menu/electronics/06.png new file mode 100644 index 0000000..36d1b33 Binary files /dev/null and b/public/img/mega-menu/electronics/06.png differ diff --git a/public/img/mega-menu/electronics/07.png b/public/img/mega-menu/electronics/07.png new file mode 100644 index 0000000..2332f26 Binary files /dev/null and b/public/img/mega-menu/electronics/07.png differ diff --git a/public/img/mega-menu/electronics/08.png b/public/img/mega-menu/electronics/08.png new file mode 100644 index 0000000..376f1ca Binary files /dev/null and b/public/img/mega-menu/electronics/08.png differ diff --git a/public/img/mega-menu/electronics/09.png b/public/img/mega-menu/electronics/09.png new file mode 100644 index 0000000..854ea7a Binary files /dev/null and b/public/img/mega-menu/electronics/09.png differ diff --git a/public/img/mega-menu/electronics/10.png b/public/img/mega-menu/electronics/10.png new file mode 100644 index 0000000..508f0ff Binary files /dev/null and b/public/img/mega-menu/electronics/10.png differ diff --git a/public/img/mega-menu/electronics/11.png b/public/img/mega-menu/electronics/11.png new file mode 100644 index 0000000..11b8d29 Binary files /dev/null and b/public/img/mega-menu/electronics/11.png differ diff --git a/public/img/mega-menu/electronics/12.png b/public/img/mega-menu/electronics/12.png new file mode 100644 index 0000000..399b3f3 Binary files /dev/null and b/public/img/mega-menu/electronics/12.png differ diff --git a/public/img/mega-menu/fashion/01.jpg b/public/img/mega-menu/fashion/01.jpg new file mode 100644 index 0000000..85ed1f8 Binary files /dev/null and b/public/img/mega-menu/fashion/01.jpg differ diff --git a/public/img/mega-menu/fashion/02.jpg b/public/img/mega-menu/fashion/02.jpg new file mode 100644 index 0000000..c209474 Binary files /dev/null and b/public/img/mega-menu/fashion/02.jpg differ diff --git a/public/img/mega-menu/fashion/03.jpg b/public/img/mega-menu/fashion/03.jpg new file mode 100644 index 0000000..d90d69c Binary files /dev/null and b/public/img/mega-menu/fashion/03.jpg differ diff --git a/public/img/mega-menu/grocery/th01.png b/public/img/mega-menu/grocery/th01.png new file mode 100644 index 0000000..6cb7eeb Binary files /dev/null and b/public/img/mega-menu/grocery/th01.png differ diff --git a/public/img/mega-menu/grocery/th02.png b/public/img/mega-menu/grocery/th02.png new file mode 100644 index 0000000..55b2a36 Binary files /dev/null and b/public/img/mega-menu/grocery/th02.png differ diff --git a/public/img/mega-menu/grocery/th03.png b/public/img/mega-menu/grocery/th03.png new file mode 100644 index 0000000..1a430f7 Binary files /dev/null and b/public/img/mega-menu/grocery/th03.png differ diff --git a/public/img/mega-menu/grocery/th04.png b/public/img/mega-menu/grocery/th04.png new file mode 100644 index 0000000..e8b86d9 Binary files /dev/null and b/public/img/mega-menu/grocery/th04.png differ diff --git a/public/img/mega-menu/grocery/th05.png b/public/img/mega-menu/grocery/th05.png new file mode 100644 index 0000000..b69d4cd Binary files /dev/null and b/public/img/mega-menu/grocery/th05.png differ diff --git a/public/img/mega-menu/grocery/th06.png b/public/img/mega-menu/grocery/th06.png new file mode 100644 index 0000000..fab0469 Binary files /dev/null and b/public/img/mega-menu/grocery/th06.png differ diff --git a/public/img/payment-methods/amex.svg b/public/img/payment-methods/amex.svg new file mode 100644 index 0000000..c00ce98 --- /dev/null +++ b/public/img/payment-methods/amex.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/apple-pay-dark-mode.svg b/public/img/payment-methods/apple-pay-dark-mode.svg new file mode 100644 index 0000000..287c247 --- /dev/null +++ b/public/img/payment-methods/apple-pay-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/apple-pay-light-mode.svg b/public/img/payment-methods/apple-pay-light-mode.svg new file mode 100644 index 0000000..c64086b --- /dev/null +++ b/public/img/payment-methods/apple-pay-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/google-icon.svg b/public/img/payment-methods/google-icon.svg new file mode 100644 index 0000000..ce28acd --- /dev/null +++ b/public/img/payment-methods/google-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/google-pay-dark-mode.svg b/public/img/payment-methods/google-pay-dark-mode.svg new file mode 100644 index 0000000..eaadf4b --- /dev/null +++ b/public/img/payment-methods/google-pay-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/google-pay-light-mode.svg b/public/img/payment-methods/google-pay-light-mode.svg new file mode 100644 index 0000000..f425006 --- /dev/null +++ b/public/img/payment-methods/google-pay-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/maestro.svg b/public/img/payment-methods/maestro.svg new file mode 100644 index 0000000..e1c979e --- /dev/null +++ b/public/img/payment-methods/maestro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/mastercard.svg b/public/img/payment-methods/mastercard.svg new file mode 100644 index 0000000..a3e3d4d --- /dev/null +++ b/public/img/payment-methods/mastercard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/paypal-dark-mode.svg b/public/img/payment-methods/paypal-dark-mode.svg new file mode 100644 index 0000000..596cd82 --- /dev/null +++ b/public/img/payment-methods/paypal-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/paypal-icon.svg b/public/img/payment-methods/paypal-icon.svg new file mode 100644 index 0000000..6df2707 --- /dev/null +++ b/public/img/payment-methods/paypal-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/paypal-light-mode.svg b/public/img/payment-methods/paypal-light-mode.svg new file mode 100644 index 0000000..8164bde --- /dev/null +++ b/public/img/payment-methods/paypal-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/visa-dark-mode.svg b/public/img/payment-methods/visa-dark-mode.svg new file mode 100644 index 0000000..2d77187 --- /dev/null +++ b/public/img/payment-methods/visa-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/payment-methods/visa-light-mode.svg b/public/img/payment-methods/visa-light-mode.svg new file mode 100644 index 0000000..e959b9a --- /dev/null +++ b/public/img/payment-methods/visa-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/01.png b/public/img/shop/electronics/01.png new file mode 100644 index 0000000..6600bd8 Binary files /dev/null and b/public/img/shop/electronics/01.png differ diff --git a/public/img/shop/electronics/02.png b/public/img/shop/electronics/02.png new file mode 100644 index 0000000..9a95c35 Binary files /dev/null and b/public/img/shop/electronics/02.png differ diff --git a/public/img/shop/electronics/03.png b/public/img/shop/electronics/03.png new file mode 100644 index 0000000..4975859 Binary files /dev/null and b/public/img/shop/electronics/03.png differ diff --git a/public/img/shop/electronics/04.png b/public/img/shop/electronics/04.png new file mode 100644 index 0000000..a96bc6b Binary files /dev/null and b/public/img/shop/electronics/04.png differ diff --git a/public/img/shop/electronics/05.png b/public/img/shop/electronics/05.png new file mode 100644 index 0000000..a29fb32 Binary files /dev/null and b/public/img/shop/electronics/05.png differ diff --git a/public/img/shop/electronics/06.png b/public/img/shop/electronics/06.png new file mode 100644 index 0000000..fe7c480 Binary files /dev/null and b/public/img/shop/electronics/06.png differ diff --git a/public/img/shop/electronics/07.png b/public/img/shop/electronics/07.png new file mode 100644 index 0000000..5d467b7 Binary files /dev/null and b/public/img/shop/electronics/07.png differ diff --git a/public/img/shop/electronics/08.png b/public/img/shop/electronics/08.png new file mode 100644 index 0000000..de08838 Binary files /dev/null and b/public/img/shop/electronics/08.png differ diff --git a/public/img/shop/electronics/09.png b/public/img/shop/electronics/09.png new file mode 100644 index 0000000..583cc36 Binary files /dev/null and b/public/img/shop/electronics/09.png differ diff --git a/public/img/shop/electronics/10.png b/public/img/shop/electronics/10.png new file mode 100644 index 0000000..dc10578 Binary files /dev/null and b/public/img/shop/electronics/10.png differ diff --git a/public/img/shop/electronics/11.png b/public/img/shop/electronics/11.png new file mode 100644 index 0000000..0bfc662 Binary files /dev/null and b/public/img/shop/electronics/11.png differ diff --git a/public/img/shop/electronics/12.png b/public/img/shop/electronics/12.png new file mode 100644 index 0000000..fe127e5 Binary files /dev/null and b/public/img/shop/electronics/12.png differ diff --git a/public/img/shop/electronics/13.png b/public/img/shop/electronics/13.png new file mode 100644 index 0000000..381081f Binary files /dev/null and b/public/img/shop/electronics/13.png differ diff --git a/public/img/shop/electronics/14.png b/public/img/shop/electronics/14.png new file mode 100644 index 0000000..652a9e0 Binary files /dev/null and b/public/img/shop/electronics/14.png differ diff --git a/public/img/shop/electronics/15.png b/public/img/shop/electronics/15.png new file mode 100644 index 0000000..af37c13 Binary files /dev/null and b/public/img/shop/electronics/15.png differ diff --git a/public/img/shop/electronics/banners/background.jpg b/public/img/shop/electronics/banners/background.jpg new file mode 100644 index 0000000..4917f81 Binary files /dev/null and b/public/img/shop/electronics/banners/background.jpg differ diff --git a/public/img/shop/electronics/banners/ipad.png b/public/img/shop/electronics/banners/ipad.png new file mode 100644 index 0000000..c4e056d Binary files /dev/null and b/public/img/shop/electronics/banners/ipad.png differ diff --git a/public/img/shop/electronics/banners/iphone-1.png b/public/img/shop/electronics/banners/iphone-1.png new file mode 100644 index 0000000..901f88f Binary files /dev/null and b/public/img/shop/electronics/banners/iphone-1.png differ diff --git a/public/img/shop/electronics/banners/iphone-2.png b/public/img/shop/electronics/banners/iphone-2.png new file mode 100644 index 0000000..7fa7cae Binary files /dev/null and b/public/img/shop/electronics/banners/iphone-2.png differ diff --git a/public/img/shop/electronics/banners/laptop.png b/public/img/shop/electronics/banners/laptop.png new file mode 100644 index 0000000..d5c5c08 Binary files /dev/null and b/public/img/shop/electronics/banners/laptop.png differ diff --git a/public/img/shop/electronics/brands/apple-dark-mode.svg b/public/img/shop/electronics/brands/apple-dark-mode.svg new file mode 100644 index 0000000..d5f4645 --- /dev/null +++ b/public/img/shop/electronics/brands/apple-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/apple-light-mode.svg b/public/img/shop/electronics/brands/apple-light-mode.svg new file mode 100644 index 0000000..95e6e07 --- /dev/null +++ b/public/img/shop/electronics/brands/apple-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/canon-dark-mode.svg b/public/img/shop/electronics/brands/canon-dark-mode.svg new file mode 100644 index 0000000..5c12c8b --- /dev/null +++ b/public/img/shop/electronics/brands/canon-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/canon-light-mode.svg b/public/img/shop/electronics/brands/canon-light-mode.svg new file mode 100644 index 0000000..bab8d4c --- /dev/null +++ b/public/img/shop/electronics/brands/canon-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/motorola-dark-mode.svg b/public/img/shop/electronics/brands/motorola-dark-mode.svg new file mode 100644 index 0000000..8d0f2a9 --- /dev/null +++ b/public/img/shop/electronics/brands/motorola-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/motorola-light-mode.svg b/public/img/shop/electronics/brands/motorola-light-mode.svg new file mode 100644 index 0000000..ee3ac76 --- /dev/null +++ b/public/img/shop/electronics/brands/motorola-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/samsung-dark-mode.svg b/public/img/shop/electronics/brands/samsung-dark-mode.svg new file mode 100644 index 0000000..ff82e66 --- /dev/null +++ b/public/img/shop/electronics/brands/samsung-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/samsung-light-mode.svg b/public/img/shop/electronics/brands/samsung-light-mode.svg new file mode 100644 index 0000000..e486f9a --- /dev/null +++ b/public/img/shop/electronics/brands/samsung-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/sony-dark-mode.svg b/public/img/shop/electronics/brands/sony-dark-mode.svg new file mode 100644 index 0000000..e69097d --- /dev/null +++ b/public/img/shop/electronics/brands/sony-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/sony-light-mode.svg b/public/img/shop/electronics/brands/sony-light-mode.svg new file mode 100644 index 0000000..56ec2cb --- /dev/null +++ b/public/img/shop/electronics/brands/sony-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/xiaomi-dark-mode.svg b/public/img/shop/electronics/brands/xiaomi-dark-mode.svg new file mode 100644 index 0000000..98d2295 --- /dev/null +++ b/public/img/shop/electronics/brands/xiaomi-dark-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/brands/xiaomi-light-mode.svg b/public/img/shop/electronics/brands/xiaomi-light-mode.svg new file mode 100644 index 0000000..297169a --- /dev/null +++ b/public/img/shop/electronics/brands/xiaomi-light-mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/shop/electronics/categories/01.png b/public/img/shop/electronics/categories/01.png new file mode 100644 index 0000000..697899e Binary files /dev/null and b/public/img/shop/electronics/categories/01.png differ diff --git a/public/img/shop/electronics/categories/02.png b/public/img/shop/electronics/categories/02.png new file mode 100644 index 0000000..cd5d9a3 Binary files /dev/null and b/public/img/shop/electronics/categories/02.png differ diff --git a/public/img/shop/electronics/categories/03.png b/public/img/shop/electronics/categories/03.png new file mode 100644 index 0000000..f2941e2 Binary files /dev/null and b/public/img/shop/electronics/categories/03.png differ diff --git a/public/img/shop/electronics/categories/04.png b/public/img/shop/electronics/categories/04.png new file mode 100644 index 0000000..1e3dd97 Binary files /dev/null and b/public/img/shop/electronics/categories/04.png differ diff --git a/public/img/shop/electronics/categories/05.png b/public/img/shop/electronics/categories/05.png new file mode 100644 index 0000000..61735ab Binary files /dev/null and b/public/img/shop/electronics/categories/05.png differ diff --git a/public/img/shop/electronics/categories/06.png b/public/img/shop/electronics/categories/06.png new file mode 100644 index 0000000..a672381 Binary files /dev/null and b/public/img/shop/electronics/categories/06.png differ diff --git a/public/img/shop/electronics/categories/07.png b/public/img/shop/electronics/categories/07.png new file mode 100644 index 0000000..c4d5767 Binary files /dev/null and b/public/img/shop/electronics/categories/07.png differ diff --git a/public/img/shop/electronics/categories/08.png b/public/img/shop/electronics/categories/08.png new file mode 100644 index 0000000..e84dac2 Binary files /dev/null and b/public/img/shop/electronics/categories/08.png differ diff --git a/public/img/shop/electronics/product/gallery/01.png b/public/img/shop/electronics/product/gallery/01.png new file mode 100644 index 0000000..ab57575 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/01.png differ diff --git a/public/img/shop/electronics/product/gallery/02.png b/public/img/shop/electronics/product/gallery/02.png new file mode 100644 index 0000000..33f6138 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/02.png differ diff --git a/public/img/shop/electronics/product/gallery/03.png b/public/img/shop/electronics/product/gallery/03.png new file mode 100644 index 0000000..eb5c3ed Binary files /dev/null and b/public/img/shop/electronics/product/gallery/03.png differ diff --git a/public/img/shop/electronics/product/gallery/04.png b/public/img/shop/electronics/product/gallery/04.png new file mode 100644 index 0000000..67ec282 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/04.png differ diff --git a/public/img/shop/electronics/product/gallery/05.png b/public/img/shop/electronics/product/gallery/05.png new file mode 100644 index 0000000..47a51c0 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/05.png differ diff --git a/public/img/shop/electronics/product/gallery/06.png b/public/img/shop/electronics/product/gallery/06.png new file mode 100644 index 0000000..fe5a472 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/06.png differ diff --git a/public/img/shop/electronics/product/gallery/07.png b/public/img/shop/electronics/product/gallery/07.png new file mode 100644 index 0000000..24895d6 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/07.png differ diff --git a/public/img/shop/electronics/product/gallery/th01.png b/public/img/shop/electronics/product/gallery/th01.png new file mode 100644 index 0000000..2f3b53a Binary files /dev/null and b/public/img/shop/electronics/product/gallery/th01.png differ diff --git a/public/img/shop/electronics/product/gallery/th02.png b/public/img/shop/electronics/product/gallery/th02.png new file mode 100644 index 0000000..034c03b Binary files /dev/null and b/public/img/shop/electronics/product/gallery/th02.png differ diff --git a/public/img/shop/electronics/product/gallery/th03.png b/public/img/shop/electronics/product/gallery/th03.png new file mode 100644 index 0000000..1aaa809 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/th03.png differ diff --git a/public/img/shop/electronics/product/gallery/th04.png b/public/img/shop/electronics/product/gallery/th04.png new file mode 100644 index 0000000..ca554b7 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/th04.png differ diff --git a/public/img/shop/electronics/product/gallery/th05.png b/public/img/shop/electronics/product/gallery/th05.png new file mode 100644 index 0000000..530bf48 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/th05.png differ diff --git a/public/img/shop/electronics/product/gallery/th06.png b/public/img/shop/electronics/product/gallery/th06.png new file mode 100644 index 0000000..295e00f Binary files /dev/null and b/public/img/shop/electronics/product/gallery/th06.png differ diff --git a/public/img/shop/electronics/product/gallery/th07.png b/public/img/shop/electronics/product/gallery/th07.png new file mode 100644 index 0000000..59cbfc3 Binary files /dev/null and b/public/img/shop/electronics/product/gallery/th07.png differ diff --git a/public/img/shop/electronics/product/reviews/01.png b/public/img/shop/electronics/product/reviews/01.png new file mode 100644 index 0000000..b01fdd0 Binary files /dev/null and b/public/img/shop/electronics/product/reviews/01.png differ diff --git a/public/img/shop/electronics/product/reviews/02.png b/public/img/shop/electronics/product/reviews/02.png new file mode 100644 index 0000000..16b6eb8 Binary files /dev/null and b/public/img/shop/electronics/product/reviews/02.png differ diff --git a/public/img/shop/electronics/product/reviews/03.png b/public/img/shop/electronics/product/reviews/03.png new file mode 100644 index 0000000..1ca39c1 Binary files /dev/null and b/public/img/shop/electronics/product/reviews/03.png differ diff --git a/public/img/shop/electronics/thumbs/01.png b/public/img/shop/electronics/thumbs/01.png new file mode 100644 index 0000000..505f908 Binary files /dev/null and b/public/img/shop/electronics/thumbs/01.png differ diff --git a/public/img/shop/electronics/thumbs/02.png b/public/img/shop/electronics/thumbs/02.png new file mode 100644 index 0000000..afc5824 Binary files /dev/null and b/public/img/shop/electronics/thumbs/02.png differ diff --git a/public/img/shop/electronics/thumbs/03.png b/public/img/shop/electronics/thumbs/03.png new file mode 100644 index 0000000..05951e3 Binary files /dev/null and b/public/img/shop/electronics/thumbs/03.png differ diff --git a/public/img/shop/electronics/thumbs/04.png b/public/img/shop/electronics/thumbs/04.png new file mode 100644 index 0000000..253d89a Binary files /dev/null and b/public/img/shop/electronics/thumbs/04.png differ diff --git a/public/img/shop/electronics/thumbs/05.png b/public/img/shop/electronics/thumbs/05.png new file mode 100644 index 0000000..37dbd46 Binary files /dev/null and b/public/img/shop/electronics/thumbs/05.png differ diff --git a/public/img/shop/electronics/thumbs/06.png b/public/img/shop/electronics/thumbs/06.png new file mode 100644 index 0000000..f00c96e Binary files /dev/null and b/public/img/shop/electronics/thumbs/06.png differ diff --git a/public/img/shop/electronics/thumbs/07.png b/public/img/shop/electronics/thumbs/07.png new file mode 100644 index 0000000..0f78cf1 Binary files /dev/null and b/public/img/shop/electronics/thumbs/07.png differ diff --git a/public/img/shop/electronics/thumbs/08.png b/public/img/shop/electronics/thumbs/08.png new file mode 100644 index 0000000..26090cb Binary files /dev/null and b/public/img/shop/electronics/thumbs/08.png differ diff --git a/public/img/shop/electronics/thumbs/09.png b/public/img/shop/electronics/thumbs/09.png new file mode 100644 index 0000000..1f4430f Binary files /dev/null and b/public/img/shop/electronics/thumbs/09.png differ diff --git a/public/img/shop/electronics/thumbs/10.png b/public/img/shop/electronics/thumbs/10.png new file mode 100644 index 0000000..417964f Binary files /dev/null and b/public/img/shop/electronics/thumbs/10.png differ diff --git a/public/img/shop/electronics/thumbs/11.png b/public/img/shop/electronics/thumbs/11.png new file mode 100644 index 0000000..b0d6e80 Binary files /dev/null and b/public/img/shop/electronics/thumbs/11.png differ diff --git a/public/img/shop/electronics/thumbs/12.png b/public/img/shop/electronics/thumbs/12.png new file mode 100644 index 0000000..ff1409c Binary files /dev/null and b/public/img/shop/electronics/thumbs/12.png differ diff --git a/public/img/shop/electronics/thumbs/13.png b/public/img/shop/electronics/thumbs/13.png new file mode 100644 index 0000000..2dd35de Binary files /dev/null and b/public/img/shop/electronics/thumbs/13.png differ diff --git a/public/img/shop/electronics/thumbs/14.png b/public/img/shop/electronics/thumbs/14.png new file mode 100644 index 0000000..c312350 Binary files /dev/null and b/public/img/shop/electronics/thumbs/14.png differ diff --git a/public/img/shop/electronics/thumbs/15.png b/public/img/shop/electronics/thumbs/15.png new file mode 100644 index 0000000..37308cb Binary files /dev/null and b/public/img/shop/electronics/thumbs/15.png differ diff --git a/public/img/shop/electronics/thumbs/16.png b/public/img/shop/electronics/thumbs/16.png new file mode 100644 index 0000000..8aaeed1 Binary files /dev/null and b/public/img/shop/electronics/thumbs/16.png differ diff --git a/public/img/shop/electronics/thumbs/17.png b/public/img/shop/electronics/thumbs/17.png new file mode 100644 index 0000000..d0237b3 Binary files /dev/null and b/public/img/shop/electronics/thumbs/17.png differ diff --git a/public/img/shop/electronics/thumbs/18.png b/public/img/shop/electronics/thumbs/18.png new file mode 100644 index 0000000..68f55e4 Binary files /dev/null and b/public/img/shop/electronics/thumbs/18.png differ diff --git a/public/img/shop/electronics/thumbs/19.png b/public/img/shop/electronics/thumbs/19.png new file mode 100644 index 0000000..f5a3673 Binary files /dev/null and b/public/img/shop/electronics/thumbs/19.png differ diff --git a/public/img/shop/electronics/thumbs/20.png b/public/img/shop/electronics/thumbs/20.png new file mode 100644 index 0000000..f3ce6df Binary files /dev/null and b/public/img/shop/electronics/thumbs/20.png differ diff --git a/public/img/shop/electronics/thumbs/21.png b/public/img/shop/electronics/thumbs/21.png new file mode 100644 index 0000000..f7838ce Binary files /dev/null and b/public/img/shop/electronics/thumbs/21.png differ diff --git a/public/img/shop/electronics/thumbs/22.png b/public/img/shop/electronics/thumbs/22.png new file mode 100644 index 0000000..4c059fa Binary files /dev/null and b/public/img/shop/electronics/thumbs/22.png differ diff --git a/public/img/shop/fashion/01.png b/public/img/shop/fashion/01.png new file mode 100644 index 0000000..3838a4e Binary files /dev/null and b/public/img/shop/fashion/01.png differ diff --git a/public/img/shop/fashion/02.png b/public/img/shop/fashion/02.png new file mode 100644 index 0000000..77114d0 Binary files /dev/null and b/public/img/shop/fashion/02.png differ diff --git a/public/img/shop/fashion/03.png b/public/img/shop/fashion/03.png new file mode 100644 index 0000000..b26d02a Binary files /dev/null and b/public/img/shop/fashion/03.png differ diff --git a/public/img/shop/fashion/04.png b/public/img/shop/fashion/04.png new file mode 100644 index 0000000..b553e2a Binary files /dev/null and b/public/img/shop/fashion/04.png differ diff --git a/public/img/shop/fashion/05.png b/public/img/shop/fashion/05.png new file mode 100644 index 0000000..6f51268 Binary files /dev/null and b/public/img/shop/fashion/05.png differ diff --git a/public/img/shop/fashion/06.png b/public/img/shop/fashion/06.png new file mode 100644 index 0000000..71532b1 Binary files /dev/null and b/public/img/shop/fashion/06.png differ diff --git a/public/img/shop/fashion/07.png b/public/img/shop/fashion/07.png new file mode 100644 index 0000000..b4cf61e Binary files /dev/null and b/public/img/shop/fashion/07.png differ diff --git a/public/img/shop/fashion/08.png b/public/img/shop/fashion/08.png new file mode 100644 index 0000000..5c96459 Binary files /dev/null and b/public/img/shop/fashion/08.png differ diff --git a/public/img/shop/fashion/09.png b/public/img/shop/fashion/09.png new file mode 100644 index 0000000..52cf010 Binary files /dev/null and b/public/img/shop/fashion/09.png differ diff --git a/public/img/shop/fashion/10.png b/public/img/shop/fashion/10.png new file mode 100644 index 0000000..62a9b10 Binary files /dev/null and b/public/img/shop/fashion/10.png differ diff --git a/public/img/shop/fashion/11.png b/public/img/shop/fashion/11.png new file mode 100644 index 0000000..06ac2b7 Binary files /dev/null and b/public/img/shop/fashion/11.png differ diff --git a/public/img/shop/fashion/12.png b/public/img/shop/fashion/12.png new file mode 100644 index 0000000..d57dc1b Binary files /dev/null and b/public/img/shop/fashion/12.png differ diff --git a/public/img/shop/fashion/banner01.png b/public/img/shop/fashion/banner01.png new file mode 100644 index 0000000..3dd246c Binary files /dev/null and b/public/img/shop/fashion/banner01.png differ diff --git a/public/img/shop/fashion/banner02.png b/public/img/shop/fashion/banner02.png new file mode 100644 index 0000000..b252e3e Binary files /dev/null and b/public/img/shop/fashion/banner02.png differ diff --git a/public/img/shop/fashion/banner03.png b/public/img/shop/fashion/banner03.png new file mode 100644 index 0000000..bd6c442 Binary files /dev/null and b/public/img/shop/fashion/banner03.png differ diff --git a/public/img/shop/fashion/product/01.png b/public/img/shop/fashion/product/01.png new file mode 100644 index 0000000..c1538eb Binary files /dev/null and b/public/img/shop/fashion/product/01.png differ diff --git a/public/img/shop/fashion/product/02.png b/public/img/shop/fashion/product/02.png new file mode 100644 index 0000000..81d5ee7 Binary files /dev/null and b/public/img/shop/fashion/product/02.png differ diff --git a/public/img/shop/fashion/product/03.png b/public/img/shop/fashion/product/03.png new file mode 100644 index 0000000..a38353d Binary files /dev/null and b/public/img/shop/fashion/product/03.png differ diff --git a/public/img/shop/fashion/product/04.png b/public/img/shop/fashion/product/04.png new file mode 100644 index 0000000..82847f1 Binary files /dev/null and b/public/img/shop/fashion/product/04.png differ diff --git a/public/img/shop/fashion/product/05.png b/public/img/shop/fashion/product/05.png new file mode 100644 index 0000000..0054ee3 Binary files /dev/null and b/public/img/shop/fashion/product/05.png differ diff --git a/public/img/shop/fashion/product/colors/color01.png b/public/img/shop/fashion/product/colors/color01.png new file mode 100644 index 0000000..988b85a Binary files /dev/null and b/public/img/shop/fashion/product/colors/color01.png differ diff --git a/public/img/shop/fashion/product/colors/color02.png b/public/img/shop/fashion/product/colors/color02.png new file mode 100644 index 0000000..7d68c65 Binary files /dev/null and b/public/img/shop/fashion/product/colors/color02.png differ diff --git a/public/img/shop/fashion/product/colors/color03.png b/public/img/shop/fashion/product/colors/color03.png new file mode 100644 index 0000000..30ad8fc Binary files /dev/null and b/public/img/shop/fashion/product/colors/color03.png differ diff --git a/public/img/shop/fashion/product/thumb.png b/public/img/shop/fashion/product/thumb.png new file mode 100644 index 0000000..39a2296 Binary files /dev/null and b/public/img/shop/fashion/product/thumb.png differ diff --git a/public/img/shop/fashion/thumbs/01.png b/public/img/shop/fashion/thumbs/01.png new file mode 100644 index 0000000..b2741cb Binary files /dev/null and b/public/img/shop/fashion/thumbs/01.png differ diff --git a/public/img/shop/fashion/thumbs/02.png b/public/img/shop/fashion/thumbs/02.png new file mode 100644 index 0000000..7809aa5 Binary files /dev/null and b/public/img/shop/fashion/thumbs/02.png differ diff --git a/public/img/shop/fashion/thumbs/03.png b/public/img/shop/fashion/thumbs/03.png new file mode 100644 index 0000000..1e198e1 Binary files /dev/null and b/public/img/shop/fashion/thumbs/03.png differ diff --git a/public/img/shop/fashion/thumbs/04.png b/public/img/shop/fashion/thumbs/04.png new file mode 100644 index 0000000..f4b13c8 Binary files /dev/null and b/public/img/shop/fashion/thumbs/04.png differ diff --git a/public/img/shop/fashion/thumbs/05.png b/public/img/shop/fashion/thumbs/05.png new file mode 100644 index 0000000..e7a206d Binary files /dev/null and b/public/img/shop/fashion/thumbs/05.png differ diff --git a/public/img/shop/fashion/thumbs/06.png b/public/img/shop/fashion/thumbs/06.png new file mode 100644 index 0000000..4aa04e1 Binary files /dev/null and b/public/img/shop/fashion/thumbs/06.png differ diff --git a/public/img/shop/fashion/thumbs/07.png b/public/img/shop/fashion/thumbs/07.png new file mode 100644 index 0000000..ebdd5ac Binary files /dev/null and b/public/img/shop/fashion/thumbs/07.png differ diff --git a/public/img/shop/fashion/thumbs/08.png b/public/img/shop/fashion/thumbs/08.png new file mode 100644 index 0000000..f251e55 Binary files /dev/null and b/public/img/shop/fashion/thumbs/08.png differ diff --git a/public/img/shop/fashion/thumbs/09.png b/public/img/shop/fashion/thumbs/09.png new file mode 100644 index 0000000..34be82d Binary files /dev/null and b/public/img/shop/fashion/thumbs/09.png differ diff --git a/public/img/shop/furniture/01-hover.jpg b/public/img/shop/furniture/01-hover.jpg new file mode 100644 index 0000000..1bd5487 Binary files /dev/null and b/public/img/shop/furniture/01-hover.jpg differ diff --git a/public/img/shop/furniture/01.png b/public/img/shop/furniture/01.png new file mode 100644 index 0000000..9b3d983 Binary files /dev/null and b/public/img/shop/furniture/01.png differ diff --git a/public/img/shop/furniture/02-hover.jpg b/public/img/shop/furniture/02-hover.jpg new file mode 100644 index 0000000..fc17613 Binary files /dev/null and b/public/img/shop/furniture/02-hover.jpg differ diff --git a/public/img/shop/furniture/02.png b/public/img/shop/furniture/02.png new file mode 100644 index 0000000..94b54c6 Binary files /dev/null and b/public/img/shop/furniture/02.png differ diff --git a/public/img/shop/furniture/03-hover.jpg b/public/img/shop/furniture/03-hover.jpg new file mode 100644 index 0000000..25a3cf6 Binary files /dev/null and b/public/img/shop/furniture/03-hover.jpg differ diff --git a/public/img/shop/furniture/03.png b/public/img/shop/furniture/03.png new file mode 100644 index 0000000..35cd5f7 Binary files /dev/null and b/public/img/shop/furniture/03.png differ diff --git a/public/img/shop/furniture/04-hover.jpg b/public/img/shop/furniture/04-hover.jpg new file mode 100644 index 0000000..851ada2 Binary files /dev/null and b/public/img/shop/furniture/04-hover.jpg differ diff --git a/public/img/shop/furniture/04.png b/public/img/shop/furniture/04.png new file mode 100644 index 0000000..238210e Binary files /dev/null and b/public/img/shop/furniture/04.png differ diff --git a/public/img/shop/furniture/05-hover.jpg b/public/img/shop/furniture/05-hover.jpg new file mode 100644 index 0000000..9a073f0 Binary files /dev/null and b/public/img/shop/furniture/05-hover.jpg differ diff --git a/public/img/shop/furniture/05.png b/public/img/shop/furniture/05.png new file mode 100644 index 0000000..3c254f3 Binary files /dev/null and b/public/img/shop/furniture/05.png differ diff --git a/public/img/shop/furniture/06-hover.jpg b/public/img/shop/furniture/06-hover.jpg new file mode 100644 index 0000000..e41a03d Binary files /dev/null and b/public/img/shop/furniture/06-hover.jpg differ diff --git a/public/img/shop/furniture/06.png b/public/img/shop/furniture/06.png new file mode 100644 index 0000000..95f66e3 Binary files /dev/null and b/public/img/shop/furniture/06.png differ diff --git a/public/img/shop/furniture/07-hover.jpg b/public/img/shop/furniture/07-hover.jpg new file mode 100644 index 0000000..fcdd396 Binary files /dev/null and b/public/img/shop/furniture/07-hover.jpg differ diff --git a/public/img/shop/furniture/07.png b/public/img/shop/furniture/07.png new file mode 100644 index 0000000..60b1020 Binary files /dev/null and b/public/img/shop/furniture/07.png differ diff --git a/public/img/shop/furniture/08-hover.jpg b/public/img/shop/furniture/08-hover.jpg new file mode 100644 index 0000000..9e4c4b3 Binary files /dev/null and b/public/img/shop/furniture/08-hover.jpg differ diff --git a/public/img/shop/furniture/08.png b/public/img/shop/furniture/08.png new file mode 100644 index 0000000..2d7614d Binary files /dev/null and b/public/img/shop/furniture/08.png differ diff --git a/public/img/shop/furniture/09-hover.jpg b/public/img/shop/furniture/09-hover.jpg new file mode 100644 index 0000000..c9a7cfd Binary files /dev/null and b/public/img/shop/furniture/09-hover.jpg differ diff --git a/public/img/shop/furniture/09.png b/public/img/shop/furniture/09.png new file mode 100644 index 0000000..f920485 Binary files /dev/null and b/public/img/shop/furniture/09.png differ diff --git a/public/img/shop/furniture/10-hover.jpg b/public/img/shop/furniture/10-hover.jpg new file mode 100644 index 0000000..5901116 Binary files /dev/null and b/public/img/shop/furniture/10-hover.jpg differ diff --git a/public/img/shop/furniture/10.png b/public/img/shop/furniture/10.png new file mode 100644 index 0000000..3fda6e3 Binary files /dev/null and b/public/img/shop/furniture/10.png differ diff --git a/public/img/shop/furniture/11-hover.jpg b/public/img/shop/furniture/11-hover.jpg new file mode 100644 index 0000000..5a076e8 Binary files /dev/null and b/public/img/shop/furniture/11-hover.jpg differ diff --git a/public/img/shop/furniture/11.png b/public/img/shop/furniture/11.png new file mode 100644 index 0000000..d27c2bd Binary files /dev/null and b/public/img/shop/furniture/11.png differ diff --git a/public/img/shop/furniture/12-hover.jpg b/public/img/shop/furniture/12-hover.jpg new file mode 100644 index 0000000..170f739 Binary files /dev/null and b/public/img/shop/furniture/12-hover.jpg differ diff --git a/public/img/shop/furniture/12.png b/public/img/shop/furniture/12.png new file mode 100644 index 0000000..0fef254 Binary files /dev/null and b/public/img/shop/furniture/12.png differ diff --git a/public/img/shop/furniture/13-hover.jpg b/public/img/shop/furniture/13-hover.jpg new file mode 100644 index 0000000..eb22cc4 Binary files /dev/null and b/public/img/shop/furniture/13-hover.jpg differ diff --git a/public/img/shop/furniture/13.png b/public/img/shop/furniture/13.png new file mode 100644 index 0000000..abd398d Binary files /dev/null and b/public/img/shop/furniture/13.png differ diff --git a/public/img/shop/furniture/14-hover.jpg b/public/img/shop/furniture/14-hover.jpg new file mode 100644 index 0000000..e64229d Binary files /dev/null and b/public/img/shop/furniture/14-hover.jpg differ diff --git a/public/img/shop/furniture/14.png b/public/img/shop/furniture/14.png new file mode 100644 index 0000000..36ae349 Binary files /dev/null and b/public/img/shop/furniture/14.png differ diff --git a/public/img/shop/furniture/15-hover.jpg b/public/img/shop/furniture/15-hover.jpg new file mode 100644 index 0000000..559280c Binary files /dev/null and b/public/img/shop/furniture/15-hover.jpg differ diff --git a/public/img/shop/furniture/15.png b/public/img/shop/furniture/15.png new file mode 100644 index 0000000..1e6172f Binary files /dev/null and b/public/img/shop/furniture/15.png differ diff --git a/public/img/shop/furniture/16-hover.jpg b/public/img/shop/furniture/16-hover.jpg new file mode 100644 index 0000000..3c88c08 Binary files /dev/null and b/public/img/shop/furniture/16-hover.jpg differ diff --git a/public/img/shop/furniture/16.png b/public/img/shop/furniture/16.png new file mode 100644 index 0000000..f317049 Binary files /dev/null and b/public/img/shop/furniture/16.png differ diff --git a/public/img/shop/furniture/product/01.png b/public/img/shop/furniture/product/01.png new file mode 100644 index 0000000..9c46d30 Binary files /dev/null and b/public/img/shop/furniture/product/01.png differ diff --git a/public/img/shop/furniture/product/02.jpg b/public/img/shop/furniture/product/02.jpg new file mode 100644 index 0000000..08664da Binary files /dev/null and b/public/img/shop/furniture/product/02.jpg differ diff --git a/public/img/shop/furniture/product/03.jpg b/public/img/shop/furniture/product/03.jpg new file mode 100644 index 0000000..bce5903 Binary files /dev/null and b/public/img/shop/furniture/product/03.jpg differ diff --git a/public/img/shop/furniture/product/04.jpg b/public/img/shop/furniture/product/04.jpg new file mode 100644 index 0000000..de9d5ba Binary files /dev/null and b/public/img/shop/furniture/product/04.jpg differ diff --git a/public/img/shop/furniture/product/05.jpg b/public/img/shop/furniture/product/05.jpg new file mode 100644 index 0000000..c0d93c5 Binary files /dev/null and b/public/img/shop/furniture/product/05.jpg differ diff --git a/public/img/shop/furniture/product/06.jpg b/public/img/shop/furniture/product/06.jpg new file mode 100644 index 0000000..6ea551f Binary files /dev/null and b/public/img/shop/furniture/product/06.jpg differ diff --git a/public/img/shop/furniture/product/colors/color01.png b/public/img/shop/furniture/product/colors/color01.png new file mode 100644 index 0000000..983c9c3 Binary files /dev/null and b/public/img/shop/furniture/product/colors/color01.png differ diff --git a/public/img/shop/furniture/product/colors/color02.png b/public/img/shop/furniture/product/colors/color02.png new file mode 100644 index 0000000..803ff52 Binary files /dev/null and b/public/img/shop/furniture/product/colors/color02.png differ diff --git a/public/img/shop/furniture/product/colors/color03.png b/public/img/shop/furniture/product/colors/color03.png new file mode 100644 index 0000000..0f29808 Binary files /dev/null and b/public/img/shop/furniture/product/colors/color03.png differ diff --git a/public/img/shop/furniture/product/thumb.png b/public/img/shop/furniture/product/thumb.png new file mode 100644 index 0000000..2fc36d1 Binary files /dev/null and b/public/img/shop/furniture/product/thumb.png differ diff --git a/public/img/shop/grocery/01.png b/public/img/shop/grocery/01.png new file mode 100644 index 0000000..fb3095d Binary files /dev/null and b/public/img/shop/grocery/01.png differ diff --git a/public/img/shop/grocery/02.png b/public/img/shop/grocery/02.png new file mode 100644 index 0000000..18aad3c Binary files /dev/null and b/public/img/shop/grocery/02.png differ diff --git a/public/img/shop/grocery/03.png b/public/img/shop/grocery/03.png new file mode 100644 index 0000000..03cb290 Binary files /dev/null and b/public/img/shop/grocery/03.png differ diff --git a/public/img/shop/grocery/04.png b/public/img/shop/grocery/04.png new file mode 100644 index 0000000..c00b3e0 Binary files /dev/null and b/public/img/shop/grocery/04.png differ diff --git a/public/img/shop/grocery/05.png b/public/img/shop/grocery/05.png new file mode 100644 index 0000000..d097daa Binary files /dev/null and b/public/img/shop/grocery/05.png differ diff --git a/public/img/shop/grocery/06.png b/public/img/shop/grocery/06.png new file mode 100644 index 0000000..cfb123c Binary files /dev/null and b/public/img/shop/grocery/06.png differ diff --git a/public/img/shop/grocery/07.png b/public/img/shop/grocery/07.png new file mode 100644 index 0000000..783cb88 Binary files /dev/null and b/public/img/shop/grocery/07.png differ diff --git a/public/img/shop/grocery/08.png b/public/img/shop/grocery/08.png new file mode 100644 index 0000000..14bc03b Binary files /dev/null and b/public/img/shop/grocery/08.png differ diff --git a/public/img/shop/grocery/09.png b/public/img/shop/grocery/09.png new file mode 100644 index 0000000..86bbe81 Binary files /dev/null and b/public/img/shop/grocery/09.png differ diff --git a/public/img/shop/grocery/10.png b/public/img/shop/grocery/10.png new file mode 100644 index 0000000..0903a9d Binary files /dev/null and b/public/img/shop/grocery/10.png differ diff --git a/public/img/shop/grocery/11.png b/public/img/shop/grocery/11.png new file mode 100644 index 0000000..a304a05 Binary files /dev/null and b/public/img/shop/grocery/11.png differ diff --git a/public/img/shop/grocery/12.png b/public/img/shop/grocery/12.png new file mode 100644 index 0000000..4ad1cca Binary files /dev/null and b/public/img/shop/grocery/12.png differ diff --git a/public/img/shop/grocery/13.png b/public/img/shop/grocery/13.png new file mode 100644 index 0000000..1a6e924 Binary files /dev/null and b/public/img/shop/grocery/13.png differ diff --git a/public/img/shop/grocery/14.png b/public/img/shop/grocery/14.png new file mode 100644 index 0000000..563a676 Binary files /dev/null and b/public/img/shop/grocery/14.png differ diff --git a/public/img/shop/grocery/15.png b/public/img/shop/grocery/15.png new file mode 100644 index 0000000..3ecb728 Binary files /dev/null and b/public/img/shop/grocery/15.png differ diff --git a/public/img/shop/grocery/16.png b/public/img/shop/grocery/16.png new file mode 100644 index 0000000..b12433e Binary files /dev/null and b/public/img/shop/grocery/16.png differ diff --git a/public/img/shop/grocery/banner.jpg b/public/img/shop/grocery/banner.jpg new file mode 100644 index 0000000..1aa8a34 Binary files /dev/null and b/public/img/shop/grocery/banner.jpg differ diff --git a/public/img/shop/grocery/categories/01.png b/public/img/shop/grocery/categories/01.png new file mode 100644 index 0000000..cc56233 Binary files /dev/null and b/public/img/shop/grocery/categories/01.png differ diff --git a/public/img/shop/grocery/categories/02.png b/public/img/shop/grocery/categories/02.png new file mode 100644 index 0000000..9b3018e Binary files /dev/null and b/public/img/shop/grocery/categories/02.png differ diff --git a/public/img/shop/grocery/categories/03.png b/public/img/shop/grocery/categories/03.png new file mode 100644 index 0000000..ef2b231 Binary files /dev/null and b/public/img/shop/grocery/categories/03.png differ diff --git a/public/img/shop/grocery/categories/04.png b/public/img/shop/grocery/categories/04.png new file mode 100644 index 0000000..99ce198 Binary files /dev/null and b/public/img/shop/grocery/categories/04.png differ diff --git a/public/img/shop/grocery/categories/05.png b/public/img/shop/grocery/categories/05.png new file mode 100644 index 0000000..bdd6bca Binary files /dev/null and b/public/img/shop/grocery/categories/05.png differ diff --git a/public/img/shop/grocery/categories/06.png b/public/img/shop/grocery/categories/06.png new file mode 100644 index 0000000..cd9f13f Binary files /dev/null and b/public/img/shop/grocery/categories/06.png differ diff --git a/public/img/shop/grocery/categories/07.png b/public/img/shop/grocery/categories/07.png new file mode 100644 index 0000000..b0e9dae Binary files /dev/null and b/public/img/shop/grocery/categories/07.png differ diff --git a/public/img/shop/grocery/categories/08.png b/public/img/shop/grocery/categories/08.png new file mode 100644 index 0000000..070cc0e Binary files /dev/null and b/public/img/shop/grocery/categories/08.png differ diff --git a/public/img/shop/grocery/categories/09.png b/public/img/shop/grocery/categories/09.png new file mode 100644 index 0000000..2a9bf81 Binary files /dev/null and b/public/img/shop/grocery/categories/09.png differ diff --git a/public/img/shop/grocery/categories/10.png b/public/img/shop/grocery/categories/10.png new file mode 100644 index 0000000..db090ec Binary files /dev/null and b/public/img/shop/grocery/categories/10.png differ diff --git a/public/img/shop/grocery/categories/11.png b/public/img/shop/grocery/categories/11.png new file mode 100644 index 0000000..ce264bf Binary files /dev/null and b/public/img/shop/grocery/categories/11.png differ diff --git a/public/img/shop/grocery/product/01.png b/public/img/shop/grocery/product/01.png new file mode 100644 index 0000000..187b555 Binary files /dev/null and b/public/img/shop/grocery/product/01.png differ diff --git a/public/img/shop/grocery/product/02.png b/public/img/shop/grocery/product/02.png new file mode 100644 index 0000000..e7fb7e3 Binary files /dev/null and b/public/img/shop/grocery/product/02.png differ diff --git a/public/img/shop/grocery/product/03.png b/public/img/shop/grocery/product/03.png new file mode 100644 index 0000000..3b0b3e4 Binary files /dev/null and b/public/img/shop/grocery/product/03.png differ diff --git a/public/img/shop/grocery/product/th01.png b/public/img/shop/grocery/product/th01.png new file mode 100644 index 0000000..5df0d93 Binary files /dev/null and b/public/img/shop/grocery/product/th01.png differ diff --git a/public/img/shop/grocery/product/th02.png b/public/img/shop/grocery/product/th02.png new file mode 100644 index 0000000..8e6eb35 Binary files /dev/null and b/public/img/shop/grocery/product/th02.png differ diff --git a/public/img/shop/grocery/product/th03.png b/public/img/shop/grocery/product/th03.png new file mode 100644 index 0000000..ed179b9 Binary files /dev/null and b/public/img/shop/grocery/product/th03.png differ diff --git a/public/img/shop/grocery/thankyou-bg-1.png b/public/img/shop/grocery/thankyou-bg-1.png new file mode 100644 index 0000000..3075762 Binary files /dev/null and b/public/img/shop/grocery/thankyou-bg-1.png differ diff --git a/public/img/shop/grocery/thankyou-bg-2.png b/public/img/shop/grocery/thankyou-bg-2.png new file mode 100644 index 0000000..7ccef03 Binary files /dev/null and b/public/img/shop/grocery/thankyou-bg-2.png differ diff --git a/public/img/shop/grocery/thumbs/01.png b/public/img/shop/grocery/thumbs/01.png new file mode 100644 index 0000000..d10a6ed Binary files /dev/null and b/public/img/shop/grocery/thumbs/01.png differ diff --git a/public/img/shop/grocery/thumbs/02.png b/public/img/shop/grocery/thumbs/02.png new file mode 100644 index 0000000..78b6184 Binary files /dev/null and b/public/img/shop/grocery/thumbs/02.png differ diff --git a/public/img/shop/grocery/thumbs/03.png b/public/img/shop/grocery/thumbs/03.png new file mode 100644 index 0000000..e8dd8dd Binary files /dev/null and b/public/img/shop/grocery/thumbs/03.png differ diff --git a/public/img/shop/grocery/thumbs/04.png b/public/img/shop/grocery/thumbs/04.png new file mode 100644 index 0000000..49ec21b Binary files /dev/null and b/public/img/shop/grocery/thumbs/04.png differ diff --git a/public/img/shop/marketplace/01.jpg b/public/img/shop/marketplace/01.jpg new file mode 100644 index 0000000..2117631 Binary files /dev/null and b/public/img/shop/marketplace/01.jpg differ diff --git a/public/img/shop/marketplace/02.jpg b/public/img/shop/marketplace/02.jpg new file mode 100644 index 0000000..8b02b9e Binary files /dev/null and b/public/img/shop/marketplace/02.jpg differ diff --git a/public/img/shop/marketplace/03.jpg b/public/img/shop/marketplace/03.jpg new file mode 100644 index 0000000..bbdc217 Binary files /dev/null and b/public/img/shop/marketplace/03.jpg differ diff --git a/public/img/shop/marketplace/04.jpg b/public/img/shop/marketplace/04.jpg new file mode 100644 index 0000000..08d2e98 Binary files /dev/null and b/public/img/shop/marketplace/04.jpg differ diff --git a/public/img/shop/marketplace/05.jpg b/public/img/shop/marketplace/05.jpg new file mode 100644 index 0000000..5870e48 Binary files /dev/null and b/public/img/shop/marketplace/05.jpg differ diff --git a/public/img/shop/marketplace/06.jpg b/public/img/shop/marketplace/06.jpg new file mode 100644 index 0000000..231d969 Binary files /dev/null and b/public/img/shop/marketplace/06.jpg differ diff --git a/public/img/shop/marketplace/07.jpg b/public/img/shop/marketplace/07.jpg new file mode 100644 index 0000000..df117d7 Binary files /dev/null and b/public/img/shop/marketplace/07.jpg differ diff --git a/public/img/shop/marketplace/08.jpg b/public/img/shop/marketplace/08.jpg new file mode 100644 index 0000000..e27b743 Binary files /dev/null and b/public/img/shop/marketplace/08.jpg differ diff --git a/public/img/shop/marketplace/09.jpg b/public/img/shop/marketplace/09.jpg new file mode 100644 index 0000000..38b5693 Binary files /dev/null and b/public/img/shop/marketplace/09.jpg differ diff --git a/public/img/shop/marketplace/10.jpg b/public/img/shop/marketplace/10.jpg new file mode 100644 index 0000000..33e48fd Binary files /dev/null and b/public/img/shop/marketplace/10.jpg differ diff --git a/public/img/shop/marketplace/11.jpg b/public/img/shop/marketplace/11.jpg new file mode 100644 index 0000000..38052dd Binary files /dev/null and b/public/img/shop/marketplace/11.jpg differ diff --git a/public/img/shop/marketplace/12.jpg b/public/img/shop/marketplace/12.jpg new file mode 100644 index 0000000..6ceb736 Binary files /dev/null and b/public/img/shop/marketplace/12.jpg differ diff --git a/public/img/shop/marketplace/13.jpg b/public/img/shop/marketplace/13.jpg new file mode 100644 index 0000000..ca276ff Binary files /dev/null and b/public/img/shop/marketplace/13.jpg differ diff --git a/public/img/shop/marketplace/14.jpg b/public/img/shop/marketplace/14.jpg new file mode 100644 index 0000000..92af3e4 Binary files /dev/null and b/public/img/shop/marketplace/14.jpg differ diff --git a/public/img/shop/marketplace/15.jpg b/public/img/shop/marketplace/15.jpg new file mode 100644 index 0000000..0689e54 Binary files /dev/null and b/public/img/shop/marketplace/15.jpg differ diff --git a/public/img/shop/marketplace/16.jpg b/public/img/shop/marketplace/16.jpg new file mode 100644 index 0000000..42908e3 Binary files /dev/null and b/public/img/shop/marketplace/16.jpg differ diff --git a/public/img/shop/marketplace/17.jpg b/public/img/shop/marketplace/17.jpg new file mode 100644 index 0000000..d5b98b2 Binary files /dev/null and b/public/img/shop/marketplace/17.jpg differ diff --git a/public/img/shop/marketplace/18.jpg b/public/img/shop/marketplace/18.jpg new file mode 100644 index 0000000..eb08c1f Binary files /dev/null and b/public/img/shop/marketplace/18.jpg differ diff --git a/public/img/shop/marketplace/avatars/01.png b/public/img/shop/marketplace/avatars/01.png new file mode 100644 index 0000000..4847dc3 Binary files /dev/null and b/public/img/shop/marketplace/avatars/01.png differ diff --git a/public/img/shop/marketplace/avatars/02.png b/public/img/shop/marketplace/avatars/02.png new file mode 100644 index 0000000..9aa642b Binary files /dev/null and b/public/img/shop/marketplace/avatars/02.png differ diff --git a/public/img/shop/marketplace/avatars/03.png b/public/img/shop/marketplace/avatars/03.png new file mode 100644 index 0000000..f35e069 Binary files /dev/null and b/public/img/shop/marketplace/avatars/03.png differ diff --git a/public/img/shop/marketplace/avatars/04.png b/public/img/shop/marketplace/avatars/04.png new file mode 100644 index 0000000..be8d88c Binary files /dev/null and b/public/img/shop/marketplace/avatars/04.png differ diff --git a/public/img/shop/marketplace/single/01.jpg b/public/img/shop/marketplace/single/01.jpg new file mode 100644 index 0000000..cbe771a Binary files /dev/null and b/public/img/shop/marketplace/single/01.jpg differ diff --git a/public/img/shop/marketplace/single/02.jpg b/public/img/shop/marketplace/single/02.jpg new file mode 100644 index 0000000..06f0962 Binary files /dev/null and b/public/img/shop/marketplace/single/02.jpg differ diff --git a/public/img/shop/marketplace/single/03.jpg b/public/img/shop/marketplace/single/03.jpg new file mode 100644 index 0000000..0916f76 Binary files /dev/null and b/public/img/shop/marketplace/single/03.jpg differ diff --git a/public/img/shop/marketplace/single/04.jpg b/public/img/shop/marketplace/single/04.jpg new file mode 100644 index 0000000..8a42ab0 Binary files /dev/null and b/public/img/shop/marketplace/single/04.jpg differ diff --git a/public/img/shop/marketplace/single/avatar.png b/public/img/shop/marketplace/single/avatar.png new file mode 100644 index 0000000..d66f9e0 Binary files /dev/null and b/public/img/shop/marketplace/single/avatar.png differ diff --git a/public/img/shop/marketplace/single/comments/01.jpg b/public/img/shop/marketplace/single/comments/01.jpg new file mode 100644 index 0000000..9927924 Binary files /dev/null and b/public/img/shop/marketplace/single/comments/01.jpg differ diff --git a/public/img/shop/marketplace/single/comments/02.jpg b/public/img/shop/marketplace/single/comments/02.jpg new file mode 100644 index 0000000..8900ac3 Binary files /dev/null and b/public/img/shop/marketplace/single/comments/02.jpg differ diff --git a/public/img/shop/marketplace/single/comments/03.jpg b/public/img/shop/marketplace/single/comments/03.jpg new file mode 100644 index 0000000..1b7937f Binary files /dev/null and b/public/img/shop/marketplace/single/comments/03.jpg differ diff --git a/public/img/shop/marketplace/single/th02.jpg b/public/img/shop/marketplace/single/th02.jpg new file mode 100644 index 0000000..fa5100a Binary files /dev/null and b/public/img/shop/marketplace/single/th02.jpg differ diff --git a/public/img/shop/marketplace/single/th03.jpg b/public/img/shop/marketplace/single/th03.jpg new file mode 100644 index 0000000..c79ec8e Binary files /dev/null and b/public/img/shop/marketplace/single/th03.jpg differ 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/manifest.json b/public/manifest.json new file mode 100644 index 0000000..3528ea6 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,33 @@ +{ + "name": "Cartzilla", + "short_name": "Cartzilla", + "description": "Multipurpose E-Commerce Bootstrap Template", + "lang" : "en", + "dir": "ltr", + "start_url": "/index.html", + "scope": "/", + "icons": [ + { + "src": "/app-icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/app-icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/app-icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "background_color": "#fff", + "theme_color": "#131920", + "display": "standalone", + "orientation": "portrait-primary" +} 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/fonts/inter-variable-latin-ext.woff2 b/resources/fonts/inter-variable-latin-ext.woff2 new file mode 100644 index 0000000..725ee6b Binary files /dev/null and b/resources/fonts/inter-variable-latin-ext.woff2 differ diff --git a/resources/fonts/inter-variable-latin.woff2 b/resources/fonts/inter-variable-latin.woff2 new file mode 100644 index 0000000..3edd2e5 Binary files /dev/null and b/resources/fonts/inter-variable-latin.woff2 differ diff --git a/resources/icons/cartzilla-icons.min.css b/resources/icons/cartzilla-icons.min.css new file mode 100644 index 0000000..406e563 --- /dev/null +++ b/resources/icons/cartzilla-icons.min.css @@ -0,0 +1 @@ +@font-face{font-display:block;font-family:cartzilla-icons;src:url(cartzilla-icons.woff2) format("woff2")}[class*=" ci-"]:before,[class^=ci-]:before{font-family:cartzilla-icons!important;font-style:normal;font-variant:normal;font-weight:400!important;line-height:1;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ci-activity:before{content:"\f101"}.ci-airbnb:before{content:"\f102"}.ci-airplay:before{content:"\f103"}.ci-alert-circle:before{content:"\f104"}.ci-alert-octagon:before{content:"\f105"}.ci-alert-triangle:before{content:"\f106"}.ci-align-center:before{content:"\f107"}.ci-align-justify:before{content:"\f108"}.ci-align-left:before{content:"\f109"}.ci-align-right:before{content:"\f10a"}.ci-anchor:before{content:"\f10b"}.ci-aperture:before{content:"\f10c"}.ci-apple:before{content:"\f10d"}.ci-archive:before{content:"\f10e"}.ci-arrow-down-circle:before{content:"\f10f"}.ci-arrow-down-left:before{content:"\f110"}.ci-arrow-down-right:before{content:"\f111"}.ci-arrow-down:before{content:"\f112"}.ci-arrow-left-circle:before{content:"\f113"}.ci-arrow-left:before{content:"\f114"}.ci-arrow-right-circle:before{content:"\f115"}.ci-arrow-right:before{content:"\f116"}.ci-arrow-up-circle:before{content:"\f117"}.ci-arrow-up-left:before{content:"\f118"}.ci-arrow-up-right:before{content:"\f119"}.ci-arrow-up:before{content:"\f11a"}.ci-at-sign:before{content:"\f11b"}.ci-auto:before{content:"\f11c"}.ci-avocado:before{content:"\f11d"}.ci-award:before{content:"\f11e"}.ci-banned:before{content:"\f11f"}.ci-bar-chart-2:before{content:"\f120"}.ci-bar-chart:before{content:"\f121"}.ci-battery-2:before{content:"\f122"}.ci-battery-charging:before{content:"\f123"}.ci-battery:before{content:"\f124"}.ci-behance:before{content:"\f125"}.ci-bell-off:before{content:"\f126"}.ci-bell:before{content:"\f127"}.ci-blogger:before{content:"\f128"}.ci-bluetooth:before{content:"\f129"}.ci-bold:before{content:"\f12a"}.ci-book-open:before{content:"\f12b"}.ci-book:before{content:"\f12c"}.ci-bookmark:before{content:"\f12d"}.ci-box:before{content:"\f12e"}.ci-briefcase:before{content:"\f12f"}.ci-broccoli:before{content:"\f130"}.ci-bullet:before{content:"\f131"}.ci-calendar:before{content:"\f132"}.ci-camera-2:before{content:"\f133"}.ci-camera-off:before{content:"\f134"}.ci-camera:before{content:"\f135"}.ci-cast:before{content:"\f136"}.ci-chat:before{content:"\f137"}.ci-check-circle:before{content:"\f138"}.ci-check-search:before{content:"\f139"}.ci-check-shield:before{content:"\f13a"}.ci-check-square:before{content:"\f13b"}.ci-check:before{content:"\f13c"}.ci-chevron-down:before{content:"\f13d"}.ci-chevron-left:before{content:"\f13e"}.ci-chevron-right:before{content:"\f13f"}.ci-chevron-up:before{content:"\f140"}.ci-chevrons-down:before{content:"\f141"}.ci-chevrons-left:before{content:"\f142"}.ci-chevrons-right:before{content:"\f143"}.ci-chevrons-up:before{content:"\f144"}.ci-click:before{content:"\f145"}.ci-clipboard:before{content:"\f146"}.ci-clock:before{content:"\f147"}.ci-close-circle:before{content:"\f148"}.ci-close-octagon:before{content:"\f149"}.ci-close-square:before{content:"\f14a"}.ci-close:before{content:"\f14b"}.ci-cloud-drizzle:before{content:"\f14c"}.ci-cloud-lightning:before{content:"\f14d"}.ci-cloud-off:before{content:"\f14e"}.ci-cloud-rain:before{content:"\f14f"}.ci-cloud-snow:before{content:"\f150"}.ci-cloud:before{content:"\f151"}.ci-code:before{content:"\f152"}.ci-codepen:before{content:"\f153"}.ci-coffee:before{content:"\f154"}.ci-columns:before{content:"\f155"}.ci-command:before{content:"\f156"}.ci-compass:before{content:"\f157"}.ci-computer:before{content:"\f158"}.ci-copy:before{content:"\f159"}.ci-corner-down-left:before{content:"\f15a"}.ci-corner-down-right:before{content:"\f15b"}.ci-corner-left-down:before{content:"\f15c"}.ci-corner-left-up:before{content:"\f15d"}.ci-corner-right-down:before{content:"\f15e"}.ci-corner-right-up:before{content:"\f15f"}.ci-corner-up-left:before{content:"\f160"}.ci-corner-up-right:before{content:"\f161"}.ci-credit-card:before{content:"\f162"}.ci-crop:before{content:"\f163"}.ci-crosshair:before{content:"\f164"}.ci-database:before{content:"\f165"}.ci-delete:before{content:"\f166"}.ci-delivery-2:before{content:"\f167"}.ci-delivery:before{content:"\f168"}.ci-disc:before{content:"\f169"}.ci-discord:before{content:"\f16a"}.ci-disqus:before{content:"\f16b"}.ci-divide:before{content:"\f16c"}.ci-dollar-sign:before{content:"\f16d"}.ci-download-cloud:before{content:"\f16e"}.ci-download:before{content:"\f16f"}.ci-dribbble:before{content:"\f170"}.ci-dropbox:before{content:"\f171"}.ci-droplet:before{content:"\f172"}.ci-edit-2:before{content:"\f173"}.ci-edit-3:before{content:"\f174"}.ci-edit:before{content:"\f175"}.ci-envato:before{content:"\f176"}.ci-evernote:before{content:"\f177"}.ci-external-link:before{content:"\f178"}.ci-eye-off:before{content:"\f179"}.ci-eye:before{content:"\f17a"}.ci-facebook:before{content:"\f17b"}.ci-fast-forward:before{content:"\f17c"}.ci-feather:before{content:"\f17d"}.ci-file-minus:before{content:"\f17e"}.ci-file-plus:before{content:"\f17f"}.ci-file-text:before{content:"\f180"}.ci-file:before{content:"\f181"}.ci-film:before{content:"\f182"}.ci-filter:before{content:"\f183"}.ci-flag:before{content:"\f184"}.ci-flickr:before{content:"\f185"}.ci-folder-minus:before{content:"\f186"}.ci-folder-plus:before{content:"\f187"}.ci-folder:before{content:"\f188"}.ci-food:before{content:"\f189"}.ci-foursquare:before{content:"\f18a"}.ci-frown:before{content:"\f18b"}.ci-game:before{content:"\f18c"}.ci-gift:before{content:"\f18d"}.ci-github:before{content:"\f18e"}.ci-globe:before{content:"\f18f"}.ci-gluten-free:before{content:"\f190"}.ci-google-drive:before{content:"\f191"}.ci-google-play:before{content:"\f192"}.ci-google:before{content:"\f193"}.ci-grid-2:before{content:"\f194"}.ci-grid:before{content:"\f195"}.ci-hanger:before{content:"\f196"}.ci-hangouts:before{content:"\f197"}.ci-hard-drive-2:before{content:"\f198"}.ci-hard-drive:before{content:"\f199"}.ci-hash:before{content:"\f19a"}.ci-headphones-2:before{content:"\f19b"}.ci-headphones:before{content:"\f19c"}.ci-heart-filled:before{content:"\f19d"}.ci-heart:before{content:"\f19e"}.ci-help-circle:before{content:"\f19f"}.ci-home:before{content:"\f1a0"}.ci-id-card:before{content:"\f1a1"}.ci-image:before{content:"\f1a2"}.ci-inbox:before{content:"\f1a3"}.ci-info:before{content:"\f1a4"}.ci-instagram:before{content:"\f1a5"}.ci-italic:before{content:"\f1a6"}.ci-key:before{content:"\f1a7"}.ci-kickstarter:before{content:"\f1a8"}.ci-layers-2:before{content:"\f1a9"}.ci-layers:before{content:"\f1aa"}.ci-layout:before{content:"\f1ab"}.ci-leaf:before{content:"\f1ac"}.ci-life-buoy:before{content:"\f1ad"}.ci-link-2:before{content:"\f1ae"}.ci-link:before{content:"\f1af"}.ci-linkedin:before{content:"\f1b0"}.ci-list:before{content:"\f1b1"}.ci-loader:before{content:"\f1b2"}.ci-lock:before{content:"\f1b3"}.ci-log-in:before{content:"\f1b4"}.ci-log-out:before{content:"\f1b5"}.ci-mail:before{content:"\f1b6"}.ci-map-pin:before{content:"\f1b7"}.ci-map:before{content:"\f1b8"}.ci-maximize-2:before{content:"\f1b9"}.ci-maximize:before{content:"\f1ba"}.ci-medium:before{content:"\f1bb"}.ci-meh:before{content:"\f1bc"}.ci-menu:before{content:"\f1bd"}.ci-message-circle:before{content:"\f1be"}.ci-message-square:before{content:"\f1bf"}.ci-messenger:before{content:"\f1c0"}.ci-mic-off:before{content:"\f1c1"}.ci-mic:before{content:"\f1c2"}.ci-minimize-2:before{content:"\f1c3"}.ci-minimize:before{content:"\f1c4"}.ci-minus-circle:before{content:"\f1c5"}.ci-minus-square:before{content:"\f1c6"}.ci-minus:before{content:"\f1c7"}.ci-monitor-2:before{content:"\f1c8"}.ci-monitor:before{content:"\f1c9"}.ci-moon:before{content:"\f1ca"}.ci-more-horizontal:before{content:"\f1cb"}.ci-more-vertical:before{content:"\f1cc"}.ci-mouse-pointer:before{content:"\f1cd"}.ci-move:before{content:"\f1ce"}.ci-music:before{content:"\f1cf"}.ci-myspace:before{content:"\f1d0"}.ci-navigation-2:before{content:"\f1d1"}.ci-navigation:before{content:"\f1d2"}.ci-odnoklassniki:before{content:"\f1d3"}.ci-open-source:before{content:"\f1d4"}.ci-package:before{content:"\f1d5"}.ci-paint:before{content:"\f1d6"}.ci-paperclip:before{content:"\f1d7"}.ci-patreon:before{content:"\f1d8"}.ci-pause-circle:before{content:"\f1d9"}.ci-pause:before{content:"\f1da"}.ci-pen-tool:before{content:"\f1db"}.ci-percent:before{content:"\f1dc"}.ci-phone-call:before{content:"\f1dd"}.ci-phone-forwarded:before{content:"\f1de"}.ci-phone-incoming:before{content:"\f1df"}.ci-phone-missed:before{content:"\f1e0"}.ci-phone-off:before{content:"\f1e1"}.ci-phone-outgoing:before{content:"\f1e2"}.ci-phone:before{content:"\f1e3"}.ci-pie-chart:before{content:"\f1e4"}.ci-pinterest:before{content:"\f1e5"}.ci-play-circle:before{content:"\f1e6"}.ci-play-filled:before{content:"\f1e7"}.ci-play:before{content:"\f1e8"}.ci-plus-circle:before{content:"\f1e9"}.ci-plus-square:before{content:"\f1ea"}.ci-plus:before{content:"\f1eb"}.ci-power:before{content:"\f1ec"}.ci-powerbank:before{content:"\f1ed"}.ci-printer-2:before{content:"\f1ee"}.ci-printer:before{content:"\f1ef"}.ci-product-hunt:before{content:"\f1f0"}.ci-quora:before{content:"\f1f1"}.ci-radio:before{content:"\f1f2"}.ci-reddit:before{content:"\f1f3"}.ci-refresh-ccw:before{content:"\f1f4"}.ci-refresh-cw:before{content:"\f1f5"}.ci-repeat:before{content:"\f1f6"}.ci-rewind:before{content:"\f1f7"}.ci-rocket:before{content:"\f1f8"}.ci-rotate-ccw:before{content:"\f1f9"}.ci-rotate-cw:before{content:"\f1fa"}.ci-rss-2:before{content:"\f1fb"}.ci-rss:before{content:"\f1fc"}.ci-ruler:before{content:"\f1fd"}.ci-save:before{content:"\f1fe"}.ci-scan:before{content:"\f1ff"}.ci-schedule:before{content:"\f200"}.ci-scissors:before{content:"\f201"}.ci-search:before{content:"\f202"}.ci-send:before{content:"\f203"}.ci-server:before{content:"\f204"}.ci-settings:before{content:"\f205"}.ci-share-2:before{content:"\f206"}.ci-share:before{content:"\f207"}.ci-shield-off:before{content:"\f208"}.ci-shield:before{content:"\f209"}.ci-shopping-bag:before{content:"\f20a"}.ci-shopping-cart:before{content:"\f20b"}.ci-shuffle:before{content:"\f20c"}.ci-sidebar:before{content:"\f20d"}.ci-skip-back:before{content:"\f20e"}.ci-skip-forward:before{content:"\f20f"}.ci-skype:before{content:"\f210"}.ci-slack:before{content:"\f211"}.ci-sliders:before{content:"\f212"}.ci-smartphone-2:before{content:"\f213"}.ci-smartphone:before{content:"\f214"}.ci-smile:before{content:"\f215"}.ci-snapchat:before{content:"\f216"}.ci-sort:before{content:"\f217"}.ci-soundcloud:before{content:"\f218"}.ci-speaker-2:before{content:"\f219"}.ci-speaker:before{content:"\f21a"}.ci-spotify:before{content:"\f21b"}.ci-stack-overflow:before{content:"\f21c"}.ci-star-filled:before{content:"\f21d"}.ci-star-half:before{content:"\f21e"}.ci-star:before{content:"\f21f"}.ci-steam:before{content:"\f220"}.ci-stop-circle:before{content:"\f221"}.ci-stumbleupon:before{content:"\f222"}.ci-sun:before{content:"\f223"}.ci-sunrise:before{content:"\f224"}.ci-sunset:before{content:"\f225"}.ci-table:before{content:"\f226"}.ci-tablet:before{content:"\f227"}.ci-tag:before{content:"\f228"}.ci-target:before{content:"\f229"}.ci-telegram:before{content:"\f22a"}.ci-terminal:before{content:"\f22b"}.ci-thermometer:before{content:"\f22c"}.ci-thumbs-down:before{content:"\f22d"}.ci-thumbs-up:before{content:"\f22e"}.ci-ticket:before{content:"\f22f"}.ci-tiktok:before{content:"\f230"}.ci-tinder:before{content:"\f231"}.ci-tool:before{content:"\f232"}.ci-trash-empty:before{content:"\f233"}.ci-trash:before{content:"\f234"}.ci-trello:before{content:"\f235"}.ci-trending-down:before{content:"\f236"}.ci-trending-up:before{content:"\f237"}.ci-triangle:before{content:"\f238"}.ci-truck:before{content:"\f239"}.ci-tumblr:before{content:"\f23a"}.ci-tv:before{content:"\f23b"}.ci-twitch:before{content:"\f23c"}.ci-type:before{content:"\f23d"}.ci-umbrella:before{content:"\f23e"}.ci-unlock:before{content:"\f23f"}.ci-upload-cloud:before{content:"\f240"}.ci-upload:before{content:"\f241"}.ci-user-check:before{content:"\f242"}.ci-user-plus:before{content:"\f243"}.ci-user-x:before{content:"\f244"}.ci-user:before{content:"\f245"}.ci-viber:before{content:"\f246"}.ci-video-off:before{content:"\f247"}.ci-video:before{content:"\f248"}.ci-vimeo:before{content:"\f249"}.ci-vk:before{content:"\f24a"}.ci-voicemail:before{content:"\f24b"}.ci-volume-1:before{content:"\f24c"}.ci-volume-2:before{content:"\f24d"}.ci-volume-x:before{content:"\f24e"}.ci-volume:before{content:"\f24f"}.ci-watch-2:before{content:"\f250"}.ci-watch:before{content:"\f251"}.ci-wechat:before{content:"\f252"}.ci-whatsapp:before{content:"\f253"}.ci-wifi-off:before{content:"\f254"}.ci-wifi:before{content:"\f255"}.ci-wind:before{content:"\f256"}.ci-x:before{content:"\f257"}.ci-xing:before{content:"\f258"}.ci-yelp:before{content:"\f259"}.ci-youtube:before{content:"\f25a"}.ci-zap-off:before{content:"\f25b"}.ci-zap:before{content:"\f25c"}.ci-zoom-in:before{content:"\f25d"}.ci-zoom-out:before{content:"\f25e"} \ No newline at end of file diff --git a/resources/icons/cartzilla-icons.woff2 b/resources/icons/cartzilla-icons.woff2 new file mode 100644 index 0000000..bcc3fed Binary files /dev/null and b/resources/icons/cartzilla-icons.woff2 differ diff --git a/resources/js/components/autofocus.js b/resources/js/components/autofocus.js new file mode 100644 index 0000000..c6f1498 --- /dev/null +++ b/resources/js/components/autofocus.js @@ -0,0 +1,27 @@ +/** + * Focus input field automatically upon openning modal, collapse, offcanvas, dropdown or window + */ + +export default (() => { + const autofocus = document.querySelectorAll('[data-autofocus]') + + if (autofocus.length === 0) return + + autofocus.forEach((input) => { + const containerType = input.dataset.autofocus // modal / collapse / offcanvas / dropdown / window + + if ( + containerType === 'modal' || + containerType === 'collapse' || + containerType === 'offcanvas' || + containerType === 'dropdown' + ) { + const container = input.closest('.' + containerType) + container.addEventListener(`shown.bs.${containerType}`, () => { + input.focus() + }) + } else { + input.focus() + } + }) +})() diff --git a/resources/js/components/binded-label.js b/resources/js/components/binded-label.js new file mode 100644 index 0000000..cbe1eb1 --- /dev/null +++ b/resources/js/components/binded-label.js @@ -0,0 +1,33 @@ +/** + * Update the text inside the binded element taken from data-label upon clicking + */ + +export default (() => { + const bindedLabels = document.querySelectorAll('[data-binded-label]') + + if (bindedLabels.length === 0) return + + bindedLabels.forEach((container) => { + try { + const targetElement = document.querySelector( + container.dataset.bindedLabel + ) + if (!targetElement) { + throw new Error( + `Target element not found for data-binded-label: ${container.dataset.bindedLabel}` + ) + } + + container.addEventListener('click', (event) => { + const clickedElement = event.target.closest('[data-label]') + if (!clickedElement) return + + const dataLabel = clickedElement.dataset.label + + targetElement.textContent = dataLabel + }) + } catch (error) { + console.error(error) + } + }) +})() diff --git a/resources/js/components/carousel.js b/resources/js/components/carousel.js new file mode 100644 index 0000000..89d4c6b --- /dev/null +++ b/resources/js/components/carousel.js @@ -0,0 +1,60 @@ +/** + * Content carousel (slider) with extensive options to control behaviour and appearance + * @requires https://swiperjs.com/ + */ + +import Swiper from 'swiper/bundle' + +export default (() => { + // Get all elements with the 'swiper' class + const carousels = document.querySelectorAll('[data-swiper]') + + if (carousels.length === 0) return + + // Iterate over each element using the built-in forEach method + /* eslint-disable no-unused-vars */ + carousels.forEach((value, index) => { + let options, images + + // Parse swiper options from the data attribute + if (value.dataset.swiper !== undefined && value.dataset.swiper !== '') { + options = JSON.parse(value.dataset.swiper) + images = options?.thumbnails?.images + } + + // Create a new Swiper instance + /* eslint-disable no-undef */ + const swiper = new Swiper(value, options) + /* eslint-enable no-undef */ + + // Check if a controlled slider is specified + if (options?.controlSlider) { + let controlledSliders = [] + + if (Array.isArray(options.controlSlider)) { + // Handle multiple sliders + controlledSliders = options.controlSlider.map((selector) => + document.querySelector(selector) + ) + } else { + // Handle single slider + controlledSliders.push(document.querySelector(options.controlSlider)) + } + + const swiperControlledInstances = controlledSliders.map( + (controlledSlider) => { + const controlledSliderOptions = + controlledSlider?.dataset.swiper && + JSON.parse(controlledSlider.dataset.swiper) + + // Create a new Swiper instance for each controlled slider + /* eslint-disable no-undef */ + return new Swiper(controlledSlider, controlledSliderOptions) + /* eslint-enable no-undef */ + } + ) + + swiper.controller.control = swiperControlledInstances + } + }) +})() diff --git a/resources/js/components/chart.js b/resources/js/components/chart.js new file mode 100644 index 0000000..d49a03a --- /dev/null +++ b/resources/js/components/chart.js @@ -0,0 +1,22 @@ +/** + * Charts + * @requires https://www.chartjs.org/ + */ +import Chart from 'chart.js/auto' + +export default (() => { + const charts = document.querySelectorAll('[data-chart]') + + if (charts.length === 0) return + + charts.forEach((chartElement) => { + const { chart: chartData } = chartElement.dataset + const options = JSON.parse(chartData) + + if (typeof Chart !== 'undefined') { + new Chart(chartElement, options) // eslint-disable-line no-undef + } else { + console.error('Chart is not defined.') + } + }) +})() diff --git a/resources/js/components/code-highlight.js b/resources/js/components/code-highlight.js new file mode 100644 index 0000000..d84debc --- /dev/null +++ b/resources/js/components/code-highlight.js @@ -0,0 +1,55 @@ +/** + * Code highlighting + * @requires https://highlightjs.org/ + */ + +export default (() => { + /* eslint-disable no-undef */ + document.querySelectorAll('.code-highlight code').forEach((el) => { + // Extracting language from the class name + const languageClass = Array.from(el.classList).find((cls) => + cls.startsWith('language-') + ) + const language = languageClass ? languageClass.split('-')[1] : null + + // Proceed only if a language is found + if (language) { + hljs.configure({ + ignoreUnescapedHTML: true, + languages: [language], // Adding the detected language to the array + }) + hljs.highlightElement(el) + } + }) + /* eslint-enable no-undef */ + + // Copy to clipboard button + const buttons = document.querySelectorAll('[data-copy-code]') + buttons.forEach((button) => { + button.addEventListener('click', () => { + const codeBlockId = button.getAttribute('data-copy-code').substring(1) + const codeBlock = document.getElementById(codeBlockId) + if (codeBlock) { + const codeText = codeBlock.textContent || codeBlock.innerText + navigator.clipboard + .writeText(codeText) + .then(() => { + button.classList.remove('btn-outline-secondary') + button.classList.add('btn-outline-success', 'text-success') + button.innerHTML = ' Copied' + + setTimeout(() => { + button.classList.remove('btn-outline-success', 'text-success') + button.classList.add('btn-outline-secondary') + button.innerHTML = ' Copy' + }, 2000) + }) + .catch((err) => { + console.error('Failed to copy code: ', err) + }) + } else { + console.error('Code block not found: ' + codeBlockId) + } + }) + }) +})() diff --git a/resources/js/components/copy-text.js b/resources/js/components/copy-text.js new file mode 100644 index 0000000..6a51a41 --- /dev/null +++ b/resources/js/components/copy-text.js @@ -0,0 +1,38 @@ +/** + * Copy text string to clipboard from the target element + */ + +export default (() => { + // Function to copy text to clipboard + const copyToClipboard = (text) => { + return navigator.clipboard.writeText(text) + } + + // Function to handle button click + const handleButtonClick = (event) => { + const button = event.target + const originalInnerHTML = button.innerHTML + const doneLabel = button.dataset.doneLabel || 'Copied' + const selector = button.getAttribute('data-copy-text-from') + const targetElement = document.querySelector(selector) + const textToCopy = targetElement.value || targetElement.textContent + + // Copy the text to the clipboard and update button state + copyToClipboard(textToCopy) + .then(() => { + button.innerHTML = ` ${doneLabel}` + setTimeout(() => { + button.innerHTML = originalInnerHTML + }, 2000) + }) + .catch((err) => { + console.error('Error in copying text: ', err) + }) + } + + // Add event listeners to all buttons with the data-copy-text-from attribute + const buttons = document.querySelectorAll('button[data-copy-text-from]') + buttons.forEach((button) => + button.addEventListener('click', handleButtonClick) + ) +})() diff --git a/resources/js/components/count-input.js b/resources/js/components/count-input.js new file mode 100644 index 0000000..227dbdb --- /dev/null +++ b/resources/js/components/count-input.js @@ -0,0 +1,67 @@ +/** + * Count input with increment (+) and decrement (-) buttons + */ + +export default (() => { + const countInputs = document.querySelectorAll('.count-input') + + if (countInputs.length === 0) return + + const handleIncrement = (event) => { + const input = event.currentTarget.parentNode.querySelector('.form-control') + const maxValue = parseInt(input.getAttribute('max')) || Infinity + + if (input.value < maxValue) { + input.value++ + updateButtonStates(input) + } + } + + const handleDecrement = (event) => { + const input = event.currentTarget.parentNode.querySelector('.form-control') + const minValue = parseInt(input.getAttribute('min')) || 0 + + if (input.value > minValue) { + input.value-- + updateButtonStates(input) + } + } + + const updateButtonStates = (input) => { + const decrementBtn = input.parentNode.querySelector('[data-decrement]') + const incrementBtn = input.parentNode.querySelector('[data-increment]') + const minValue = parseInt(input.getAttribute('min')) || 0 + const maxValue = parseInt(input.getAttribute('max')) || Infinity + + decrementBtn.disabled = input.value <= minValue + incrementBtn.disabled = input.value >= maxValue + + const parent = input.closest('.count-input') + if (!parent.classList.contains('count-input-collapsible')) return + + const inputValue = incrementBtn.querySelector('[data-count-input-value]') + + if (input.value > 0) { + parent.classList.remove('collapsed') + if (inputValue) { + inputValue.textContent = input.value + } + } else { + parent.classList.add('collapsed') + if (inputValue) { + inputValue.textContent = '' + } + } + } + + countInputs.forEach((component) => { + const incrementBtn = component.querySelector('[data-increment]') + const decrementBtn = component.querySelector('[data-decrement]') + const input = component.querySelector('.form-control') + + incrementBtn.addEventListener('click', handleIncrement) + decrementBtn.addEventListener('click', handleDecrement) + + updateButtonStates(input) + }) +})() diff --git a/resources/js/components/countdown.js b/resources/js/components/countdown.js new file mode 100644 index 0000000..ded4f3d --- /dev/null +++ b/resources/js/components/countdown.js @@ -0,0 +1,50 @@ +/** + * Countdown timer + * @requires https://github.com/letstri/timezz + */ + +// import timezz from 'https://cdn.jsdelivr.net/npm/timezz@9.0.2/+esm' +// + +import {timezz} from "timezz"; + +export default (() => { + const timers = document.querySelectorAll('[data-countdown-date]') + + if (timers.length === 0) return + + // Date form demo purpose. This function adds 13 days to user's current date + /* eslint-disable no-unused-vars */ + const demoDate = () => { + const currentDate = new Date() + + currentDate.setDate(currentDate.getDate() + 13) + + const year = currentDate.getFullYear() + const month = (currentDate.getMonth() + 1).toString().padStart(2, '0') + const day = currentDate.getDate().toString().padStart(2, '0') + const hours = '12' + const minutes = '00' + const seconds = '00' + + const formattedDate = `${month}/${day}/${year} ${hours}:${minutes}:${seconds}` + + return formattedDate + } + /* eslint-enable no-unused-vars */ + + timers.forEach((timer) => { + let date = timer.dataset.countdownDate + + if (date === 'demoDate') { + date = demoDate() + } + + /* eslint-disable no-undef */ + timezz(timer, { + date, + // add more options here + }) + /* eslint-enable no-undef */ + }) +})() diff --git a/resources/js/components/date-picker.js b/resources/js/components/date-picker.js new file mode 100644 index 0000000..0d09b7e --- /dev/null +++ b/resources/js/components/date-picker.js @@ -0,0 +1,35 @@ +/** + * Date / time picker + * @requires https://github.com/flatpickr/flatpickr + */ +import flatpickr from 'flatpickr' +export default (() => { + const pickers = document.querySelectorAll('[data-datepicker]') + + if (pickers.length === 0) return + + const defaultOptions = { + disableMobile: 'true', + } + + pickers.forEach((picker) => { + let dataAttr = picker.getAttribute('data-datepicker'), + userOptions, + options + + if (dataAttr !== '') userOptions = JSON.parse(dataAttr) + + /* eslint-disable indent, no-undef */ + const linkedInput = + userOptions?.linkedInput !== undefined + ? { + plugins: [new rangePlugin({ input: userOptions.linkedInput })], + } + : {} + /* eslint-enable indent, no-undef */ + + options = { ...defaultOptions, ...userOptions, ...linkedInput } + + flatpickr(picker, options) // eslint-disable-line no-undef + }) +})() diff --git a/resources/js/components/dropdown-hover.js b/resources/js/components/dropdown-hover.js new file mode 100644 index 0000000..eddc8bf --- /dev/null +++ b/resources/js/components/dropdown-hover.js @@ -0,0 +1,48 @@ +/** + * Open Dropdown on "hover" (Bootstrap's default is "click") + * @requires https://getbootstrap.com + * @requires https://popper.js.org/ + */ + +import {Dropdown} from "bootstrap" + +export default (() => { + if ((!'ontouchstart') in window || !navigator.maxTouchPoints) { + const dropdownTriggerList = document.querySelectorAll( + '[data-bs-toggle="dropdown"][data-bs-trigger="hover"]' + ) + + /* eslint-disable no-unused-vars, no-undef */ + const dropdownList = [...dropdownTriggerList].map((dropdownTriggerEl) => { + const bsDropdown = new Dropdown(dropdownTriggerEl) + + dropdownTriggerEl.addEventListener('click', (e) => { + if (e.currentTarget.getAttribute('href') === '#') { + e.preventDefault() + } + }) + + dropdownTriggerEl.addEventListener('mouseover', () => { + dropdownTriggerEl.dataset.bsToggle = 'dropdown-hover' + bsDropdown.show() + dropdownTriggerEl.blur() + }) + + dropdownTriggerEl.parentNode.addEventListener('mouseleave', () => { + dropdownTriggerEl.dataset.bsToggle = 'dropdown' + bsDropdown.hide() + }) + + dropdownTriggerEl.addEventListener('focus', () => { + bsDropdown.show() + }) + + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape') { + bsDropdown.hide() + } + }) + }) + } + /* eslint-enable no-unused-vars, no-undef */ +})() diff --git a/resources/js/components/filter-list.js b/resources/js/components/filter-list.js new file mode 100644 index 0000000..e87628f --- /dev/null +++ b/resources/js/components/filter-list.js @@ -0,0 +1,67 @@ +/** + * Search, sort and filter lists and tables + * @requires https://listjs.com/ + */ +import List from "list.js" +export default (() => { + const filterListContainers = document.querySelectorAll('[data-filter-list]') + + if (filterListContainers.length === 0) return + + // Clear button functions + const createClearButton = (container, searchField) => { + const clearButton = document.createElement('button') + clearButton.className = + 'btn btn-sm btn-outline-secondary w-auto border-0 p-1 position-absolute top-50 end-0 translate-middle-y me-2 opacity-0' + clearButton.innerHTML = ` + + + + ` + container.appendChild(clearButton) + updateClearButtonVisibility(searchField, clearButton) + return clearButton + } + + const updateClearButtonVisibility = (searchField, clearButton) => { + clearButton.classList.toggle('opacity-0', searchField.value === '') + } + + const clearSearchField = (searchField, clearButton) => { + searchField.value = '' + updateClearButtonVisibility(searchField, clearButton) + } + + // Init list filtering + /* eslint-disable no-unused-vars, no-undef */ + const filterLists = [...filterListContainers].map((filterListsEl) => { + const options = JSON.parse(filterListsEl.dataset.filterList) + const searchFields = filterListsEl.querySelectorAll( + '.' + options.searchClass + ) + + if (searchFields.length) { + const clearButton = createClearButton( + searchFields[0].parentNode, + searchFields[0] + ) + searchFields.forEach((searchField) => { + searchField.addEventListener('input', () => { + updateClearButtonVisibility(searchField, clearButton) + }) + }) + + clearButton.addEventListener('click', () => { + searchFields.forEach((searchField) => { + clearSearchField(searchField, clearButton) + }) + filterList.search() + }) + } + + const filterList = new List(filterListsEl, options) + + return filterList + }) + /* eslint-enable no-unused-vars, no-undef */ +})() diff --git a/resources/js/components/form-validation.js b/resources/js/components/form-validation.js new file mode 100644 index 0000000..eec90d3 --- /dev/null +++ b/resources/js/components/form-validation.js @@ -0,0 +1,24 @@ +/** + * Starter JavaScript for disabling form submissions if there are invalid fields + */ + +export default (() => { + const forms = document.querySelectorAll('.needs-validation') + + if (forms.length === 0) return + + forms.forEach((form) => { + form.addEventListener( + 'submit', + (event) => { + if (!form.checkValidity()) { + event.preventDefault() + event.stopPropagation() + } + + form.classList.add('was-validated') + }, + false + ) + }) +})() diff --git a/resources/js/components/image-zoom.js b/resources/js/components/image-zoom.js new file mode 100644 index 0000000..0e7ad0c --- /dev/null +++ b/resources/js/components/image-zoom.js @@ -0,0 +1,32 @@ +/** + * Image zoom on hover + * @requires https://github.com/imgix/drift + */ +import Drift from 'drift-zoom' +export default (() => { + const images = document.querySelectorAll('[data-zoom]') + + if (images.length === 0) return + + images.forEach((image) => { + let options + if ( + image.dataset.zoomOptions !== undefined && + image.dataset.zoomOptions !== '' + ) { + options = JSON.parse(image.dataset.zoomOptions) + const zoomPane = document.querySelector(options.paneSelector) + /* eslint-disable no-undef */ + const drift = new Drift(image, { + ...{ paneContainer: zoomPane }, + ...options, + }) + if (options.touchDisable) { + if ('ontouchstart' in window || navigator.maxTouchPoints) { + drift.destroy() + } + } + /* eslint-enable no-undef */ + } + }) +})() diff --git a/resources/js/components/input-formatter.js b/resources/js/components/input-formatter.js new file mode 100644 index 0000000..801d15d --- /dev/null +++ b/resources/js/components/input-formatter.js @@ -0,0 +1,71 @@ +/** + * Input text formatter + * @requires https://nosir.github.io/cleave.js/ + */ + +import Cleave from 'cleave.js' + +export default (() => { + const formattedInputs = document.querySelectorAll('[data-input-format]') + + if (formattedInputs.length === 0) return + + // Card icons + const cardPlaceholder = `` + const cardAmex = `` + const cardVisa = `` + const cardMaster = `` + const cardDiners = `` + const cardJcb = `` + const cardDiscover = `` + + formattedInputs.forEach((input) => { + const targetInput = + input.tagName.toLowerCase() !== 'input' + ? input.querySelector('.form-control') + : input + const cardIcon = input.querySelector('[data-card-icon]') + + let options + let formatter + + if (input.dataset.inputFormat != undefined) + options = JSON.parse(input.dataset.inputFormat) + + /* eslint-disable no-unused-vars, no-undef, indent */ + if (cardIcon) { + cardIcon.innerHTML = cardPlaceholder + + formatter = new Cleave(targetInput, { + ...options, + onCreditCardTypeChanged: (type) => { + switch (type) { + case 'amex': + cardIcon.innerHTML = cardAmex + break + case 'visa': + cardIcon.innerHTML = cardVisa + break + case 'mastercard': + cardIcon.innerHTML = cardMaster + break + case 'diners': + cardIcon.innerHTML = cardDiners + break + case 'jcb': + cardIcon.innerHTML = cardJcb + break + case 'discover': + cardIcon.innerHTML = cardDiscover + break + default: + cardIcon.innerHTML = cardPlaceholder + } + }, + }) + } else { + formatter = new Cleave(targetInput, options) + } + /* eslint-enable no-unused-vars, no-undef, indent */ + }) +})() diff --git a/resources/js/components/lightbox.js b/resources/js/components/lightbox.js new file mode 100644 index 0000000..857252b --- /dev/null +++ b/resources/js/components/lightbox.js @@ -0,0 +1,65 @@ +/** + * Gallery like styled lightbox component for presenting various types of media + * @requires https://github.com/biati-digital/glightbox + */ +import GLightbox from "glightbox"; + +export default (() => { + const lightboxEl = document.querySelector('[data-glightbox]') + + if (lightboxEl === null) return + + // Check the dir attribute on html tag and set the default to "ltr" if it's not set or invalid + const htmlElement = document.documentElement + const direction = + htmlElement.getAttribute('dir') === 'ltr' || + htmlElement.getAttribute('dir') === 'rtl' + ? htmlElement.getAttribute('dir') + : 'ltr' + + const customLightboxHTML = `
+
+
+
+
+ + +
+
` + + const cssEffects = + direction === 'rtl' + ? { + slide: { out: 'slideOutRight', in: 'slideInLeft' }, + slideBack: { out: 'slideOutLeft', in: 'slideInRight' }, + } + : { + slide: { out: 'slideOutLeft', in: 'slideInRight' }, + slideBack: { out: 'slideOutRight', in: 'slideInLeft' }, + } + + /* eslint-disable no-unused-vars, no-undef */ + const lightbox = GLightbox({ + selector: '[data-glightbox]', + lightboxHTML: customLightboxHTML, + openEffect: 'fade', + closeEffect: 'fade', + closeOnOutsideClick: false, + videosWidth: '1200px', + draggable: direction === 'rtl' ? false : true, + touchNavigation: direction === 'rtl' ? false : true, + cssEfects: cssEffects, + }) + /* eslint-enable no-unused-vars, no-undef */ +})() diff --git a/resources/js/components/master-checkbox.js b/resources/js/components/master-checkbox.js new file mode 100644 index 0000000..bd5d79f --- /dev/null +++ b/resources/js/components/master-checkbox.js @@ -0,0 +1,64 @@ +/** + * The master checkboxes are identified by the 'data-master-checkbox' attribute, + which holds an object with the container selector, label text, checked label text, + and an optional selector to show/hide an element based on checkbox state. + When a master checkbox is checked/unchecked, it controls the state of checkboxes + within the specified container, updates the label text, and shows/hides the optional element. + */ + +export default (() => { + const masterCheckboxes = document.querySelectorAll('[data-master-checkbox]') + + if (masterCheckboxes.length === 0) return + + masterCheckboxes.forEach((masterCheckbox) => { + const { container, label, labelChecked, showOnCheck } = JSON.parse( + masterCheckbox.getAttribute('data-master-checkbox') + ) + const checkboxContainer = document.querySelector(container) + const masterCheckboxInput = masterCheckbox.querySelector( + 'input[type="checkbox"]' + ) + const masterCheckboxLabel = + masterCheckbox.querySelector('.form-check-label') + const showOnCheckElement = showOnCheck + ? document.querySelector(showOnCheck) + : null + + if (!checkboxContainer) { + console.error( + `Checkbox container with selector '${container}' not found.` + ) + return + } + + masterCheckboxInput.addEventListener('change', () => { + const allChecked = masterCheckboxInput.checked + checkboxContainer + .querySelectorAll('input[type="checkbox"]') + .forEach((checkbox) => { + checkbox.checked = allChecked + }) + masterCheckboxLabel.textContent = allChecked ? labelChecked : label + if (showOnCheckElement) { + showOnCheckElement.classList.toggle('d-none', !allChecked) + } + }) + + const checkboxes = checkboxContainer.querySelectorAll( + 'input[type="checkbox"]' + ) + checkboxes.forEach((checkbox) => { + checkbox.addEventListener('change', () => { + const anyChecked = Array.from(checkboxes).some( + (checkbox) => checkbox.checked + ) + masterCheckboxInput.checked = anyChecked + masterCheckboxLabel.textContent = anyChecked ? labelChecked : label + if (showOnCheckElement) { + showOnCheckElement.classList.toggle('d-none', !anyChecked) + } + }) + }) + }) +})() diff --git a/resources/js/components/password-toggle.js b/resources/js/components/password-toggle.js new file mode 100644 index 0000000..018396c --- /dev/null +++ b/resources/js/components/password-toggle.js @@ -0,0 +1,55 @@ +/** + * Toggling password visibility inside password input + */ + +export default (() => { + const initializePasswordToggle = (parentContainer) => { + const icon = document.createElement('span') + icon.className = 'password-toggle-button-icon d-flex' + icon.innerHTML = ` + + + + ` + + const buttons = parentContainer.querySelectorAll('.password-toggle-button') + + const togglePassword = (e) => { + const target = e.target + if (target.type !== 'checkbox') return + + const passwordInput = target + .closest('.password-toggle') + .querySelector('.form-control') + + if (target.checked) { + passwordInput.type = 'text' + target.parentElement.querySelector( + '.password-toggle-button-icon' + ).innerHTML = ` + + + + ` + } else { + passwordInput.type = 'password' + target.parentElement.querySelector( + '.password-toggle-button-icon' + ).innerHTML = ` + + + + ` + } + } + + parentContainer.addEventListener('click', togglePassword, false) + + buttons.forEach((button) => { + button.appendChild(icon.cloneNode(true)) + }) + } + + const containers = document.querySelectorAll('.password-toggle') + containers.forEach(initializePasswordToggle) +})() diff --git a/resources/js/components/popover.js b/resources/js/components/popover.js new file mode 100644 index 0000000..879dbf9 --- /dev/null +++ b/resources/js/components/popover.js @@ -0,0 +1,19 @@ +/** + * Popover + * @requires https://getbootstrap.com + * @requires https://popper.js.org/ + */ + +import {Popover} from "bootstrap"; + +export default (() => { + const popoverTriggerList = document.querySelectorAll( + '[data-bs-toggle="popover"]' + ) + + /* eslint-disable no-unused-vars, no-undef */ + const popoverList = [...popoverTriggerList].map( + (popoverTriggerEl) => new Popover(popoverTriggerEl) + ) + /* eslint-enable no-unused-vars, no-undef */ +})() diff --git a/resources/js/components/pwa.js b/resources/js/components/pwa.js new file mode 100644 index 0000000..1ffa7ff --- /dev/null +++ b/resources/js/components/pwa.js @@ -0,0 +1,288 @@ +/** + * Register a Service Worker and add PWA features like installing prompts, + * but only if the HTML tag has data-pwa="true". Unregister service worker if not. + */ + +export default (() => { + const htmlElement = document.documentElement + + // Check the 'data-pwa' attribute of the HTML element + if (htmlElement.getAttribute('data-pwa') !== 'true') { + // Unregister the service worker if it's registered and 'data-pwa' is not 'true' + if ('serviceWorker' in navigator) { + navigator.serviceWorker.getRegistrations().then((registrations) => { + for (let registration of registrations) { + registration.unregister() + } + }) + } + return // Stop further execution to prevent PWA setup when not specified + } + + // Settings + const SETTINGS = { + appName: 'Cartzilla', + remindAfterHours: 24, // Number of hours to wait before showing the prompt again + serviceWorkerFile: '/service-worker.js', // Service worker file path and name + serviceWorkerScope: '/', // Scope of the service worker + diagnostics: false, // Set to true to enable diagnostic logs + } + + /** + * Helper function for logging messages to the console based on the message type. + * @param {string} message - The message to log. + * @param {string} type - The type of message ('info' or 'error'). + */ + const logMessage = (message, type = 'info') => { + if (SETTINGS.diagnostics) { + if (type === 'error') { + console.error(message) + } else { + console.log(message) + } + } + } + + // Helper functions for detecting user's operating system and browser + const userAgent = window.navigator.userAgent.toLowerCase() + + const detectOS = () => { + if (userAgent.includes('android')) return 'Android' + if (/iphone|ipad|ipod/.test(userAgent)) return 'iOS' + if (userAgent.includes('mac')) return 'macOS' + if (userAgent.includes('win')) return 'Windows' + if (userAgent.includes('cros')) return 'ChromeOS' + if (userAgent.includes('linux')) return 'Linux' + return 'Unknown' + } + + const detectBrowser = () => { + if (userAgent.includes('chrome') && !userAgent.includes('edg')) + return 'Chrome' + if (userAgent.includes('safari') && !userAgent.includes('chrome')) + return 'Safari' + if (userAgent.includes('firefox')) return 'Firefox' + if (userAgent.includes('edg')) return 'Edge' + if (userAgent.includes('opera') || userAgent.includes('opr')) return 'Opera' + return 'Unknown' + } + + // Register service worker + if ('serviceWorker' in navigator) { + window.addEventListener('load', () => { + navigator.serviceWorker + .register(SETTINGS.serviceWorkerFile, { + scope: SETTINGS.serviceWorkerScope, + }) + .then((registration) => { + // Registration was successful + logMessage( + 'Service Worker registration successful with scope: ' + + registration.scope + ) + }) + .catch((err) => { + // Registration failed + logMessage('Service Worker registration failed: ' + err, 'error') + }) + }) + } + + // Store variables for future use across application + const promptId = 'installPWAPrompt' + const timeoutKey = `${SETTINGS.appName}-Prompt-Timeout` + const foreverKey = `${SETTINGS.appName}-Prompt-Dismiss-Forever` + const installedKey = `${SETTINGS.appName}-App-Installed` + + // Initialize deferredPrompt for use later to show the install prompt + let deferredPrompt + + // Function to create and show an installation prompt + const installationPrompt = () => { + // Detecting user's browser + const browser = detectBrowser() + + // Check if we should show the prompt + const now = Date.now() + const setupTime = localStorage.getItem(timeoutKey) + const dismissForever = localStorage.getItem(foreverKey) + const appInstalled = localStorage.getItem(installedKey) + + // Check if dismiss forever is set to true or app installed, or not enough time has passed + if ( + dismissForever === 'true' || + appInstalled === 'true' || + (setupTime && + now - setupTime < SETTINGS.remindAfterHours * 60 * 60 * 1000) + ) { + return + } + + // HTML content for the prompt + const promptHTML = ` + + ` + + // Append the prompt HTML to the body + document.body.insertAdjacentHTML('beforeend', promptHTML) + + // Get prompt instance + const promptElement = document.getElementById(promptId) + /* eslint-disable no-undef */ + const promptInstance = new bootstrap.Modal(promptElement, { + backdrop: 'static', // Optional: makes prompt not close when clicking outside + keyboard: false, // Optional: makes prompt not close when pressing escape key + }) + /* eslint-enable no-undef */ + + // Show the prompt + promptInstance.show() + + // Log the message + logMessage('PWA installation prompt has been displayed.') + + // Event listeners to remove the prompt from the DOM when dismissed + document + .getElementById('timeoutPWAButton') + .addEventListener('click', () => { + promptInstance.hide() + localStorage.setItem(timeoutKey, Date.now()) // Set the new timeout value when dismissed + }) + + document + .getElementById('dismissPWAButton') + .addEventListener('click', () => { + promptInstance.hide() + localStorage.setItem(foreverKey, true) // Set the foreverKey value to true + }) + + promptElement.addEventListener('hidden.bs.modal', () => { + promptInstance.dispose() // Ensure the prompt is cleaned up correctly + promptElement.remove() // Remove the prompt from the DOM + }) + } + + // Handling appinstalled event for cases when PWA installed from the address bar or other browser components + window.addEventListener('appinstalled', () => { + localStorage.setItem(installedKey, true) // Set the installedKey value to true + deferredPrompt = null // Clear the deferredPrompt so it can be garbage collected + logMessage('PWA was installed') // Log message + }) + + // Funtion for initialization and configuration of Progressive Web App (PWA) installation prompts based on the user's operating system and browser + const setupPWAInstallation = () => { + const os = detectOS() + const browser = detectBrowser() + + // Check if the PWA is already installed + const isInStandaloneMode = () => + ('standalone' in navigator && navigator.standalone) || + window.matchMedia('(display-mode: standalone)').matches + + if (os === 'iOS' && browser === 'Safari') { + // Specific instructions for Safari on iOS + setTimeout(() => { + if (!isInStandaloneMode()) { + installationPrompt() + logMessage('PWA installation prompt has been displayed.') + } + }, 3500) + } else if ( + os !== 'iOS' && + (browser === 'Chrome' || browser === 'Edge' || browser === 'Opera') + ) { + // Setup for Chrome, Edge, and Opera on non-iOS devices + if (!isInStandaloneMode()) { + window.addEventListener('beforeinstallprompt', (e) => { + // Log message + logMessage(`'beforeinstallprompt' event was fired.`) + // Prevent the mini-infobar from appearing on mobile + e.preventDefault() + // Stash the event so it can be triggered later + deferredPrompt = e + // Show the installation prompt to the user + setTimeout(() => { + installationPrompt() + }, 3500) + }) + + // Handle "Install" button click event + document.body.addEventListener('click', (e) => { + const target = e.target + + // Check if the clicked element is an "Install" button + if (target.id === 'installPWAButton') { + const promptElement = document.getElementById(promptId) + /* eslint-disable no-undef */ + const promptInstance = bootstrap.Modal.getInstance(promptElement) + /* eslint-enable no-undef */ + + if (promptInstance) { + promptInstance.hide() // Hide the prompt + } + + deferredPrompt.prompt() // Show the installation prompt + deferredPrompt.userChoice.then((choiceResult) => { + if (choiceResult.outcome === 'accepted') { + logMessage('User accepted the A2HS prompt. PWA was installed') + localStorage.setItem(installedKey, true) // Set the installedKey value to true + } else { + logMessage('User dismissed the A2HS prompt') + localStorage.setItem(timeoutKey, Date.now()) // Set the new timeout value + } + deferredPrompt = null // We've used the prompt and can't use it again, throw it away + }) + } + }) + } + } else { + logMessage('PWA installation is not supported on your device or browser.') + } + } + + // Call the setup function + setupPWAInstallation() +})() diff --git a/resources/js/components/range-slider.js b/resources/js/components/range-slider.js new file mode 100644 index 0000000..1733b5c --- /dev/null +++ b/resources/js/components/range-slider.js @@ -0,0 +1,100 @@ +/** + * Range slider + * @requires https://refreshless.com/nouislider/ + */ + +import noUiSlider from 'nouislider' +export default (() => { + const rangeSliderWidgets = document.querySelectorAll('[data-range-slider]') + + if (rangeSliderWidgets.length === 0) return + + // Check the dir attribute on html tag and set the default to "ltr" if it's not set or invalid + const htmlElement = document.documentElement + const direction = + htmlElement.getAttribute('dir') === 'ltr' || + htmlElement.getAttribute('dir') === 'rtl' + ? htmlElement.getAttribute('dir') + : 'ltr' + + rangeSliderWidgets.forEach((rangeSliderWidget) => { + const rangeSlider = rangeSliderWidget.querySelector('.range-slider-ui') + const valueMinInput = rangeSliderWidget.querySelector( + '[data-range-slider-min]' + ) + const valueMaxInput = rangeSliderWidget.querySelector( + '[data-range-slider-max]' + ) + + let dataOptions + if (rangeSliderWidget.dataset.rangeSlider !== undefined) + dataOptions = JSON.parse(rangeSliderWidget.dataset.rangeSlider) + + const options = { + startMin: parseInt(dataOptions.startMin, 10), + startMax: parseInt(dataOptions.startMax, 10), + min: parseInt(dataOptions.min, 10), + max: parseInt(dataOptions.max, 10), + step: parseInt(dataOptions.step, 10), + pips: dataOptions.pips, + tooltipPrefix: dataOptions.tooltipPrefix || '', + tooltipSuffix: dataOptions.tooltipSuffix || '', + } + + const start = options.startMax + ? [options.startMin, options.startMax] + : [options.startMin] + const connect = options.startMax ? true : 'lower' + + /* eslint-disable no-undef */ + noUiSlider.create(rangeSlider, { + direction: direction, + start: start, + connect: connect, + step: options.step, + pips: options.pips ? { mode: 'count', values: 5 } : false, + tooltips: true, + range: { + min: options.min, + max: options.max, + }, + format: { + to: function (value) { + return ( + options.tooltipPrefix + parseInt(value, 10) + options.tooltipSuffix + ) + }, + from: function (value) { + return Number(value) + }, + }, + }) + + rangeSlider.noUiSlider.on('update', (values, handle) => { + let value = values[handle] + value = value.replace(/\D/g, '') + if (handle) { + if (valueMaxInput) { + valueMaxInput.value = Math.round(value) + } + } else { + if (valueMinInput) { + valueMinInput.value = Math.round(value) + } + } + }) + + if (valueMinInput) { + valueMinInput.addEventListener('change', function () { + rangeSlider.noUiSlider.set([this.value, null]) + }) + } + + if (valueMaxInput) { + valueMaxInput.addEventListener('change', function () { + rangeSlider.noUiSlider.set([null, this.value]) + }) + } + }) + /* eslint-enable no-undef */ +})() diff --git a/resources/js/components/scroll-top-button.js b/resources/js/components/scroll-top-button.js new file mode 100644 index 0000000..fb38284 --- /dev/null +++ b/resources/js/components/scroll-top-button.js @@ -0,0 +1,59 @@ +/** + * Animate scroll to top button in/off view + */ + +export default (() => { + let button = document.querySelector('.btn-scroll-top'), + scrollOffset = 500 + + if (button === null) return + + let offsetFromTop = parseInt(scrollOffset, 10), + progress = button.querySelector('svg rect'), + length = progress.getTotalLength() + + progress.style.strokeDasharray = length + progress.style.strokeDashoffset = length + + const showProgress = () => { + let scrollPosition = window.pageYOffset, + scrollHeight = + document.documentElement.scrollHeight - + document.documentElement.clientHeight, + scrollPercent = scrollPosition / scrollHeight || 0, + draw = length * scrollPercent + progress.style.strokeDashoffset = length - draw + } + + const handleScroll = () => { + const toggleButtonVisibility = () => { + if (window.pageYOffset > offsetFromTop) { + button.classList.add('show') + } else { + button.classList.remove('show') + } + } + + const throttledToggleButtonVisibility = throttle( + toggleButtonVisibility, + 100 + ) + + throttledToggleButtonVisibility() + showProgress() + } + + const throttle = (callback, delay) => { + let timeoutId = null + return function () { + if (timeoutId === null) { + timeoutId = setTimeout(() => { + callback.apply(null, arguments) + timeoutId = null + }, delay) + } + } + } + + window.addEventListener('scroll', handleScroll) +})() diff --git a/resources/js/components/select-box.js b/resources/js/components/select-box.js new file mode 100644 index 0000000..d0c8d09 --- /dev/null +++ b/resources/js/components/select-box.js @@ -0,0 +1,106 @@ +/** + * Single / multiple select with search and sorting, tags components + * @requires https://github.com/Choices-js/Choices + */ + +import Choices from 'choices.js' +export default (() => { + let selects = document.querySelectorAll('[data-select]') + + if (selects.length === 0) return + + const defaultOptions = { + allowHTML: true, + searchPlaceholderValue: 'Search...', + removeItemButton: true, + editItems: true, + searchEnabled: false, + shouldSort: false, + itemSelectText: '', + classNames: { + containerInner: 'form-select', + }, + } + + selects.forEach((select) => { + let dataAttr = select.getAttribute('data-select'), + template = select.getAttribute('data-select-template'), + userOptions, + options + + if (dataAttr !== '') userOptions = JSON.parse(dataAttr) + + if (template !== null) { + options = { + ...defaultOptions, + ...userOptions, + /* eslint-disable indent */ + callbackOnCreateTemplates: function (template) { + return { + item: ({ classNames }, data) => { + return template(` +
+ ${data.placeholder || !data.customProperties?.selected ? data.label : data.customProperties.selected} + ${userOptions.removeItemButton === false ? '' : ``} +
+ `) + }, + choice: ({ classNames }, data) => { + return template(` +
0 ? 'role="treeitem"' : 'role="option"' + }> +
+ ${data.label} + ${(() => { + let output = '' + if (data.customProperties) { + for (const key in data.customProperties) { + if ( + Object.prototype.hasOwnProperty.call( + data.customProperties, + key + ) && + key !== 'selected' + ) { + output += data.customProperties[key] + } + } + } + return output + })()} +
+
+ `) + }, + } + }, + /* eslint-enable indent */ + } + } else { + options = { ...defaultOptions, ...userOptions } + } + + /* eslint-disable no-unused-vars, no-undef */ + const choices = new Choices(select, options) + /* eslint-enable no-unused-vars, no-undef */ + }) +})() diff --git a/resources/js/components/sticky-element.js b/resources/js/components/sticky-element.js new file mode 100644 index 0000000..e1b6315 --- /dev/null +++ b/resources/js/components/sticky-element.js @@ -0,0 +1,18 @@ +/** + * Stuck navbar to the top on page scroll + */ + +export default (() => { + const stickyElements = document.querySelectorAll('[data-sticky-element]') + if (stickyElements.length === 0) return + const observer = new IntersectionObserver( + ([e]) => e.target.classList.toggle('is-stuck', e.intersectionRatio < 1), + { + threshold: [1], + rootMargin: '0px 0px 100% 0px', + } + ) + stickyElements.forEach((element) => { + observer.observe(element) + }) +})() diff --git a/resources/js/components/sticky-navbar.js b/resources/js/components/sticky-navbar.js new file mode 100644 index 0000000..b7b93d1 --- /dev/null +++ b/resources/js/components/sticky-navbar.js @@ -0,0 +1,53 @@ +/** + * Stuck navbar to the top on page scroll + */ + +export default (() => { + const navbar = document.querySelector('[data-sticky-navbar]') + if (!navbar) return + + const navbarHeight = navbar.clientHeight + + /// Function to add classes to the header and referenced elements + const handleStickyNavbar = () => { + const {offset = 200} = JSON.parse(navbar.dataset.stickyNavbar || '{}') + const offsetValue = parseInt(offset, 10) + + if ( + window.scrollY >= offsetValue && + !navbar.classList.contains('navbar-stuck') + ) { + // Add padding-top to the body to compensate for the height of navbar-stuck + document.body.style.paddingTop = `${navbarHeight}px` + + navbar.classList.add('fixed-top', 'navbar-stuck') + } else if ( + window.scrollY < offsetValue && + navbar.classList.contains('navbar-stuck') + ) { + // Remove padding-top from the body when navbar is no longer stuck + document.body.style.paddingTop = '0' + + navbar.classList.remove('fixed-top', 'navbar-stuck') + } + } + + // Function to debounce the scroll event + const debounce = (func, wait) => { + let timeout + return (...args) => { + const later = () => { + timeout = null + func(...args) + } + clearTimeout(timeout) + timeout = setTimeout(later, wait) + } + } + + // Attach the debounced scroll event handler + window.addEventListener('scroll', debounce(handleStickyNavbar, 5)) + + // Initial call to handleStickyNavbar to set initial state based on page load position + handleStickyNavbar() +})() diff --git a/resources/js/components/tooltip.js b/resources/js/components/tooltip.js new file mode 100644 index 0000000..a288c01 --- /dev/null +++ b/resources/js/components/tooltip.js @@ -0,0 +1,19 @@ +/** + * Tooltip + * @requires https://getbootstrap.com + * @requires https://popper.js.org/ + */ +import {Tooltip} from "bootstrap" + +export default (() => { + const tooltipTriggerList = document.querySelectorAll( + '[data-bs-toggle="tooltip"]' + ) + + /* eslint-disable no-unused-vars, no-undef */ + const tooltipList = [...tooltipTriggerList].map( + (tooltipTriggerEl) => + new Tooltip(tooltipTriggerEl, {trigger: 'hover'}) + ) + /* eslint-enable no-unused-vars, no-undef */ +})() diff --git a/resources/js/theme-switcher.js b/resources/js/theme-switcher.js new file mode 100644 index 0000000..640b8c0 --- /dev/null +++ b/resources/js/theme-switcher.js @@ -0,0 +1,84 @@ +/** + * Switch between light and dark themes (color modes) + */ + +;(() => { + 'use strict' + + const getStoredTheme = () => localStorage.getItem('theme') + const setStoredTheme = (theme) => localStorage.setItem('theme', theme) + + const getPreferredTheme = () => { + const storedTheme = getStoredTheme() + if (storedTheme) { + return storedTheme + } + + // Set default theme to 'light'. + // Possible options: 'dark' or system color mode (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') + return 'light' + } + + const setTheme = (theme) => { + if (theme === 'auto') { + document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) + } else { + document.documentElement.setAttribute('data-bs-theme', theme) + } + } + + setTheme(getPreferredTheme()) + + const showActiveTheme = (theme, focus = false) => { + const themeSwitcher = document.querySelector('.theme-switcher') + + if (!themeSwitcher) { + return + } + + const activeThemeIcon = document.querySelector('.theme-icon-active i') + const btnToActive = document.querySelector( + `[data-bs-theme-value="${theme}"]` + ) + const iconOfActiveBtn = btnToActive.querySelector('.theme-icon i').className + + document.querySelectorAll('[data-bs-theme-value]').forEach((element) => { + element.classList.remove('active') + element.setAttribute('aria-pressed', 'false') + }) + + btnToActive.classList.add('active') + btnToActive.setAttribute('aria-pressed', 'true') + activeThemeIcon.className = iconOfActiveBtn + themeSwitcher.setAttribute( + 'aria-label', + `Toggle theme (${btnToActive.dataset.bsThemeValue})` + ) + + if (focus) { + themeSwitcher.focus() + } + } + + window + .matchMedia('(prefers-color-scheme: dark)') + .addEventListener('change', () => { + const storedTheme = getStoredTheme() + if (storedTheme !== 'light' && storedTheme !== 'dark') { + setTheme(getPreferredTheme()) + } + }) + + window.addEventListener('DOMContentLoaded', () => { + showActiveTheme(getPreferredTheme()) + + document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => { + toggle.addEventListener('click', () => { + const theme = toggle.getAttribute('data-bs-theme-value') + setStoredTheme(theme) + setTheme(theme) + showActiveTheme(theme, true) + }) + }) + }) +})() diff --git a/resources/js/theme.js b/resources/js/theme.js new file mode 100644 index 0000000..498094a --- /dev/null +++ b/resources/js/theme.js @@ -0,0 +1,37 @@ +/*! + * Cartzilla | Multipurpose E-Commerce Bootstrap HTML Template + * Copyright 2024 Coderthemes + * Theme scripts + * + * @author Coderthemes + * @version 1.0.0 + */ +import 'img-comparison-slider' +import 'simplebar' + +// Components +import './components/pwa' +import './components/sticky-navbar' +import './components/sticky-element' +import './components/carousel' +import './components/lightbox' +import './components/countdown' +import './components/range-slider' +import './components/password-toggle' +import './components/count-input' +import './components/input-formatter' +import './components/form-validation' +import './components/autofocus' +import './components/scroll-top-button' +import './components/select-box' +// import './components/dropdown-hover' +import './components/tooltip' +import './components/popover' +import './components/filter-list' +import './components/date-picker' +import './components/master-checkbox' +import './components/binded-label' +import './components/image-zoom' +import './components/code-highlight' +import './components/copy-text' +import './components/chart' diff --git a/resources/scss/_animations.scss b/resources/scss/_animations.scss new file mode 100644 index 0000000..7160fcd --- /dev/null +++ b/resources/scss/_animations.scss @@ -0,0 +1,419 @@ +// Collection of animation utility classes + +// Underline + +@mixin underline( + $border-width: var(--#{$prefix}underline-thickness), + $element: after +) { + position: relative; + + &::#{$element} { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: $border-width; + content: ""; + background-color: currentcolor; + transition: transform .3s ease-out; + transform: scaleX(0); + transform-origin: bottom right; + } +} + +@mixin underline-action($element: after) { + &::#{$element} { + transform: scaleX(1); + transform-origin: bottom left; + } +} + +.animate-underline { + + &.animate-target, + .animate-target { + text-decoration: none; + @include underline(); + } + + &:hover, + &.show, + &.active, + &:focus-visible { + &.animate-target, + .animate-target { + @include underline-action(); + } + } +} + + +// Shake + +.animate-shake { + &:hover, + &:focus-visible { + .animate-target { + animation: shake .8s; + } + } +} + +@keyframes shake { + 0% { + transform: scale3d(1, 1, 1); + } + 20% { + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -5deg); + } + 50%, + 70%, + 90% { + transform: scale3d(1.25, 1.25, 1.25) rotate3d(0, 0, 1, 5deg); + } + 60%, + 80% { + transform: scale3d(1.25, 1.25, 1.25) rotate3d(0, 0, 1, -5deg); + } + 100% { + transform: scale3d(1, 1, 1); + } +} + + +// Pulse + +.animate-pulse { + &:hover, + &:focus-visible { + .animate-target { + animation: pulse .9s; + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 14% { + transform: scale(1.25); + } + 28% { + transform: scale(1); + } + 42% { + transform: scale(1.25); + } + 70% { + transform: scale(1); + } +} + + +// Rotate + +.animate-rotate { + &:hover, + &:focus-visible { + .animate-target { + animation: rotate .45s ease-in-out; + } + } +} + +@keyframes rotate { + from { + transform: rotate(0); + } + to { + transform: rotate(360deg); + } +} + + +// Scale + +.animate-scale { + &:hover, + &:focus-visible { + .animate-target { + animation: scale .35s ease-in-out; + } + } +} + +@keyframes scale { + 0% { + transform: scale3d(1, 1, 1); + } + + 50% { + transform: scale3d(1.2, 1.2, 1.2); + } + + 100% { + transform: scale3d(1, 1, 1); + } +} + + +// Slide + +@mixin slide( $direction: end ) { + overflow: hidden; + + &:hover, + &:focus-visible { + .animate-target { + animation: slide-#{$direction} .3s forwards; + } + } +} + +.animate-slide-end { + @include slide(end); +} + +.animate-slide-start { + @include slide(start); +} + +.animate-slide-up { + @include slide(up); +} + +.animate-slide-down { + @include slide(down); +} + +@keyframes slide-end { + 49% { + transform: translate(100%); + } + 50% { + opacity: 0; + transform: translate(-100%); + } + 51% { + opacity: 1; + } +} + +@keyframes slide-start { + 49% { + transform: translate(-100%); + } + 50% { + opacity: 0; + transform: translate(100%); + } + 51% { + opacity: 1; + } +} + +@keyframes slide-up { + 49% { + transform: translateY(-100%); + } + 50% { + opacity: 0; + transform: translateY(100%); + } + 51% { + opacity: 1; + } +} + +@keyframes slide-down { + 49% { + transform: translateY(100%); + } + 50% { + opacity: 0; + transform: translateY(-100%); + } + 51% { + opacity: 1; + } +} + + +// Blinking + +.animate-blinking { + animation: blinking 1s infinite; +} + +@keyframes blinking { + from { + opacity: 0; + } +} + + +// Disable pseudo elements on .animate-target when used inside .animate-underline parent + +.animate-shake, +.animate-pulse, +.animate-rotate, +.animate-scale, +.animate-slide-end, +.animate-slide-start, +.animate-slide-up, +.animate-slide-down { + .animate-target::after { + display: none; + } +} + + +// Move up and down infinite animation + +.animate-up-down { + animation: move-up-down 5s linear infinite; +} + +@keyframes move-up-down { + 0%, + 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-1rem); + } +} + + +// Move down and up infinite animation + +.animate-down-up { + animation: move-down-up 5s linear infinite; +} + +@keyframes move-down-up { + 0%, + 100% { + transform: translateY(0); + } + 50% { + transform: translateY(1rem); + } +} + + +// Spin infinite animation + +.animate-spin { + animation: spin 10s linear infinite; +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 50% { + transform: rotate(180deg); + } + 100% { + transform: rotate(360deg); + } +} + + +// Blink infinite animation + +.animate-blink { + animation: blink 1.75s linear infinite; +} + +@keyframes blink { + 0% { + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + + +// Fade in animation (for Dropdowns) + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + + +// Fade up animation (for Dropdowns) + +@keyframes fade-up { + from { + opacity: 0; + transform: translateY(.5rem); + } + to { + opacity: 1; + transform: translateY(0); + } +} + + +// Hover effects + +.hover-effect-scale { + --#{$prefix}transition-duration: .35s; + --#{$prefix}transform-scale: 1.06; + + .hover-effect-target { + transition: transform var(--#{$prefix}transition-duration) ease-in-out; + } + + &:hover .hover-effect-target, + &:focus-visible .hover-effect-target, + &:focus-within .hover-effect-target { + transform: scale(var(--#{$prefix}transform-scale)); + } +} + +.hover-effect-opacity { + --#{$prefix}transition-duration: .25s; + + .hover-effect-target { + transition: visibility var(--#{$prefix}transition-duration) ease-in-out, opacity var(--#{$prefix}transition-duration) ease-in-out; + } + + &:hover .hover-effect-target.opacity-0, + &:focus-visible .hover-effect-target.opacity-0, + &:focus-within .hover-effect-target.opacity-0 { + visibility: visible !important; + opacity: 1 !important; + } + + &:hover .hover-effect-target.opacity-100, + &:focus-visible .hover-effect-target.opacity-100, + &:focus-within .hover-effect-target.opacity-100 { + visibility: hidden !important; + opacity: 0 !important; + } +} + +.hover-effect-scale.hover-effect-opacity { + .hover-effect-target { + transition: all var(--#{$prefix}transition-duration) ease-in-out; + } +} + +.hover-effect-underline:hover { + text-decoration: underline !important; + text-decoration-thickness: var(--#{$prefix}underline-thickness) !important; +} diff --git a/resources/scss/_bootstrap.scss b/resources/scss/_bootstrap.scss new file mode 100644 index 0000000..2bdf6d0 --- /dev/null +++ b/resources/scss/_bootstrap.scss @@ -0,0 +1,40 @@ +// Import Bootstrap framework files + +@import "bootstrap/scss/functions"; +@import "bootstrap/scss/variables"; +@import "bootstrap/scss/variables-dark"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; +@import "bootstrap/scss/utilities"; +@import "bootstrap/scss/root"; +@import "bootstrap/scss/reboot"; +@import "bootstrap/scss/type"; +@import "bootstrap/scss/images"; +@import "bootstrap/scss/containers"; +@import "bootstrap/scss/grid"; +@import "bootstrap/scss/tables"; +@import "bootstrap/scss/forms"; +@import "bootstrap/scss/buttons"; +@import "bootstrap/scss/transitions"; +@import "bootstrap/scss/dropdown"; +@import "bootstrap/scss/button-group"; +@import "bootstrap/scss/nav"; +@import "bootstrap/scss/navbar"; +@import "bootstrap/scss/card"; +@import "bootstrap/scss/accordion"; +@import "bootstrap/scss/breadcrumb"; +@import "bootstrap/scss/pagination"; +@import "bootstrap/scss/badge"; +@import "bootstrap/scss/alert"; +@import "bootstrap/scss/progress"; +@import "bootstrap/scss/list-group"; +@import "bootstrap/scss/close"; +@import "bootstrap/scss/toasts"; +@import "bootstrap/scss/modal"; +@import "bootstrap/scss/tooltip"; +@import "bootstrap/scss/popover"; +@import "bootstrap/scss/spinners"; +@import "bootstrap/scss/offcanvas"; +@import "bootstrap/scss/placeholders"; +@import "bootstrap/scss/helpers"; +@import "bootstrap/scss/utilities/api"; diff --git a/resources/scss/_components.scss b/resources/scss/_components.scss new file mode 100644 index 0000000..ab7ae4b --- /dev/null +++ b/resources/scss/_components.scss @@ -0,0 +1,26 @@ +// Theme Components + +@import "components/type"; +@import "components/tables"; +@import "components/forms"; +@import "components/buttons"; +@import "components/dropdown"; +@import "components/nav"; +@import "components/navbar"; +@import "components/card"; +@import "components/accordion"; +@import "components/breadcrumb"; +@import "components/pagination"; +@import "components/alert"; +@import "components/progress"; +@import "components/list-group"; +@import "components/close"; +@import "components/toasts"; +@import "components/tooltip"; +@import "components/popover"; +@import "components/carousel"; +@import "components/lightbox"; +@import "components/select-box"; +@import "components/scrollbar"; +@import "components/date-picker"; +@import "components/image-zoom"; diff --git a/resources/scss/_fonts.scss b/resources/scss/_fonts.scss new file mode 100644 index 0000000..e146207 --- /dev/null +++ b/resources/scss/_fonts.scss @@ -0,0 +1,13 @@ +// Custom web fonts + +// latin +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 300 800; + src: url("../fonts/inter-variable-latin.woff2") format("woff2"); + font-display: swap; + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +// Include necessary font subsets here. Ensure that you preload the font files within the section of the HTML document. diff --git a/resources/scss/_reboot.scss b/resources/scss/_reboot.scss new file mode 100644 index 0000000..be396d1 --- /dev/null +++ b/resources/scss/_reboot.scss @@ -0,0 +1,197 @@ +// Reboot + +// Make the edges of fonts smoother + apply globally :focus-visible styles + +html * { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + &:focus-visible { + outline: var(--#{$prefix}focus-ring-width) solid var(--#{$prefix}focus-ring-color); + } +} + + +// Disable :focus-visible for offcanvas component + +.offcanvas:focus-visible { + outline: none; +} + + +// Sticky footer + +body { + display: flex; + flex-direction: column; + min-height: 100vh; +} +.content-wrapper { + flex: 1; +} +.footer { + flex-shrink: 0; +} + + +// Images +// Responsive images (ensure images don't scale beyond their parents) + +img, +figure { + max-width: 100%; + height: auto; + vertical-align: middle; +} +svg { + max-width: 100%; +} + + +// Responsive iframes + +iframe { + width: 100%; +} + + +// Links +/* stylelint-disable selector-no-qualifying-type */ +a, +button { + text-underline-offset: .25em; + &.text-decoration-underline:hover { + text-decoration: none !important; + } +} +/* stylelint-enable selector-no-qualifying-type */ + +.link-body-emphasis { + --#{$prefix}link-opacity: 1; +} + + +// Text Selection Color + +::selection { + background: var(--#{$prefix}user-selection-color); +} + +@if $enable-dark-mode { + @include color-mode(dark) { + ::selection { + background: var(--#{$prefix}user-selection-color-dark); + } + } +} + + +// Lists + +ol, +ul { + display: flex; + flex-direction: column; + gap: $spacer * .5; + padding-left: $spacer * 1.5; + + ul, + ol { + margin-top: $spacer * .5; + } +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: $paragraph-margin-bottom; +} + +dt { + color: $dt-color; +} + +dd { + margin-bottom: $spacer * .75; +} + + +// Legend + +legend { + color: $legend-color; +} + + +// Base font icons styles + +[class*=" #{$icon-prefix}"], +[class^="#{$icon-prefix}"] { + display: inline-flex; + + &:not(.animate-target) { + a &, + button & { + transition: opacity .2s ease-in-out; + } + a:hover &, + a:focus-visible &, + a.active &, + a.show &, + button:hover &, + button:focus-visible &, + button.active &, + button.show & { + opacity: 1 !important; + } + } +} + + +// Code + +pre, +.hljs { + padding: $pre-padding-y $pre-padding-x; + margin: 0; + background-color: $pre-bg; + @include border-radius($pre-border-radius); +} + +kbd { + @include border-radius($border-radius-xs); +} + +.hljs-comment, +.hljs-quote { + font-style: normal; +} + + +// Section that is wider than a container on a left/right side + +.container-start { + margin-left: calc((100% - (map-get($container-max-widths, "xxl") - $grid-gutter-width)) / 2); +} +.container-end { + margin-right: calc((100% - (map-get($container-max-widths, "xxl") - $grid-gutter-width)) / 2); +} +@include media-breakpoint-down(xxl) { + .container-start { + margin-left: calc((100% - (map-get($container-max-widths, "xl") - $grid-gutter-width)) / 2); + } + .container-end { + margin-right: calc((100% - (map-get($container-max-widths, "xl") - $grid-gutter-width)) / 2); + } +} +@include media-breakpoint-down(sm) { + .container-start { + padding-left: $container-padding-x * .5; + margin-left: 0; + } + .container-end { + padding-right: $container-padding-x * .5; + margin-right: 0; + } +} diff --git a/resources/scss/_root.scss b/resources/scss/_root.scss new file mode 100644 index 0000000..0efbbde --- /dev/null +++ b/resources/scss/_root.scss @@ -0,0 +1,67 @@ +// Root CSS variables + +:root, +[data-bs-theme="light"] { + + // Link color + --#{$prefix}link-color: var(--#{$prefix}info); + --#{$prefix}link-color-rgb: var(--#{$prefix}info-rgb); + --#{$prefix}link-hover-color: var(--#{$prefix}info); + --#{$prefix}link-hover-color-rgb: var(--#{$prefix}info-rgb); + --#{$prefix}component-hover-color: #{$component-hover-color}; + + // Common component colors + --#{$prefix}component-color: #{$component-color}; + --#{$prefix}component-hover-color: #{$component-hover-color}; + --#{$prefix}component-hover-bg: #{$component-hover-bg}; + --#{$prefix}component-active-color: #{$component-active-color}; + --#{$prefix}component-active-bg: #{$component-active-bg}; + --#{$prefix}component-disabled-color: #{$component-disabled-color}; + + // User selection color + --#{$prefix}user-selection-color: #{$user-selection-color}; + + // Add xs and xxxl border-radius + --#{$prefix}border-radius-xs: #{$border-radius-xs}; + --#{$prefix}border-radius-xxxl: #{$border-radius-xxxl}; + + // Add underline thickness global variable + --#{$prefix}underline-thickness: #{$underline-thickness}; + + // Plyr video player main accent color + --plyr-color-main: var(--#{$prefix}primary); +} + + +// Dark mode overrides + +@if $enable-dark-mode { + @include color-mode(dark, true) { + + // Link color + --#{$prefix}link-color: var(--#{$prefix}info); + --#{$prefix}link-color-rgb: var(--#{$prefix}info-rgb); + --#{$prefix}link-hover-color: var(--#{$prefix}info); + --#{$prefix}link-hover-color-rgb: var(--#{$prefix}info-rgb); + + // Common component colors + --#{$prefix}component-color: #{$component-color-dark}; + --#{$prefix}component-hover-color: #{$component-hover-color-dark}; + --#{$prefix}component-hover-bg: #{$component-hover-bg-dark}; + --#{$prefix}component-active-color: #{$component-active-color-dark}; + --#{$prefix}component-active-bg: #{$component-active-bg-dark}; + --#{$prefix}component-disabled-color: #{$component-disabled-color-dark}; + + // User selection color + --#{$prefix}user-selection-color-dark: #{$user-selection-color-dark}; + + // Focus styles + --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity-dark}; + --#{$prefix}focus-ring-color: #{$focus-ring-color-dark}; + + // Box shadow + --#{$prefix}box-shadow: #{$box-shadow-dark}; + --#{$prefix}box-shadow-sm: #{$box-shadow-sm-dark}; + --#{$prefix}box-shadow-lg: #{$box-shadow-lg-dark}; + } +} diff --git a/resources/scss/_user-variables.scss b/resources/scss/_user-variables.scss new file mode 100644 index 0000000..51d4104 --- /dev/null +++ b/resources/scss/_user-variables.scss @@ -0,0 +1,8 @@ +// _user-variables.scss +// Use this to override Bootstrap and Cartzilla variables +// +// Example of a variable override to change Cartzilla background color +// Remove the "//" to enable variables and apply the changes +// +// $body-bg: #f9fafb; +// $body-bg-dark: #111827; diff --git a/resources/scss/_user.scss b/resources/scss/_user.scss new file mode 100644 index 0000000..5d5f081 --- /dev/null +++ b/resources/scss/_user.scss @@ -0,0 +1,2 @@ +// _user.scss +// Use this file to write your custom SCSS diff --git a/resources/scss/_utilities.scss b/resources/scss/_utilities.scss new file mode 100644 index 0000000..8acfd8c --- /dev/null +++ b/resources/scss/_utilities.scss @@ -0,0 +1,318 @@ +// Utilities +// Extend / update default Bootstrap's utility classes + +@import "bootstrap/scss/functions"; +@import "bootstrap/scss/variables"; +@import "bootstrap/scss/variables-dark"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; +@import "bootstrap/scss/utilities"; + +/* stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines */ +$utilities: map-merge( + $utilities, + ( + // Remove utilities + "link-offset": null, + "link-underline": null, + "link-underline-opacity": null, + + // Border radius + "rounded": ( + property: border-radius, + class: rounded, + values: ( + null: var(--#{$prefix}border-radius), + 0: 0, + 1: var(--#{$prefix}border-radius-xs), + 2: var(--#{$prefix}border-radius-sm), + 3: var(--#{$prefix}border-radius), + 4: var(--#{$prefix}border-radius-lg), + 5: var(--#{$prefix}border-radius-xl), + 6: var(--#{$prefix}border-radius-xxl), + 7: var(--#{$prefix}border-radius-xxxl), + circle: 50%, + pill: var(--#{$prefix}border-radius-pill) + ) + ), + "rounded-top": ( + property: border-top-left-radius border-top-right-radius, + class: rounded-top, + values: ( + null: var(--#{$prefix}border-radius), + 0: 0, + 1: var(--#{$prefix}border-radius-xs), + 2: var(--#{$prefix}border-radius-sm), + 3: var(--#{$prefix}border-radius), + 4: var(--#{$prefix}border-radius-lg), + 5: var(--#{$prefix}border-radius-xl), + 6: var(--#{$prefix}border-radius-xxl), + 7: var(--#{$prefix}border-radius-xxxl), + circle: 50%, + pill: var(--#{$prefix}border-radius-pill) + ) + ), + "rounded-end": ( + property: border-top-right-radius border-bottom-right-radius, + class: rounded-end, + values: ( + null: var(--#{$prefix}border-radius), + 0: 0, + 1: var(--#{$prefix}border-radius-xs), + 2: var(--#{$prefix}border-radius-sm), + 3: var(--#{$prefix}border-radius), + 4: var(--#{$prefix}border-radius-lg), + 5: var(--#{$prefix}border-radius-xl), + 6: var(--#{$prefix}border-radius-xxl), + 7: var(--#{$prefix}border-radius-xxxl), + circle: 50%, + pill: var(--#{$prefix}border-radius-pill) + ) + ), + "rounded-bottom": ( + property: border-bottom-right-radius border-bottom-left-radius, + class: rounded-bottom, + values: ( + null: var(--#{$prefix}border-radius), + 0: 0, + 1: var(--#{$prefix}border-radius-xs), + 2: var(--#{$prefix}border-radius-sm), + 3: var(--#{$prefix}border-radius), + 4: var(--#{$prefix}border-radius-lg), + 5: var(--#{$prefix}border-radius-xl), + 6: var(--#{$prefix}border-radius-xxl), + 7: var(--#{$prefix}border-radius-xxxl), + circle: 50%, + pill: var(--#{$prefix}border-radius-pill) + ) + ), + "rounded-start": ( + property: border-bottom-left-radius border-top-left-radius, + class: rounded-start, + values: ( + null: var(--#{$prefix}border-radius), + 0: 0, + 1: var(--#{$prefix}border-radius-xs), + 2: var(--#{$prefix}border-radius-sm), + 3: var(--#{$prefix}border-radius), + 4: var(--#{$prefix}border-radius-lg), + 5: var(--#{$prefix}border-radius-xl), + 6: var(--#{$prefix}border-radius-xxl), + 7: var(--#{$prefix}border-radius-xxxl), + circle: 50%, + pill: var(--#{$prefix}border-radius-pill) + ) + ), + + // Min width + "min-width": ( + property: min-width, + class: min-w, + values: ( + 0: 0, + 100: 100 + ) + ), + + // Line height + "line-height": ( + property: line-height, + class: lh, + values: ( + 0: 0, + 1: 1, + sm: $line-height-sm, + base: $line-height-base, + lg: $line-height-lg, + ) + ), + + // Opacity + "opacity": ( + property: opacity, + values: ( + 0: 0, + 25: .25, + 40: .4, + 50: .5, + 60: .6, + 75: .75, + 100: 1, + ) + ), + + // z-index + "z-index": ( + property: z-index, + class: z, + values: map-merge( + $zindex-levels, + ( + sticky: $zindex-sticky, + fixed: $zindex-fixed + ) + ) + ), + + // cursor + "cursor": ( + property: cursor, + class: cursor, + values: ( + pointer: pointer, + default: default, + help: help, + wait: wait, + crosshair: crosshair, + not-allowed: not-allowed, + zoom-in: zoom-in, + zoom-out: zoom-out, + grab: grab + ) + ) + ) +); + + +// Disable :focus / :focus-visible + +.focus-none { + &:focus, + &:focus-visible { + outline: none !important; + box-shadow: none !important; + } +} + + +// Fix Safari quirk of rounded corners + +[class^="rounded"].overflow-hidden, +[class*=" rounded"].overflow-hidden { + transform: translateZ(0); +} + + +// Dotted background + +.bg-dotted { + --#{$prefix}bg-color: var(--#{$prefix}tertiary-bg); + --#{$prefix}dot-color: var(--#{$prefix}secondary); + --#{$prefix}dot-size: 1px; + --#{$prefix}dot-space: 20px; + + background: linear-gradient(90deg, var(--#{$prefix}bg-color) calc(var(--#{$prefix}dot-space) - var(--#{$prefix}dot-size)), transparent 1%) center, linear-gradient(var(--#{$prefix}bg-color) calc(var(--#{$prefix}dot-space) - var(--#{$prefix}dot-size)), transparent 1%) center, var(--#{$prefix}dot-color); + background-size: var(--#{$prefix}dot-space) var(--#{$prefix}dot-space); +} + + +// Border styles + +.border-dashed { + --#{$prefix}border-style: dashed; +} +.border-dotted { + --#{$prefix}border-style: dotted; +} + + +// Disable transition on element + +.transition-none { + transition: none !important; +} + + +// Disable transform on element + +.transform-none { + transform: none !important; +} + + +// Disable background image on element + +.bg-image-none { + background-image: none !important; +} + + +// Flip objects horizontally when the direction is set to RTL + +[dir="rtl"] .rtl-flip { + transform: rotateY(180deg); +} + + +// Display element only when the direction is set to RTL + +[dir="rtl"] .d-none-rtl { + display: none !important; +} + +[dir="rtl"] .d-block-rtl { + display: block !important; +} + +[dir="rtl"] .d-inline-rtl { + display: inline !important; +} + +[dir="rtl"] .d-inline-block-rtl { + display: inline-block !important; +} + +[dir="rtl"] .d-flex-rtl { + display: flex !important; +} + +[dir="rtl"] .d-inline-flex-rtl { + display: inline-flex !important; +} + + +// To make IntersectionObserver work with ".sticky-top" class correctly + +[data-sticky-element] { + top: -1px !important; +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + + // Display utilities + .d-none-dark { + display: none !important; + } + .d-block-dark { + display: block !important; + } + .d-inline-dark { + display: inline !important; + } + .d-inline-block-dark { + display: inline-block !important; + } + .d-inline-flex-dark { + display: inline-flex !important; + } + .d-flex-dark { + display: flex !important; + } + + // Shadows + .shadow:not([data-bs-theme="light"]) { + box-shadow: $box-shadow-dark !important; + } + .shadow-sm:not([data-bs-theme="light"]) { + box-shadow: $box-shadow-sm-dark !important; + } + .shadow-lg:not([data-bs-theme="light"]) { + box-shadow: $box-shadow-lg-dark !important; + } + } +} +/* stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines */ diff --git a/resources/scss/_variables-dark.scss b/resources/scss/_variables-dark.scss new file mode 100644 index 0000000..4054c3b --- /dev/null +++ b/resources/scss/_variables-dark.scss @@ -0,0 +1,165 @@ +// Dark color mode variables +// +// Custom variables for the `[data-bs-theme="dark"]` theme. + +// Global colors + +/* stylelint-disable */ +$primary-text-emphasis-dark: adjust-color($primary, $lightness: -5%) !default; +$secondary-text-emphasis-dark: $gray-200 !default; +$success-text-emphasis-dark: adjust-color($success, $lightness: -5%) !default; +$danger-text-emphasis-dark: adjust-color($danger, $lightness: -5%)!default; +$warning-text-emphasis-dark: adjust-color($warning, $lightness: -5%) !default; +$info-text-emphasis-dark: adjust-color($info, $lightness: -5%) !default; +$light-text-emphasis-dark: $gray-200 !default; +$dark-text-emphasis-dark: $white !default; +/* stylelint-enable */ + +$primary-bg-subtle-dark: mix($gray-900, $primary, 90%) !default; +$secondary-bg-subtle-dark: $gray-800 !default; +$success-bg-subtle-dark: mix($gray-900, $success, 90%) !default; +$danger-bg-subtle-dark: mix($gray-900, $danger, 90%) !default; +$warning-bg-subtle-dark: mix($gray-900, $warning, 90%) !default; +$info-bg-subtle-dark: mix($gray-900, $info, 90%) !default; +$light-bg-subtle-dark: $gray-900 !default; +$dark-bg-subtle-dark: $gray-950 !default; + +$primary-border-subtle-dark: mix($gray-900, $primary, 80%) !default; +$secondary-border-subtle-dark: $gray-700 !default; +$success-border-subtle-dark: mix($gray-900, $success, 80%) !default; +$danger-border-subtle-dark: mix($gray-900, $danger, 80%) !default; +$warning-border-subtle-dark: mix($gray-900, $warning, 80%) !default; +$info-border-subtle-dark: mix($gray-900, $info, 80%) !default; +$light-border-subtle-dark: $gray-700 !default; +$dark-border-subtle-dark: $gray-950 !default; + +$body-color-dark: $gray-300 !default; +$body-bg-dark: $gray-900 !default; +$body-secondary-color-dark: $gray-400 !default; +$body-secondary-bg-dark: $gray-700 !default; +$body-tertiary-color-dark: $gray-500 !default; +$body-tertiary-bg-dark: $gray-800 !default; +$body-emphasis-color-dark: $gray-100 !default; +$user-selection-color-dark: rgba($white, .12) !default; +$border-color-dark: $gray-700 !default; +$headings-color-dark: $white !default; + +$component-color-dark: $gray-200 !default; +$component-hover-color-dark: $white !default; +$component-hover-bg-dark: $gray-800 !default; +$component-active-color-dark: $white !default; +$component-active-bg-dark: $gray-700 !default; +$component-disabled-color-dark: $gray-500 !default; + + +// Shadows + +$box-shadow-dark: 0 .5rem 1.875rem -.25rem rgba(#080b12, .25) !default; +$box-shadow-sm-dark: 0 .375rem 1.375rem -.25rem rgba(#080b12, .25) !default; +$box-shadow-lg-dark: 0 .75rem 3rem -.5rem rgba(#080b12, .25) !default; + + +// Focus styles + +$focus-ring-opacity-dark: .12 !default; +$focus-ring-color-dark: rgba($white, $focus-ring-opacity) !default; + + +// Tables + +$table-striped-bg-factor-dark: .05 !default; +$table-striped-bg-dark: rgba($white, $table-striped-bg-factor-dark) !default; + +$table-active-bg-factor-dark: .1 !default; +$table-active-bg-dark: rgba($white, $table-active-bg-factor-dark) !default; + +$table-hover-bg-factor-dark: .075 !default; +$table-hover-bg-dark: rgba($white, $table-hover-bg-factor-dark) !default; + + +// Buttons + +$btn-color-dark: $gray-200 !default; +$btn-hover-color-dark: $white !default; +$btn-link-disabled-color-dark: $gray-400 !default; + + +// Forms + +$input-bg-dark: transparent !default; +$input-border-color-dark: $gray-600 !default; +$input-focus-bg-dark: transparent !default; +$input-focus-border-color-dark: $white !default; + +$form-check-input-bg-dark: $input-bg-dark !default; +$form-check-input-border-dark: var(--#{$prefix}border-width) solid $input-border-color-dark !default; +$form-check-input-checked-color-dark: $white !default; +$form-check-input-checked-bg-color-dark: $form-check-input-bg-dark !default; +$form-check-input-checked-border-color-dark: $white !default; +$form-check-input-checked-bg-image-dark: url("data:image/svg+xml,") !default; +$form-check-radio-checked-bg-image-dark: url("data:image/svg+xml,") !default; + +$form-check-input-indeterminate-color-dark: $form-check-input-checked-color-dark !default; +$form-check-input-indeterminate-bg-color-dark: $form-check-input-checked-bg-color-dark !default; +$form-check-input-indeterminate-border-color-dark: $form-check-input-checked-border-color-dark !default; +$form-check-input-indeterminate-bg-image-dark: url("data:image/svg+xml,") !default; + +$form-switch-bg-color-dark: $gray-600 !default; + +$form-valid-color-dark: $success !default; +$form-valid-border-color-dark: $success !default; +$form-invalid-color-dark: $danger !default; +$form-invalid-border-color-dark: $danger !default; + + +// Input group + +$input-group-addon-border-color-dark: $input-border-color-dark !default; + + +// Navs + +$nav-tabs-link-hover-bg-dark: rgba($gray-700, .4) !default; +$nav-tabs-link-active-bg-dark: $gray-700 !default; +$nav-tabs-link-active-box-shadow-dark: none !default; + + +// Accordion + +$accordion-icon-color-dark: $white !default; +$accordion-icon-active-color-dark: $white !default; +$accordion-button-icon-dark: url("data:image/svg+xml,") !default; +$accordion-button-active-icon-dark: url("data:image/svg+xml,") !default; +$accordion-button-icon-alt-dark: url("data:image/svg+xml,") !default; +$accordion-button-active-icon-alt-dark: url("data:image/svg+xml,") !default; + + +// Popovers + +$popover-border-color-dark: $gray-700 !default; +$popover-box-shadow-dark: $box-shadow-dark !default; + + +// Breadcrumbs + +$breadcrumb-divider-color-dark: $component-color-dark !default; +$breadcrumb-divider-dark: url("data:image/svg+xml,") !default; +$breadcrumb-divider-flipped-dark: url("data:image/svg+xml,") !default; + + +// Custom scrollbar + +$scrollbar-bg-dark: $gray-600 !default; +$scrollbar-track-bg-dark: adjust-color($gray-700, $lightness: -6%) !default; // stylelint-disable-line + + +// Carousel + +$carousel-bullet-bg-dark: rgba($white, .3) !default; +$carousel-bullet-active-bg-dark: $white !default; + +$carousel-progressbar-bg-dark: rgba($white, .3) !default; +$carousel-progressbar-fill-bg-dark: $white !default; + +$carousel-scrollbar-bg-dark: rgba($white, .3) !default; +$carousel-scrollbar-drag-bg-dark: $white !default; diff --git a/resources/scss/_variables.scss b/resources/scss/_variables.scss new file mode 100644 index 0000000..10b8239 --- /dev/null +++ b/resources/scss/_variables.scss @@ -0,0 +1,841 @@ +// Variables +// +// Variables should follow the `$component-state-property-size` formula for +// consistent naming. Ex: $nav-link-hover-color and $btn-padding-y-sm. + +// Import Bootstrap functions to use inside variables values +@import "bootstrap/scss/functions"; + + +// Color system + +// Grayscale +$white: #fff !default; +$gray-50: #f5f7fa !default; +$gray-100: #eef1f6 !default; +$gray-200: #e0e5eb !default; +$gray-300: #cad0d9 !default; +$gray-400: #9ca3af !default; +$gray-500: #6c727f !default; +$gray-600: #4e5562 !default; +$gray-700: #333d4c !default; +$gray-800: #222934 !default; +$gray-900: #181d25 !default; +$gray-950: #131920 !default; +$black: #000 !default; + +// Disable Bootstrap's default $colors map +$colors: () !default; + +// Disable Bootstrap's default $grays map +$grays: () !default; + +// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7. +// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast +$min-contrast-ratio: 2 !default; + +// Theme colors +$primary: #f55266 !default; +$secondary: $gray-500 !default; +$success: #33b36b !default; +$info: #2f6ed5 !default; +$warning: #fc9231 !default; +$danger: #f03d3d !default; +$light: $white !default; +$dark: $gray-800 !default; + +/* stylelint-disable */ +$primary-text-emphasis: adjust-color($primary, $lightness: -10%) !default; +$secondary-text-emphasis: $gray-700 !default; +$success-text-emphasis: adjust-color($success, $lightness: -10%) !default; +$danger-text-emphasis: adjust-color($danger, $lightness: -10%) !default; +$warning-text-emphasis: adjust-color($warning, $lightness: -10%) !default; +$info-text-emphasis: adjust-color($info, $lightness: -10%) !default; +$light-text-emphasis: $gray-700 !default; +$dark-text-emphasis: $gray-900 !default; +/* stylelint-enable */ + +$primary-bg-subtle: tint-color($primary, 90%) !default; +$secondary-bg-subtle: $gray-50 !default; +$success-bg-subtle: tint-color($success, 90%) !default; +$danger-bg-subtle: tint-color($danger, 90%) !default; +$warning-bg-subtle: tint-color($warning, 90%) !default; +$info-bg-subtle: tint-color($info, 90%) !default; +$light-bg-subtle: $white !default; +$dark-bg-subtle: tint-color($dark, 92%) !default; + +$primary-border-subtle: tint-color($primary, 80%) !default; +$secondary-border-subtle: $gray-200 !default; +$success-border-subtle: tint-color($success, 80%) !default; +$danger-border-subtle: tint-color($danger, 80%) !default; +$warning-border-subtle: tint-color($warning, 80%) !default; +$info-border-subtle: tint-color($info, 80%) !default; +$light-border-subtle: $gray-100 !default; +$dark-border-subtle: $gray-200 !default; + +// User selection color +$user-selection-color: rgba($gray-900, .1) !default; + + +// Options +// +// Modifying Bootstrap global options + +$enable-shadows: true !default; +$enable-negative-margins: true !default; +$enable-dark-mode: true !default; + + +// Prefix for CSS variables and icons + +$prefix: cz- !default; +$icon-prefix: ci- !default; + + +// Spacing + +$spacer: 1rem !default; + + +// Body +// Settings for the `` element. + +$body-color: $gray-600 !default; +$body-bg: $white !default; + +$body-secondary-color: $gray-500 !default; +$body-secondary-bg: $gray-100 !default; + +$body-tertiary-color: $gray-400 !default; +$body-tertiary-bg: $gray-50 !default; + +$body-emphasis-color: $gray-800 !default; + + +// Override Bootstrap's links + +$link-shade-percentage: 0% !default; +$link-hover-decoration: none !default; + + +// Grid breakpoints +// +// Modifying default Bootstrap's $grid-breakpoints map + +$grid-breakpoints: ( + xs: 0, + sm: 500px, + md: 768px, + lg: 992px, + xl: 1200px, + xxl: 1400px +) !default; + + +// Grid containers +// +// Modifying default Bootstrap's $container-max-widths map (max-width of .container) +$container-max-widths: ( + sm: 95%, + md: 95%, + lg: 95%, + xl: 95%, + xxl: 1328px +) !default; + + +// Container padding + +$container-padding-x: 2rem !default; + + +// Components +// +// Define common padding, border radius sizes, shadows and more. + +$border-width: 1px !default; +$border-color: $gray-200 !default; +$border-color-translucent: rgba($black, .1) !default; + +$border-radius: .5rem !default; +$border-radius-xs: calc(var(--#{$prefix}border-radius) * .5) !default; +$border-radius-sm: calc(var(--#{$prefix}border-radius) * .75) !default; +$border-radius-lg: calc(var(--#{$prefix}border-radius) * 1.5) !default; +$border-radius-xl: calc(var(--#{$prefix}border-radius) * 2) !default; +$border-radius-xxl: calc(var(--#{$prefix}border-radius) * 2.5) !default; +$border-radius-xxxl: calc(var(--#{$prefix}border-radius) * 3) !default; +$border-radius-pill: 50rem !default; + +$box-shadow: 0 .5rem 2rem -.25rem rgba(#676f7b, .1) !default; +$box-shadow-sm: 0 .375rem 1.5rem rgba(#676f7b, .06) !default; +$box-shadow-lg: 0 1.125rem 3rem -.375rem rgba(#676f7b, .12) !default; +$box-shadow-inset: unset !default; + +$underline-thickness: 1px !default; + +$component-color: $gray-700 !default; +$component-hover-color: $gray-900 !default; +$component-hover-bg: $gray-50 !default; +$component-active-color: $gray-900 !default; +$component-active-bg: $gray-100 !default; +$component-disabled-color: $gray-400 !default; + +$focus-ring-width: .25rem !default; +$focus-ring-opacity: .1 !default; +$focus-ring-color: rgba($gray-900, $focus-ring-opacity) !default; +$focus-ring-blur: 0 !default; +$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width var(--#{$prefix}focus-ring-color) !default; + +$caret-width: 1.275em !default; +$caret-spacing: .15em !default; + + +// Typography +// +// Font, line-height, and color for body text, headings, and more. + +$font-family-sans-serif: "Inter", sans-serif !default; + +$font-size-root: 1rem !default; +$font-size-base: $font-size-root !default; +$font-size-xl: $font-size-base * 1.25 !default; +$font-size-lg: $font-size-base * 1.125 !default; +$font-size-sm: $font-size-base * .875 !default; +$font-size-xs: $font-size-base * .75 !default; + +$font-weight-lighter: lighter !default; +$font-weight-light: 300 !default; +$font-weight-normal: 400 !default; +$font-weight-medium: 500 !default; +$font-weight-semibold: 600 !default; +$font-weight-bold: 700 !default; +$font-weight-bolder: bolder !default; + +$font-weight-base: $font-weight-normal !default; + +$line-height-base: 1.5 !default; +$line-height-sm: 1.25 !default; +$line-height-lg: 2 !default; + +$h1-font-size: $font-size-base * 2.5 !default; +$h2-font-size: $font-size-base * 2 !default; +$h3-font-size: $font-size-base * 1.75 !default; +$h4-font-size: $font-size-base * 1.5 !default; +$h5-font-size: $font-size-base * 1.25 !default; +$h6-font-size: $font-size-base !default; + +// Modifying default Bootstrap's $font-sizes map +$font-sizes: ( + 1: $h1-font-size, + 2: $h2-font-size, + 3: $h3-font-size, + 4: $h4-font-size, + 5: $h5-font-size, + 6: $h6-font-size, + "xl": $font-size-xl, + "lg": $font-size-lg, + "base": $font-size-base, + "sm": $font-size-sm, + "xs": $font-size-xs +) !default; + +$headings-margin-bottom: $spacer !default; +$headings-font-weight: $font-weight-semibold !default; +$headings-color: $gray-900 !default; + +$h1-line-height: 1.2 !default; +$h2-line-height: 1.25 !default; +$h3-line-height: 1.3 !default; +$h4-line-height: 1.35 !default; +$h5-line-height: 1.4 !default; +$h6-line-height: 1.45 !default; + +// Modifying default Bootstrap's $display-font-sizes map +$display-font-sizes: ( + 1: $font-size-base * 5, + 2: $font-size-base * 4.5, + 3: $font-size-base * 4, + 4: $font-size-base * 3.5, + 5: $font-size-base * 3, + 6: $font-size-base * 2.625 +) !default; + +$display-font-weight: $font-weight-bold !default; +$display-line-height: $h1-line-height !default; + +$lead-font-size: $font-size-base * 1.5 !default; +$lead-font-weight: $font-weight-base !default; + +$blockquote-margin-y: $spacer * 1.5 !default; +$blockquote-color: var(--#{$prefix}heading-color) !default; +$blockquote-font-size: $font-size-xl !default; +$blockquote-font-weight: $font-weight-semibold !default; +$blockquote-footer-color: var(--#{$prefix}body-color) !default; +$blockquote-footer-font-size: $font-size-sm !default; + +$hr-margin-y: $spacer * 1.5 !default; +$hr-color: var(--#{$prefix}border-color) !default; +$hr-opacity: 1 !default; + +$legend-margin-bottom: $spacer !default; +$legend-font-size: 1.125rem !default; +$legend-color: var(--#{$prefix}heading-color) !default; +$legend-font-weight: $headings-font-weight !default; + +$dt-font-weight: $font-weight-semibold !default; +$dt-color: var(--#{$prefix}heading-color) !default; + +$list-inline-padding: $spacer !default; + + +// Tables + +$table-cell-padding-y: .75rem !default; +$table-cell-padding-x: .75rem !default; +$table-cell-padding-y-sm: .375rem !default; +$table-cell-padding-x-sm: .375rem !default; + +$table-th-font-weight: $headings-font-weight !default; +$table-th-color: var(--#{$prefix}heading-color) !default; + +$table-striped-bg-factor: .05 !default; +$table-striped-bg: rgba($gray-700, $table-striped-bg-factor) !default; + +$table-active-bg-factor: .1 !default; +$table-active-bg: rgba($gray-700, $table-active-bg-factor) !default; + +$table-hover-bg-factor: .075 !default; +$table-hover-bg: rgba($gray-700, $table-hover-bg-factor) !default; + +// Modifying default Bootstrap's $table-variants map +$table-variants: ( + "dark": $dark, +) !default; + + +// Buttons + Forms +// +// Shared variables that are reassigned to `$input-` and `$btn-` specific variables. + +$input-btn-padding-y: .53rem !default; +$input-btn-padding-x: 1rem !default; +$input-btn-font-size: $font-size-sm !default; + +$input-btn-padding-y-sm: .375rem !default; +$input-btn-padding-x-sm: .875rem !default; +$input-btn-font-size-sm: $font-size-xs !default; + +$input-btn-padding-y-lg: .685rem !default; +$input-btn-padding-x-lg: 1.125rem !default; +$input-btn-font-size-lg: $font-size-base !default; + +$input-btn-focus-box-shadow: unset !default; +$input-btn-focus-width: 0 !default; + + +// Buttons + +$btn-color: var(--#{$prefix}component-color) !default; +$btn-font-weight: $font-weight-medium !default; +$btn-line-height: 1.125rem !default; +$btn-white-space: nowrap !default; + +$btn-padding-y: .625rem !default; +$btn-padding-x: 1.25rem !default; +$btn-padding-x-sm: 1rem !default; +$btn-padding-y-lg: .875rem !default; +$btn-padding-x-lg: 1.5rem !default; + +$btn-disabled-opacity: .55 !default; +$btn-link-disabled-color: var(--#{$prefix}component-disabled-color) !default; + +$btn-border-radius: var(--#{$prefix}border-radius) !default; +$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default; +$btn-border-radius-lg: var(--#{$prefix}border-radius) !default; + +$btn-box-shadow: none !default; +$btn-active-box-shadow: none !default; + +$btn-transition: color .25s ease-in-out, background-color .25s ease-in-out, border-color .25s ease-in-out !default; + + +// Icon buttons + +$btn-icon-size: $font-size-base * 2.5 !default; +$btn-icon-size-sm: $font-size-base * 2 !default; +$btn-icon-size-lg: $font-size-base * 3 !default; + + +// Forms + +$form-text-margin-top: .375rem !default; +$form-text-font-size: $font-size-xs !default; + +$form-label-font-size: $font-size-sm !default; +$form-label-font-weight: $font-weight-medium !default; +$form-label-color: var(--#{$prefix}heading-color) !default; + +$input-padding-x: $input-btn-padding-x !default; +$input-bg: $white !default; +$input-color: var(--#{$prefix}body-color) !default; +$input-border-color: $gray-300 !default; +$input-focus-border-color: $gray-900 !default; + +$input-disabled-color: var(--#{$prefix}tertiary-color) !default; +$input-disabled-bg: var(--#{$prefix}tertiary-bg) !default; +$input-disabled-border-color: var(--#{$prefix}border-color) !default; + +$input-border-radius: var(--#{$prefix}border-radius) !default; +$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default; +$input-border-radius-lg: var(--#{$prefix}border-radius) !default; + +$input-placeholder-color: var(--#{$prefix}tertiary-color) !default; + +$form-check-margin-bottom: .25rem !default; +$form-check-input-border: var(--#{$prefix}border-width) solid $input-border-color !default; +$form-check-input-checked-color: $gray-900 !default; +$form-check-input-checked-bg-color: $input-bg !default; +$form-check-input-checked-border-color: $gray-900 !default; + +$form-check-input-indeterminate-color: $form-check-input-checked-color !default; +$form-check-input-indeterminate-bg-color: $form-check-input-checked-bg-color !default; +$form-check-input-indeterminate-border-color: $form-check-input-checked-border-color !default; + +$form-switch-width: 2.75rem !default; +$form-switch-height: 1.5rem !default; +$form-switch-padding-start: $form-switch-width + .625rem !default; +$form-switch-margin-bottom: .75rem !default; +$form-switch-color: $white !default; +$form-switch-focus-color: $form-switch-color !default; +$form-switch-checked-color: $form-switch-color !default; +$form-switch-bg-color: $gray-300 !default; +$form-switch-checked-bg-color: $success !default; + +$form-select-bg-size: 15px 11px !default; +$form-select-padding-x: $input-padding-x !default; +$form-select-indicator-padding: $form-select-padding-x * 2.25 !default; +$form-select-indicator-color: $gray-600 !default; + +$form-range-track-height: .125rem !default; +$form-range-track-bg: var(--#{$prefix}border-color) !default; +$form-range-thumb-width: .5rem !default; +$form-range-thumb-bg: var(--#{$prefix}body-bg) !default; +$form-range-thumb-box-shadow: 0 0 0 .125rem var(--#{$prefix}emphasis-color) !default; +$form-range-thumb-active-bg: var(--#{$prefix}emphasis-color) !default; +$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-bg) !default; + +$form-feedback-valid-color: $success !default; +$form-feedback-invalid-color: $danger !default; +$form-feedback-icon-valid-color: $form-feedback-valid-color !default; +$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default; +$form-feedback-icon-valid: url("data:image/svg+xml,") !default; +$form-feedback-icon-invalid: url("data:image/svg+xml,") !default; + +$form-feedback-tooltip-padding-y: .25rem !default; +$form-feedback-tooltip-padding-x: .5rem !default; +$form-feedback-tooltip-font-size: $font-size-xs !default; + + +// Password toggle + +$password-toggle-button-color: $input-color !default; +$password-toggle-button-hover-color: var(--#{$prefix}emphasis-color) !default; + + +// Range slider + +$range-slider-height: .125rem !default; +$range-slider-bg: var(--#{$prefix}border-color) !default; +$range-slider-connect-bg: var(--#{$prefix}emphasis-color) !default; +$range-slider-handle-size: .8125rem !default; +$range-slider-handle-bg: var(--#{$prefix}body-bg) !default; +$range-slider-handle-active-bg: var(--#{$prefix}emphasis-color) !default; +$range-slider-handle-border-width: 2px !default; +$range-slider-handle-border-color: var(--#{$prefix}emphasis-color) !default; +$range-slider-tooltip-font-size: $font-size-xs !default; +$range-slider-tooltip-bg: transparent !default; +$range-slider-tooltip-color: var(--#{$prefix}emphasis-color) !default; +$range-slider-pips-font-size: $font-size-xs !default; + + +// Navs + +$nav-link-padding-y: .5rem !default; +$nav-link-padding-x: 1.25rem !default; +$nav-link-font-size: $font-size-sm !default; +$nav-link-font-weight: $font-weight-medium !default; +$nav-link-line-height: 1.375rem !default; +$nav-link-color: var(--#{$prefix}component-color) !default; +$nav-link-hover-color: var(--#{$prefix}component-hover-color) !default; +$nav-link-active-color: var(--#{$prefix}component-active-color) !default; +$nav-link-disabled-color: var(--#{$prefix}component-disabled-color) !default; +$nav-link-transition: color .2s ease-in-out, background-color .2s ease-in-out, border-color .2s ease-in-out !default; + +$nav-tabs-padding: .375rem !default; +$nav-tabs-bg: var(--#{$prefix}tertiary-bg) !default; +$nav-tabs-border-color: transparent !default; +$nav-tabs-border-width: 0 !default; +$nav-tabs-link-hover-bg: $gray-100 !default; +$nav-tabs-link-active-bg: $white !default; +$nav-tabs-link-hover-border-color: transparent !default; +$nav-tabs-link-active-border-color: transparent !default; +$nav-tabs-link-active-box-shadow: $box-shadow-sm !default; + +$nav-pills-gap: .875rem 1.125rem !default; +$nav-pills-border-radius: $border-radius-pill !default; +$nav-pills-link-border-width: var(--#{$prefix}border-width) !default; +$nav-pills-link-border-color: var(--#{$prefix}border-color) !default; +$nav-pills-link-hover-color: var(--#{$prefix}component-hover-color) !default; +$nav-pills-link-hover-border-color: $gray-500 !default; +$nav-pills-link-active-color: var(--#{$prefix}component-active-color) !default; +$nav-pills-link-active-bg: transparent !default; +$nav-pills-link-active-border-color: var(--#{$prefix}component-active-color) !default; +$nav-pills-link-disabled-color: var(--#{$prefix}component-disabled-color) !default; +$nav-pills-link-disabled-border-color: $gray-200 !default; + +$nav-underline-gap: .5rem 1.75rem !default; +$nav-underline-border-width: var(--#{$prefix}border-width) !default; +$nav-underline-link-active-color: var(--#{$prefix}component-active-color) !default; + + +// Navbar + +$navbar-padding-y: $spacer * .625 !default; +$navbar-padding-x: $spacer * .625 !default; + +$navbar-nav-link-padding-x: 1.125rem !default; +$navbar-nav-link-font-size: $font-size-base !default; +$navbar-nav-link-underline-border-width: var(--#{$prefix}underline-thickness) !default; + +$navbar-brand-font-size: 1.5rem !default; +$navbar-brand-font-weight: $font-weight-semibold !default; + +$navbar-toggler-padding-y: $spacer * .625 !default; +$navbar-toggler-padding-x: $spacer * .25 !default; +$navbar-toggler-border-radius: 0 !default; +$navbar-toggler-bar-width: 1.375rem !default; +$navbar-toggler-bar-height: .125rem !default; +$navbar-toggler-bar-spacing: .3125rem !default; +$navbar-toggler-focus-width: 0 !default; + +$navbar-light-color: $component-color !default; +$navbar-light-hover-color: $component-hover-color !default; +$navbar-light-active-color: $component-active-color !default; +$navbar-light-disabled-color: $component-disabled-color !default; +$navbar-light-brand-color: $gray-900 !default; +$navbar-light-brand-hover-color: $gray-900 !default; +$navbar-light-toggler-border-color: transparent !default; +$navbar-light-toggler-icon-bg: initial !default; + +$navbar-dark-color: rgba($white, .8) !default; +$navbar-dark-hover-color: $white !default; +$navbar-dark-active-color: $white !default; +$navbar-dark-disabled-color: rgba($white, .4) !default; +$navbar-dark-brand-color: $white !default; +$navbar-dark-brand-hover-color: $white !default; +$navbar-dark-toggler-border-color: transparent !default; +$navbar-dark-toggler-icon-bg: initial !default; + + +// Dropdowns + +$dropdown-min-width: 12.5rem !default; +$dropdown-padding-x: .75rem !default; +$dropdown-padding-y: .75rem !default; +$dropdown-spacer: $spacer * .25 !default; +$dropdown-font-size: $font-size-sm !default; +$dropdown-color: var(--#{$prefix}component-color) !default; +$dropdown-border-color: var(--#{$prefix}light-border-subtle) !default; +$dropdown-divider-bg: var(--#{$prefix}border-color) !default; +$dropdown-divider-margin-y: $spacer * .375 !default; +$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default; + +$dropdown-link-color: var(--#{$prefix}component-color) !default; +$dropdown-link-hover-color: var(--#{$prefix}component-hover-color) !default; +$dropdown-link-hover-bg: var(--#{$prefix}component-hover-bg) !default; +$dropdown-link-active-color: var(--#{$prefix}component-active-color) !default; +$dropdown-link-active-bg: var(--#{$prefix}component-active-bg) !default; +$dropdown-link-disabled-color: var(--#{$prefix}component-disabled-color) !default; +$dropdown-link-transition: color .2s ease-in-out, background-color .2s ease-in-out !default; + +$dropdown-item-padding-y: $spacer * .5 !default; +$dropdown-item-padding-x: $spacer * .75 !default; +$dropdown-item-border-radius: $border-radius-sm !default; +$dropdown-item-spacer: $spacer * .125 !default; + +$dropdown-header-color: var(--#{$prefix}heading-color) !default; +$dropdown-header-padding-x: $dropdown-item-padding-x !default; +$dropdown-header-padding-y: $dropdown-item-padding-y !default; + +$dropdown-dark-color: $gray-200 !default; +$dropdown-dark-bg: $gray-900 !default; +$dropdown-dark-border-color: $gray-700 !default; +$dropdown-dark-box-shadow: 0 .5rem 1.875rem -.25rem rgba(#080b12, .35) !default; +$dropdown-dark-link-hover-color: $white !default; +$dropdown-dark-link-hover-bg: $gray-800 !default; +$dropdown-dark-link-active-color: $white !default; +$dropdown-dark-link-active-bg: $gray-700 !default; +$dropdown-dark-header-color: $white !default; + + +// Pagination + +$pagination-spacer: .25rem !default; +$pagination-margin-start: 0 !default; + +$pagination-padding-y: .375rem !default; +$pagination-padding-x: .75rem !default; +$pagination-padding-y-sm: .1875rem !default; +$pagination-padding-x-sm: .5rem !default; +$pagination-padding-y-lg: .5rem !default; +$pagination-padding-x-lg: .9375rem !default; + +$pagination-font-size: $font-size-sm !default; +$pagination-font-size-sm: $font-size-xs !default; +$pagination-font-size-lg: $font-size-base !default; + +$pagination-border-radius: var(--#{$prefix}border-radius-sm) !default; +$pagination-border-radius-sm: var(--#{$prefix}border-radius-xs) !default; +$pagination-border-radius-lg: var(--#{$prefix}border-radius) !default; + +$pagination-font-weight: $font-weight-medium !default; + +$pagination-color: var(--#{$prefix}component-color) !default; +$pagination-bg: transparent !default; +$pagination-border-width: 0 !default; + +$pagination-focus-color: var(--#{$prefix}component-hover-color) !default; +$pagination-focus-bg: var(--#{$prefix}component-hover-bg) !default; + +$pagination-hover-color: var(--#{$prefix}component-hover-color) !default; +$pagination-hover-bg: var(--#{$prefix}component-hover-bg) !default; + +$pagination-active-color: var(--#{$prefix}component-active-color) !default; +$pagination-active-bg: var(--#{$prefix}component-active-bg) !default; + +$pagination-disabled-color: var(--#{$prefix}component-disabled-color) !default; +$pagination-disabled-bg: transparent !default; + +$pagination-transition: color .2s ease-in-out, background-color .2s ease-in-out, border-color .2s ease-in-out, box-shadow .2s ease-in-out !default; + + +// Placeholders + +$placeholder-opacity-max: .35 !default; +$placeholder-opacity-min: .15 !default; + + +// Cards + +$card-spacer-y: $spacer * 1.5 !default; +$card-spacer-x: $spacer * 1.5 !default; +$card-title-spacer-y: $card-spacer-y * .5 !default; +$card-title-color: var(--#{$prefix}heading-color) !default; +$card-img-overlay-padding: $spacer * 1.5 !default; + + +// Accordion + +$accordion-padding-y: 1.25rem !default; +$accordion-padding-x: 0 !default; +$accordion-bg: transparent !default; +$accordion-border-radius: 0 !default; +$accordion-inner-border-radius: 0 !default; + +$accordion-body-padding-y: 0 !default; +$accordion-body-padding-x: 0 !default; +$accordion-body-font-size: $font-size-sm !default; + +$accordion-button-color: var(--#{$prefix}heading-color) !default; +$accordion-button-font-size: $font-size-base !default; +$accordion-button-font-weight: $headings-font-weight !default; +$accordion-button-active-color: $accordion-button-color !default; +$accordion-button-active-bg: transparent !default; +$accordion-transition: none !default; + +$accordion-icon-width: 1em !default; +$accordion-icon-color: $gray-900 !default; +$accordion-icon-active-color: $gray-900 !default; +$accordion-button-icon: url("data:image/svg+xml,") !default; +$accordion-button-active-icon: url("data:image/svg+xml,") !default; +$accordion-button-icon-alt: url("data:image/svg+xml,") !default; +$accordion-button-active-icon-alt: url("data:image/svg+xml,") !default; + + +// Tooltips + +$tooltip-padding-y: $spacer * .375 !default; +$tooltip-padding-x: $spacer * .625 !default; +$tooltip-border-radius: var(--#{$prefix}border-radius-sm) !default; +$tooltip-opacity: 1 !default; + + +// Popovers + +$popover-border-color: var(--#{$prefix}light-border-subtle) !default; +$popover-border-radius: var(--#{$prefix}border-radius) !default; +$popover-header-padding-y: $spacer * .75 !default; +$popover-header-font-size: $font-size-sm !default; +$popover-header-bg: transparent !default; +$popover-header-color: var(--#{$prefix}heading-color) !default; +$popover-body-color: var(--#{$prefix}secondary-color) !default; + + +// Toasts + +$toast-padding-x: .75rem !default; +$toast-padding-y: .75rem !default; +$toast-border-color: var(--#{$prefix}light-border-subtle) !default; +$toast-background-color: var(--#{$prefix}body-bg) !default; +$toast-spacing: $spacer * 1.5 !default; +$toast-header-color: var(--#{$prefix}heading-color) !default; +$toast-header-background-color: transparent !default; + + +// Badges + +$badge-font-weight: $font-weight-medium !default; +$badge-border-radius: .33em !default; + + +// Modals + +$modal-inner-padding: $spacer * 1.5 !default; +$modal-header-padding-y: $modal-inner-padding * .875 !default; +$modal-footer-margin-between: $spacer * .75 !default; +$modal-content-border-color: var(--#{$prefix}border-color) !default; +$modal-content-box-shadow-xs: var(--#{$prefix}box-shadow) !default; +$modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default; + +$modal-fade-transform: scale(.9) !default; +$modal-transition: transform .2s ease-out !default; + +$modal-backdrop-bg: $gray-950 !default; +$modal-backdrop-opacity: .75 !default; + + +// Alerts + +$alert-margin-bottom: 1.25rem !default; +$alert-link-font-weight: $font-weight-semibold !default; + + +// Progress bars + +$progress-border-radius: $border-radius-pill !default; +$progress-box-shadow: none !default; + + +// List group + +$list-group-font-size: $font-size-sm !default; +$list-group-bg: transparent !default; + +$list-group-item-padding-y: $spacer * .625 !default; +$list-group-item-padding-x: $spacer * .75 !default; +$list-group-item-transition: color .2s ease-in-out, background-color .2s ease-in-out, border-color .2s ease-in-out !default; + +$list-group-hover-color: var(--#{$prefix}component-hover-color) !default; +$list-group-hover-bg: var(--#{$prefix}component-hover-bg) !default; +$list-group-active-color: var(--#{$prefix}component-active-color) !default; +$list-group-active-bg: var(--#{$prefix}component-active-bg) !default; +$list-group-active-border-color: var(--#{$prefix}border-color) !default; +$list-group-disabled-color: var(--#{$prefix}component-disabled-color) !default; + +$list-group-action-font-weight: $font-weight-medium !default; +$list-group-action-color: var(--#{$prefix}component-color) !default; +$list-group-action-hover-color: $list-group-hover-color !default; +$list-group-action-active-color: $list-group-active-color !default; +$list-group-action-active-bg: $list-group-active-bg !default; + +$list-group-borderless-item-spacer: .1875rem !default; + + +// Image thumbnails + +$thumbnail-padding: .375rem !default; +$thumbnail-border-radius: var(--#{$prefix}border-radius-lg) !default; +$thumbnail-box-shadow: none !default; + + +// Figures + +$figure-caption-font-size: $font-size-xs !default; + + +// Breadcrumbs + +$breadcrumb-font-size: $font-size-sm !default; +$breadcrumb-font-weight: $font-weight-medium !default; +$breadcrumb-item-padding-x: .375rem !default; +$breadcrumb-color: var(--#{$prefix}component-color) !default; +$breadcrumb-hover-color: var(--#{$prefix}component-hover-color) !default; +$breadcrumb-active-color: var(--#{$prefix}component-disabled-color) !default; +$breadcrumb-divider-color: $component-color !default; +$breadcrumb-divider: url("data:image/svg+xml,") !default; +$breadcrumb-divider-flipped: url("data:image/svg+xml,") !default; +$breadcrumb-transition: color .2s ease-in-out !default; + + +// Spinners + +$spinner-border-width: .15em !default; +$spinner-border-width-sm: .1em !default; + + +// Close + +$btn-close-width: .75em !default; +$btn-close-color: $gray-900 !default; +$btn-close-opacity: .6 !default; +$btn-close-hover-opacity: .9 !default; +$btn-close-focus-opacity: 1 !default; +$btn-close-disabled-opacity: .3 !default; +$btn-close-transition: opacity .2s ease-in-out !default; + + +// Offcanvas + +$offcanvas-horizontal-width: 350px !default; +$offcanvas-vertical-height: 350px !default; + + +// Code + +$pre-padding-y: $spacer * 1.25 !default; +$pre-padding-x: $spacer !default; +$pre-color: $white !default; +$pre-bg: $gray-800 !default; +$pre-border-radius: var(--#{$prefix}border-radius) !default; +$kbd-bg: var(--#{$prefix}emphasis-color) !default; + + +// Custom scrollbar + +$scrollbar-width: .1875rem !default; +$scrollbar-track-width: .1875rem !default; +$scrollbar-border-radius: var(--#{$prefix}border-radius) !default; +$scrollbar-bg: $gray-300 !default; +$scrollbar-track-bg: $gray-100 !default; + + +// Carousel + +$carousel-bullet-size: .5rem !default; +$carousel-bullet-bg: $gray-300 !default; +$carousel-bullet-active-bg: $gray-800 !default; +$carousel-bullet-opacity: 1 !default; +$carousel-bullet-active-opacity: 1 !default; +$carousel-bullet-border-radius: 50% !default; +$carousel-bullet-gap: .75rem !default; +$carousel-bullet-transition: background-color .2s ease-in-out !default; + +$carousel-progressbar-size: .25rem !default; +$carousel-progressbar-border-radius: $border-radius-pill !default; +$carousel-progressbar-bg: $gray-100 !default; +$carousel-progressbar-fill-bg: $gray-800 !default; + +$carousel-scrollbar-size: .25rem !default; +$carousel-scrollbar-border-radius: $border-radius-pill !default; +$carousel-scrollbar-bg: $gray-100 !default; +$carousel-scrollbar-drag-bg: $gray-800 !default; diff --git a/resources/scss/components/_accordion.scss b/resources/scss/components/_accordion.scss new file mode 100644 index 0000000..2372ada --- /dev/null +++ b/resources/scss/components/_accordion.scss @@ -0,0 +1,88 @@ +// Override default Bootstrap's accordion component + +.accordion { + --#{$prefix}accordion-btn-font-size: #{$accordion-button-font-size}; + --#{$prefix}accordion-btn-font-weight: #{$accordion-button-font-weight}; + --#{$prefix}accordion-body-font-size: #{$accordion-body-font-size}; +} + +.accordion-button { + @include font-size(var(--#{$prefix}accordion-btn-font-size)); + font-weight: var(--#{$prefix}accordion-btn-font-weight); + + &:focus-visible { + @include box-shadow($focus-ring-box-shadow); + } + + &:not(.collapsed) { + box-shadow: none; + } +} + +.accordion-item { + border: 0; + border-bottom: var(--#{$prefix}accordion-border-width) solid var(--#{$prefix}accordion-border-color); +} + +.accordion-body { + padding-bottom: var(--#{$prefix}accordion-btn-padding-y); + @include font-size(var(--#{$prefix}accordion-body-font-size)); +} + + +// Alternative button icon + +.accordion-alt-icon { + --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-alt)}; + --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-alt)}; +} + + +// Update accordion / collapse button label text + +[data-label-collapsed] { + &::before { + content: attr(data-label-expanded); + } + + &.collapsed::before, + .collapsed > &::before { + content: attr(data-label-collapsed); + } +} + + +// Collapse toggle icon + +.collapse-toggle-icon { + :not(.collapsed) > & { + transform: rotate(180deg); + } +} + + +// Hiding collapse toggle + +.hiding-collapse-toggle:not(.collapsed) { + display: none; +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .accordion:not([data-bs-theme="light"]) { + .accordion-button::after { + --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-dark)}; + --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-dark)}; + } + } + .accordion-alt-icon:not([data-bs-theme="light"]) { + .accordion-button::after { + --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-alt-dark)}; + --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-alt-dark)}; + } + } + } +} diff --git a/resources/scss/components/_alert.scss b/resources/scss/components/_alert.scss new file mode 100644 index 0000000..19fb1cc --- /dev/null +++ b/resources/scss/components/_alert.scss @@ -0,0 +1,17 @@ +// Override close button color and size inside alert + +.alert .btn-close { + --#{$prefix}btn-close-size: .6875em; + --#{$prefix}btn-close-opacity: .75; + --#{$prefix}btn-close-hover-opacity: 1; + + padding: $alert-padding-y * 1.375 $alert-padding-x; +} + +@each $color, $value in map-remove($theme-colors, "secondary", "dark", "light") { + .alert-#{$color} .btn-close { + --#{$prefix}btn-close-bg: #{escape-svg(url("data:image/svg+xml,"))}; + + filter: none; + } +} diff --git a/resources/scss/components/_breadcrumb.scss b/resources/scss/components/_breadcrumb.scss new file mode 100644 index 0000000..5c84b25 --- /dev/null +++ b/resources/scss/components/_breadcrumb.scss @@ -0,0 +1,45 @@ +// Override Bootstrap's breadcrumb component + +.breadcrumb { + --#{$prefix}breadcrumb-font-weight: #{$breadcrumb-font-weight}; + --#{$prefix}breadcrumb-color: #{$breadcrumb-color}; + --#{$prefix}breadcrumb-hover-color: #{$breadcrumb-hover-color}; + + flex-direction: row; + gap: 0; + font-weight: var(--#{$prefix}breadcrumb-font-weight); +} + +.breadcrumb-item { + > a { + color: var(--#{$prefix}breadcrumb-color); + text-decoration: none; + transition: $breadcrumb-transition; + + &:hover, + &:focus-visible { + color: var(--#{$prefix}breadcrumb-hover-color); + } + } + + + .breadcrumb-item::before { + width: 1.125em; + height: 1.125em; + padding-right: 0; + margin-right: var(--#{$prefix}breadcrumb-item-padding-x); + line-height: 2em; + } +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .breadcrumb:not([data-bs-theme="light"]) { + .breadcrumb-item + .breadcrumb-item::before { + content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-dark)) #{"/* rtl:"} var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped-dark)) #{"*/"}; + } + } + } +} diff --git a/resources/scss/components/_buttons.scss b/resources/scss/components/_buttons.scss new file mode 100644 index 0000000..7b2bc97 --- /dev/null +++ b/resources/scss/components/_buttons.scss @@ -0,0 +1,284 @@ +// Override Bootstrap's base button class + +.btn { + --#{$prefix}btn-active-border-color: transparent; + --#{$prefix}btn-disabled-border-color: transparent; + + display: inline-flex; + align-items: center; + justify-content: center; + + &:focus-visible { + box-shadow: $focus-ring-box-shadow; + } + + // Fix chevron icons vertical aligment + &:not(.btn-icon) [class*=" #{$icon-prefix}chevron"], + &:not(.btn-icon) [class^="#{$icon-prefix}chevron"] { + margin-top: .125rem; + } +} + + +// Override solid buttons +/* stylelint-disable */ +@each $color, $value in map-remove($theme-colors, "secondary", "dark", "light") { + .btn-#{$color} { + --#{$prefix}btn-hover-bg: #{adjust-color($value, $lightness: -10%)}; + --#{$prefix}btn-active-bg: #{adjust-color($value, $lightness: -10%)}; + --#{$prefix}btn-hover-border-color: #{adjust-color($value, $lightness: -10%)}; + --#{$prefix}btn-active-border-color: #{adjust-color($value, $lightness: -10%)}; + } +} +/* stylelint-enable */ + +.btn-secondary { + --#{$prefix}btn-color: #{$gray-700}; + --#{$prefix}btn-bg: #{$gray-100}; + --#{$prefix}btn-border-color: #{$gray-100}; + --#{$prefix}btn-hover-color: #{$gray-900}; + --#{$prefix}btn-hover-bg: #{$gray-200}; + --#{$prefix}btn-hover-border-color: #{$gray-200}; + --#{$prefix}btn-active-color: #{$gray-700}; + --#{$prefix}btn-active-bg: #{$gray-200}; + --#{$prefix}btn-active-border-color: #{$gray-200}; + --#{$prefix}btn-disabled-color: #{$gray-700}; + --#{$prefix}btn-disabled-bg: #{$gray-100}; + --#{$prefix}btn-disabled-border-color: #{$gray-100}; +} + +.btn-dark { + --#{$prefix}btn-hover-bg: #{$gray-950}; + --#{$prefix}btn-hover-border-color: #{$gray-950}; + --#{$prefix}btn-active-bg: #{$gray-950}; + --#{$prefix}btn-active-border-color: #{$gray-950}; +} + +.btn-light { + --#{$prefix}btn-color: #{$gray-900}; + --#{$prefix}btn-hover-color: #{$gray-900}; + --#{$prefix}btn-hover-bg: #{$gray-200}; + --#{$prefix}btn-hover-border-color: #{$gray-200}; + --#{$prefix}btn-active-color: #{$gray-900}; + --#{$prefix}btn-active-bg: #{$gray-200}; + --#{$prefix}btn-active-border-color: #{$gray-200}; +} + +.btn-link { + font-weight: $btn-font-weight; +} + + +// Override outline buttons + +.btn-outline-secondary { + --#{$prefix}btn-color: #{$gray-700}; + --#{$prefix}btn-border-color: #{$gray-200}; + --#{$prefix}btn-hover-color: #{$gray-900}; + --#{$prefix}btn-hover-bg: transparent; + --#{$prefix}btn-hover-border-color: #{$gray-500}; + --#{$prefix}btn-active-color: #{$gray-900}; + --#{$prefix}btn-active-bg: transparent; + --#{$prefix}btn-active-border-color: #{$gray-900}; + --#{$prefix}btn-disabled-color: #{$gray-700}; + --#{$prefix}btn-disabled-border-color: #{$gray-200}; +} + + +// Ghost button + +.btn-ghost { + background-color: transparent; + border-color: transparent; + + &:hover, + &:focus-visible, + &.show { + background-color: var(--#{$prefix}btn-bg); + border-color: var(--#{$prefix}btn-border-color); + } + + &.active { + background-color: var(--#{$prefix}btn-active-bg); + border-color: var(--#{$prefix}btn-active-border-color); + } +} + + +// Icon button + +.btn-icon { + --#{$prefix}btn-size: #{$btn-icon-size}; + + flex-shrink: 0; + width: var(--#{$prefix}btn-size); + height: var(--#{$prefix}btn-size); + padding: 0; + + &.btn-lg { + --#{$prefix}btn-size: #{$btn-icon-size-lg}; + } + + &.btn-sm { + --#{$prefix}btn-size: #{$btn-icon-size-sm}; + } +} + + +// Market button + +.btn-market { + --#{$prefix}btn-padding-y: .625rem; + --#{$prefix}btn-padding-x: 1rem; + --#{$prefix}btn-border-width: 0; + + &.btn-lg { + --#{$prefix}btn-padding-y: .75rem; + --#{$prefix}btn-padding-x: 1.125rem; + } +} + + +// Color button + +.btn-color { + --#{$prefix}btn-active-border-color: var(--#{$prefix}tertiary-color); + + display: inline-block; + flex-shrink: 0; + width: 1em; + height: 1em; + padding: .125rem; + @include border-radius(50%); + + &::before { + display: flex; + width: 100%; + height: 100%; + content: ""; + background-color: currentcolor; + @include border-radius(50%); + } +} + + +// Image button + +.btn-image { + --#{$prefix}btn-active-border-color: var(--#{$prefix}component-active-color); +} + + +// Back to top button + +.btn-scroll-top { + --#{$prefix}btn-padding-x: .75rem; + --#{$prefix}btn-padding-y: #{calc($btn-padding-y-sm + var(--#{$prefix}border-width))}; + + position: relative; + @include font-size($font-size-base * .625); + text-transform: uppercase; + visibility: hidden; + opacity: 0; + transition: transform .25s ease-in-out, opacity .25s, visibility .25s; + transform: scale(0); + + &.show { + visibility: visible; + opacity: 1; + transform: scale(1); + } +} + + +// Sort button + +[data-sort] { + display: inline-flex; + align-items: center; + + &::after { + width: 1.25em; + margin-top: .125em; + font-size: 1.25em; + content: "\2195"; + } + + &.asc::after { + content: "\2191"; + transform: scale(.75); + } + + &.desc::after { + content: "\2193"; + transform: scale(.75); + } +} + + +// Revoke Bootstrap badge inside button fix + +.btn .badge { + top: 0; +} + + +// Floating buttons + +.floating-buttons { + transform: translateX(50%) rotate(-90deg); +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .btn-secondary:not([data-bs-theme="light"]) { + --#{$prefix}btn-color: #{$gray-200}; + --#{$prefix}btn-bg: #{$gray-700}; + --#{$prefix}btn-border-color: #{$gray-700}; + --#{$prefix}btn-hover-color: #{$white}; + --#{$prefix}btn-hover-bg: #{$gray-600}; + --#{$prefix}btn-hover-border-color: #{$gray-600}; + --#{$prefix}btn-active-color: #{$gray-200}; + --#{$prefix}btn-active-bg: #{$gray-600}; + --#{$prefix}btn-active-border-color: #{$gray-600}; + --#{$prefix}btn-disabled-color: #{$gray-200}; + --#{$prefix}btn-disabled-bg: #{$gray-700}; + --#{$prefix}btn-disabled-border-color: #{$gray-700}; + } + + .btn-dark:not([data-bs-theme="light"]) { + @extend .btn-light; + } + + .btn-link:not([data-bs-theme="light"]) { + --#{$prefix}btn-disabled-color: #{$btn-link-disabled-color-dark}; + } + + .btn-outline-secondary:not([data-bs-theme="light"]) { + --#{$prefix}btn-color: #{$gray-200}; + --#{$prefix}btn-border-color: #{$gray-700}; + --#{$prefix}btn-hover-color: #{$white}; + --#{$prefix}btn-hover-border-color: #{$gray-400}; + --#{$prefix}btn-active-color: #{$white}; + --#{$prefix}btn-active-border-color: #{$white}; + --#{$prefix}btn-disabled-color: #{$gray-200}; + --#{$prefix}btn-disabled-border-color: #{$gray-700}; + } + + .btn-outline-dark:not([data-bs-theme="light"]) { + --#{$prefix}btn-color: #{$gray-50}; + --#{$prefix}btn-border-color: #{$gray-50}; + --#{$prefix}btn-hover-color: #{$gray-900}; + --#{$prefix}btn-hover-bg: #{$white}; + --#{$prefix}btn-hover-border-color: #{$white}; + --#{$prefix}btn-active-color: #{$gray-900}; + --#{$prefix}btn-active-bg: #{$white}; + --#{$prefix}btn-active-border-color: #{$white}; + --#{$prefix}btn-disabled-color: #{$gray-50}; + --#{$prefix}btn-disabled-border-color: #{$gray-50}; + } + } +} diff --git a/resources/scss/components/_card.scss b/resources/scss/components/_card.scss new file mode 100644 index 0000000..6cc2355 --- /dev/null +++ b/resources/scss/components/_card.scss @@ -0,0 +1,149 @@ +// Extend default Bootstrap's card compopnent + +// Header navs + +.card-header-nav-underline { + --#{$prefix}nav-link-padding-y: calc(1.25 * var(--#{$prefix}card-cap-padding-y)); + + margin: calc(-1 * var(--#{$prefix}card-cap-padding-y)) calc(-.125 * var(--#{$prefix}card-cap-padding-x)); +} + +.card-header-tabs { + --#{$prefix}nav-tabs-padding: var(--#{$prefix}card-cap-padding-y); + + margin: calc(-1 * var(--#{$prefix}card-cap-padding-y)) calc(-1 * var(--#{$prefix}card-cap-padding-x)); + @include border-bottom-radius(0); +} + + +// Shop product card + +.product-card { + position: relative; + + .product-card-details { + display: none; + } + + &.hover-effect-opacity .hover-effect-target { + transition: none; + } + + &:hover, + &:has(.select-card-check:checked) { + @include media-breakpoint-up(lg) { + z-index: 2; + box-shadow: var(--#{$prefix}box-shadow); + } + } + + &:hover .product-card-button, + .count-input:not(.collapsed) .product-card-button { + @extend .btn-primary; + + &:hover { + color: $white; + } + } + + &:hover { + @include media-breakpoint-up(lg) { + .product-card-details { + display: block; + } + } + + .hover-effect-underline { + text-decoration: underline !important; + text-decoration-thickness: var(--#{$prefix}underline-thickness) !important; + } + + .count-input .form-control, + [data-decrement] { + transition: visibility .2s ease-in-out, opacity .2s ease-in-out; + } + + .count-input:not(.collapsed) { + [data-count-input-value] { + display: none; + } + + [data-increment] > i { + display: inline-flex; + } + } + + .count-input.collapsed { + [data-increment] { + border-radius: var(--#{$prefix}border-radius-sm) !important; + } + } + } + + &:not(:hover) { + .count-input .form-control, + [data-decrement] { + visibility: hidden; + opacity: 0; + } + + .count-input:not(.collapsed) { + [data-count-input-value] { + display: inline; + } + [data-increment] > i { + display: none; + } + } + + [data-increment] { + border-radius: var(--#{$prefix}border-radius-sm) !important; + } + } +} + + +// Animated category card + +.category-card-body, +.category-card-title { + transition: transform .35s ease-in-out; + transform-origin: top center; + will-change: transform; +} + +.category-card-list { + position: absolute; + opacity: 0; + transition: transform .35s ease-in-out, opacity .35s ease-in-out; + will-change: transform, opacity; +} + +.category-card { + position: relative; + overflow: hidden; + + &:hover { + .category-card-body { + transform: scale(.67); + } + .category-card-title, + .category-card-list { + transform: scale(1.45); + } + .category-card-list { + opacity: 1; + } + } +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .product-card:hover .product-card-button { + @extend .btn-primary; + } + } +} diff --git a/resources/scss/components/_carousel.scss b/resources/scss/components/_carousel.scss new file mode 100644 index 0000000..e4d4c9b --- /dev/null +++ b/resources/scss/components/_carousel.scss @@ -0,0 +1,138 @@ +// Carousel (slider) component +// based on https://swiperjs.com/ + + +// Pagination + +// Navigation (Prev/next buttons) + +.swiper-button-lock { + display: none !important; +} + + +// Bullets + +.swiper-pagination-bullets { + --swiper-pagination-bottom: 1.5rem; + --swiper-pagination-right: 1.5rem; + --swiper-pagination-bullet-inactive-color: #{$carousel-bullet-bg}; + --swiper-pagination-color: #{$carousel-bullet-active-bg}; + --swiper-pagination-bullet-border-radius: #{$carousel-bullet-border-radius}; + --swiper-pagination-bullet-inactive-opacity: #{$carousel-bullet-opacity}; + --swiper-pagination-bullet-opacity: #{$carousel-bullet-active-opacity}; + --swiper-pagination-bullet-horizontal-gap: #{$carousel-bullet-gap * .5}; + --swiper-pagination-bullet-vertical-gap: #{$carousel-bullet-gap * .5}; + --swiper-pagination-bullet-transition: #{$carousel-bullet-transition}; +} + +.swiper-pagination-bullet { + transition: var(--swiper-pagination-bullet-transition); +} + + +// Progress bar + +.swiper-pagination-progressbar { + --swiper-pagination-progressbar-size: #{$carousel-progressbar-size}; + --swiper-pagination-progressbar-border-radius: #{$carousel-progressbar-border-radius}; + --swiper-pagination-progressbar-bg-color: #{$carousel-progressbar-bg}; + --swiper-pagination-color: #{$carousel-progressbar-fill-bg}; + + overflow: hidden; + @include border-radius(var(--swiper-pagination-progressbar-border-radius)); +} + + +// Scrollbar + +.swiper-scrollbar { + --swiper-scrollbar-bottom: .25rem; + --swiper-scrollbar-right: .25rem; + --swiper-scrollbar-size: #{$carousel-scrollbar-size}; + --swiper-scrollbar-border-radius: #{$carousel-scrollbar-border-radius}; + --swiper-scrollbar-bg-color: #{$carousel-scrollbar-bg}; + --swiper-scrollbar-drag-bg-color: #{$carousel-scrollbar-drag-bg}; + + display: none; + + &.swiper-scrollbar-horizontal, + &.swiper-scrollbar-vertical { + display: block; + } +} + + +// Thumbnails + +.swiper-thumbs { + --swiper-thumbnail-border-width: var(--#{$prefix}border-width); + --swiper-thumbnail-border-color: var(--#{$prefix}border-color); + --swiper-thumbnail-active-border-color: var(--#{$prefix}component-active-color); + --swiper-thumbnail-border-radius: var(--#{$prefix}border-radius); + --swiper-thumbnail-opacity: .5; + --swiper-thumbnail-active-opacity: 1; +} + +.swiper-thumb-img { + opacity: var(--swiper-thumbnail-opacity); + transition: opacity .2s ease-in-out; + @include border-radius(var(--swiper-thumbnail-border-radius)); +} + +.swiper-thumb { + display: flex; + align-items: center; + justify-content: center; + width: auto; + height: auto; + cursor: pointer; + border: var(--swiper-thumbnail-border-width) solid var(--swiper-thumbnail-border-color); + @include border-radius(var(--swiper-thumbnail-border-radius)); + transition: border-color .2s ease-in-out; + + &:hover, + &.active, + &.swiper-slide-thumb-active { + .swiper-thumb-img { + opacity: var(--swiper-thumbnail-active-opacity); + } + } + + &.active, + &.swiper-slide-thumb-active { + border-color: var(--swiper-thumbnail-active-border-color); + } +} + + +// Load swiper nicely + +.swiper-load { + visibility: hidden; + + &.swiper-initialized { + visibility: visible; + } +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .swiper-pagination-bullets:not([data-bs-theme="light"]) { + --swiper-pagination-bullet-inactive-color: #{$carousel-bullet-bg-dark}; + --swiper-pagination-color: #{$carousel-bullet-active-bg-dark}; + } + .swiper-pagination-progressbar:not([data-bs-theme="light"]) { + --swiper-pagination-progressbar-bg-color: #{$carousel-progressbar-bg-dark}; + --swiper-pagination-color: #{$carousel-progressbar-fill-bg-dark}; + } + .swiper-scrollbar:not([data-bs-theme="light"]) { + --swiper-scrollbar-bg-color: #{$carousel-scrollbar-bg-dark}; + --swiper-scrollbar-drag-bg-color: #{$carousel-scrollbar-drag-bg-dark}; + } + } +} + diff --git a/resources/scss/components/_close.scss b/resources/scss/components/_close.scss new file mode 100644 index 0000000..ae21edc --- /dev/null +++ b/resources/scss/components/_close.scss @@ -0,0 +1,21 @@ +// Close button +// It is used to dismiss alerts, modals, etc. + +.btn-close { + --#{$prefix}btn-close-size: #{$btn-close-width}; + + width: var(--#{$prefix}btn-close-size); + height: var(--#{$prefix}btn-close-size); + background-size: var(--#{$prefix}btn-close-size) auto; + transition: $btn-close-transition; + + &:focus { + outline: 0; + box-shadow: none; + } + + &:focus-visible { + box-shadow: var(--#{$prefix}btn-close-focus-shadow); + opacity: var(--#{$prefix}btn-close-focus-opacity); + } +} diff --git a/resources/scss/components/_date-picker.scss b/resources/scss/components/_date-picker.scss new file mode 100644 index 0000000..00e514d --- /dev/null +++ b/resources/scss/components/_date-picker.scss @@ -0,0 +1,224 @@ +// Date / time picker +// based on https://github.com/flatpickr/flatpickr + +// Reboot plugin's styles +/* stylelint-disable selector-class-pattern, selector-no-qualifying-type */ +.flatpickr-calendar { + width: 325px; + padding: 0 .5rem; + border: $dropdown-border-width solid $dropdown-border-color; + @include border-radius($dropdown-border-radius); + box-shadow: $dropdown-box-shadow; + + &::before, + &::after { + display: none; + } +} + +.flatpickr-innerContainer { + padding-bottom: 1rem; +} + +.flatpickr-months { + padding: .75rem 0; + + svg { + vertical-align: top; + } + + .flatpickr-prev-month, + .flatpickr-next-month { + top: .75rem; + + svg { + fill: var(--#{$prefix}heading-color) !important; + } + } +} + +span.flatpickr-weekday, +.flatpickr-time .flatpickr-time-separator { + color: var(--#{$prefix}gray-600); +} +.flatpickr-current-month .flatpickr-monthDropdown-months { + padding: .25rem; + appearance: none; +} +.numInputWrapper, +.numInput, +.flatpickr-current-month .flatpickr-monthDropdown-months { + color: var(--#{$prefix}heading-color) !important; +} +.numInputWrapper:hover, +.flatpickr-current-month .flatpickr-monthDropdown-months:hover { + background-color: var(--#{$prefix}component-hover-bg); +} +.numInput:hover { + background-color: transparent !important; +} + +.flatpickr-day { + height: 38px; + line-height: 37px; + color: var(--#{$prefix}body-color); + @include border-radius(var(--#{$prefix}border-radius)); + + &:hover, + &:focus { + &:not(.flatpickr-disabled):not(.today):not(.selected):not(.startRange):not(.endRange) { + color: var(--#{$prefix}component-active-color); + background-color: var(--#{$prefix}component-active-bg); + border-color: var(--#{$prefix}component-active-bg); + } + } + + &.today { + font-weight: $font-weight-medium; + background-color: transparent !important; + border-color: var(--#{$prefix}component-active-color) !important; + + &:not(.startRange):not(.endRange):not(.selected) { + color: var(--#{$prefix}component-active-color) !important; + } + + &.selected { + color: $white !important; + } + + &:hover { + background-color: transparent; + } + } + + &.selected { + font-weight: $font-weight-medium; + background-color: var(--#{$prefix}component-active-color) !important; + border-color: var(--#{$prefix}component-active-color) !important; + } + + &.flatpickr-disabled { + color: var(--#{$prefix}tertiary-color) !important; + text-decoration: line-through; + } + + &.prevMonthDay, + &.nextMonthDay { + color: var(--#{$prefix}tertiary-color); + } + + &.inRange { + background-color: var(--#{$prefix}component-active-bg) !important; + border-color: var(--#{$prefix}component-active-bg) !important; + box-shadow: -5px 0 0 var(--#{$prefix}component-active-bg), 5px 0 0 var(--#{$prefix}component-active-bg); + } + + &.startRange, + &.endRange, + &.endRange.seleced, + &.endRange:hover { + background-color: var(--#{$prefix}component-active-color) !important; + border-color: var(--#{$prefix}component-active-color) !important; + } +} + +.flatpickr-day.selected.endRange, +.flatpickr-day.startRange.endRange, +.flatpickr-day.endRange.endRange { + border-radius: 0; + @include border-radius(0 $border-radius $border-radius 0); +} + +.flatpickr-day.selected.startRange, +.flatpickr-day.startRange.startRange, +.flatpickr-day.endRange.startRange { + border-radius: 0; + @include border-radius($border-radius 0 0 $border-radius); +} + +.flatpickr-day.selected.startRange.endRange, +.flatpickr-day.startRange.startRange.endRange, +.flatpickr-day.endRange.startRange.endRange { + @include border-radius($border-radius); +} + +.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)), +.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)), +.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) { + box-shadow: -10px 0 0 var(--#{$prefix}component-active-color); +} + +.flatpickr-time { + .flatpickr-am-pm { + color: var(--#{$prefix}emphasis-color); + } + + input:hover, + input::selection, + input:focus, + .flatpickr-am-pm:hover, + .flatpickr-am-pm:focus { + background-color: transparent; + } + + input.flatpickr-hour { + font-weight: $font-weight-normal; + } +} + +.flatpickr-calendar.hasTime { + .flatpickr-time { + height: 3.5rem; + max-height: 3.5rem; + padding: .5rem 0; + line-height: 3.5rem; + border: 0; + + .numInputWrapper { + line-height: 2.5rem; + } + } + + .flatpickr-innerContainer + .flatpickr-time { + border-top: $border-width solid var(--#{$prefix}border-color); + } +} + +.numInputWrapper span { + border-color: var(--#{$prefix}border-color); + + &.arrowUp::after { + border-bottom-color: var(--#{$prefix}component-color) !important; + } + + &.arrowDown::after { + border-top-color: var(--#{$prefix}component-color) !important; + } + + &:hover { + background: var(--#{$prefix}border-color); + } +} + + +// Dark color mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .flatpickr-calendar { + background: $dropdown-dark-bg; + border-color: $dropdown-dark-border-color; + box-shadow: $dropdown-dark-box-shadow; + } + .flatpickr-day { + &.startRange, + &.endRange, + &.startRange.selected, + &.selected, + &.selected.today { + color: $dark !important; + } + } + } +} +/* stylelint-enable selector-class-pattern, selector-no-qualifying-type */ diff --git a/resources/scss/components/_dropdown.scss b/resources/scss/components/_dropdown.scss new file mode 100644 index 0000000..cf53d2d --- /dev/null +++ b/resources/scss/components/_dropdown.scss @@ -0,0 +1,188 @@ +// Override default Bootstrap's dropdown component + +// Dropdown toggle + +.dropdown-toggle { + display: flex; + align-items: center; + + @if $enable-caret { + &::after { + flex-shrink: 0; + width: $caret-width; + height: $caret-width; + margin-right: -.25rem; + content: ""; + background-color: currentcolor; + border: 0 !important; + -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix + mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; + -webkit-mask-size: cover; // stylelint-disable-line property-no-vendor-prefix + mask-size: cover; + } + } +} + +@if $enable-caret { + .dropup .dropdown-toggle::after { + -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix + mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; + } + + .dropend .dropdown-toggle::after { + -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix + mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; + } + + [dir="rtl"] .dropend .dropdown-toggle::after { + transform: rotate(180deg); + } + + .dropstart .dropdown-toggle { + &::before { + flex-shrink: 0; + width: $caret-width; + height: $caret-width; + margin-left: -.25rem; + content: ""; + background-color: currentcolor; + border: 0 !important; + -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix + mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; + -webkit-mask-size: cover; // stylelint-disable-line property-no-vendor-prefix + mask-size: cover; + } + } + + [dir="rtl"] .dropstart .dropdown-toggle::before { + transform: rotate(180deg); + } + + .dropdown-toggle-split { + &::after, + &::before { + margin: 0 -.25rem; + } + } +} + + +// Highlight dropdown-toggle with specific "filter-select" class if there is any checkbox checked inside dropdown-menu + +.dropdown:has(:checked) .filter-select { + --#{$prefix}btn-border-color: #{$gray-900}; + --#{$prefix}btn-hover-border-color: #{$gray-900}; +} + + +// Dropdown menu + +.dropdown-menu { + --#{$prefix}dropdown-item-border-radius: #{$dropdown-item-border-radius}; + --#{$prefix}dropdown-item-spacer: #{$dropdown-item-spacer}; + + padding-bottom: calc(var(--#{$prefix}dropdown-padding-y) - var(--#{$prefix}dropdown-item-spacer)); + + &.show { + animation: fade-in .15s ease-in-out; + } + + &::before, + &::after { + position: absolute; + display: block; + content: ""; + } +} + +.dropdown, +.dropup { + .dropdown-menu { + margin: { + top: var(--#{$prefix}dropdown-spacer) !important; + bottom: var(--#{$prefix}dropdown-spacer) !important; + } + + &::before, + &::after { + left: 0; + width: 100%; + height: calc(var(--#{$prefix}dropdown-spacer) * 1.5); + } + &::before { + bottom: 100%; + } + &::after { + top: 100%; + } + } +} + +.dropstart, +.dropend { + .dropdown-menu { + margin: { + right: var(--#{$prefix}dropdown-spacer) !important; + left: var(--#{$prefix}dropdown-spacer) !important; + } + + &::before, + &::after { + top: 0; + width: calc(var(--#{$prefix}dropdown-spacer) * 2); + height: 100%; + } + &::before { + left: calc(var(--#{$prefix}dropdown-spacer) * -2); + } + &::after { + left: 100%; + } + } +} + +.dropdown-item { + display: flex; + align-items: center; + margin-bottom: var(--#{$prefix}dropdown-item-spacer); + @include border-radius(var(--#{$prefix}dropdown-item-border-radius)); + transition: $dropdown-link-transition; + + &.show, + [data-bs-toggle].show > &, + [data-bs-toggle]:hover > &, + &:active { + color: var(--#{$prefix}dropdown-link-hover-color); + background-color: var(--#{$prefix}dropdown-link-hover-bg); + } + + &:focus-visible { + outline: none; + box-shadow: $focus-ring-box-shadow; + } + + &.dropdown-toggle::after { + margin-left: auto; + } + + .item-active-indicator { + display: none; + } + + &.active .item-active-indicator { + display: flex; + padding-left: .5rem; + } +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .dropdown:not([data-bs-theme="light"]):has(:checked) .filter-select { + --#{$prefix}btn-border-color: #{$white}; + --#{$prefix}btn-hover-border-color: #{$white}; + } + } +} diff --git a/resources/scss/components/_forms.scss b/resources/scss/components/_forms.scss new file mode 100644 index 0000000..f249ab1 --- /dev/null +++ b/resources/scss/components/_forms.scss @@ -0,0 +1,493 @@ +// Extend default Bootstrap's .form-control / .form-select classes + +.form-control, +.form-select { + --#{$prefix}form-control-bg: #{$input-bg}; + --#{$prefix}form-control-border-color: #{$input-border-color}; + --#{$prefix}form-control-focus-bg: #{$input-focus-bg}; + --#{$prefix}form-control-focus-border-color: #{$input-focus-border-color}; + + background-color: var(--#{$prefix}form-control-bg); + border-color: var(--#{$prefix}form-control-border-color); + + &:focus { + background-color: var(--#{$prefix}form-control-focus-bg); + border-color: var(--#{$prefix}form-control-focus-border-color); + } + + &:disabled { + border-style: dashed; + } +} + + +// Fix small select idicator position + +.form-select.form-select-sm { + background-position: right $form-select-padding-x-sm * .875 center; +} + + +// Remove default -webkit search input clear button + +.form-control { + &::-webkit-search-decoration, + &::-webkit-search-cancel-button, + &::-webkit-search-results-button, + &::-webkit-search-results-decoration { + display: none; + } +} + + +// Remove default -webkit time input icon + +.form-control::-webkit-calendar-picker-indicator { + background: none; +} + + +// Floating labels + +.form-floating > label::after { + background-color: transparent !important; +} + + +// Flush form select + +.form-select-flush { + background-position: right center; + border: 0; + border-bottom: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !important; + border-radius: 0; + + &.form-select-lg { + background-size: 17px 13px; + } +} + + +// Absolutely positioned icon inside .form-control + +.form-icon-start { + padding-left: calc($input-padding-x + $input-border-width + $font-size-base + .375rem); + + &.form-control-lg { + padding-left: calc($input-padding-x-lg + $input-border-width + $font-size-lg + .25rem); + } + + &.form-control-sm { + padding-left: calc($input-padding-x-sm + $input-border-width + $font-size-sm); + } +} + +.form-icon-end { + padding-right: calc($input-padding-x + $input-border-width + $font-size-base + .375rem); + + &.form-control-lg { + padding-right: calc($input-padding-x-lg + $input-border-width + $font-size-lg + .25rem); + } + + &.form-control-sm { + padding-right: calc($input-padding-x-sm + $input-border-width + $font-size-sm); + } +} + + +// Checkboxes and radios + +.form-check-label { + font-size: $form-label-font-size; +} + +.form-check-input { + &:focus { + box-shadow: none; + } + + &:focus-visible { + box-shadow: $focus-ring-box-shadow; + } + + &:active { + background-color: transparent; + filter: none; + } +} + + +// Switch + +.form-switch { + min-height: $form-switch-height; + margin-bottom: $form-switch-margin-bottom; + + .form-check-input { + height: $form-switch-height; + margin-top: 0; + background-color: $form-switch-bg-color; + border: 0 !important; + + &:checked { + background-color: $form-switch-checked-bg-color !important; + } + } +} + + +// Password toggle + +.password-toggle { + position: relative; + + .form-control { + padding-right: $input-padding-x * 2 + $input-font-size; + } +} + +.password-toggle-button { + position: absolute; + top: 0; + right: 0; + display: flex; + align-items: center; + height: 100%; + padding: 0 $input-padding-x; + color: $password-toggle-button-color; + cursor: pointer; + transition: color .2s ease-in-out; + + &:hover { + color: $password-toggle-button-hover-color; + } +} + + +// Count input + +.count-input { + display: inline-flex; + overflow: hidden; + background-color: $input-bg; + border: var(--#{$prefix}border-width) solid $input-border-color; + border-radius: $input-border-radius; + transform: translateZ(0); + + .form-control { + width: $btn-icon-size; + padding: 0 .25rem; + font-weight: $font-weight-medium; + text-align: center; + /* stylelint-disable property-no-vendor-prefix */ + -moz-appearance: textfield; + appearance: textfield; + &::-webkit-outer-spin-button, + &::-webkit-inner-spin-button { + margin: 0; + -webkit-appearance: none; + } + /* stylelint-enable property-no-vendor-prefix */ + background-color: transparent; + border: 0; + border-radius: 0; + } + + .btn { + border: 0; + border-radius: 0; + } + + .btn:not(.btn-primary) { + --#{$prefix}btn-hover-color: var(--#{$prefix}component-hover-color); + --#{$prefix}btn-hover-bg: var(--#{$prefix}secondary-bg); + --#{$prefix}btn-active-bg: var(--#{$prefix}secondary-bg); + } + + .btn-sm + .form-control { + width: $btn-icon-size-sm; + } + + .btn-lg + .form-control { + width: $btn-icon-size-lg; + } + + &.disabled { + background-color: $input-disabled-bg; + border-color: $input-disabled-border-color; + border-style: dashed; + } +} + +.count-input-collapsible { + &.collapsed { + [data-decrement], + .form-control { + display: none; + } + } +} + + +// Range slider + +.range-slider { + --#{$prefix}range-slider-height: #{$range-slider-height}; + --#{$prefix}range-slider-bg: #{$range-slider-bg}; + --#{$prefix}range-slider-connect-bg: #{$range-slider-connect-bg}; + --#{$prefix}range-slider-handle-size: #{$range-slider-handle-size}; + --#{$prefix}range-slider-handle-bg: #{$range-slider-handle-bg}; + --#{$prefix}range-slider-handle-active-bg: #{$range-slider-handle-active-bg}; + --#{$prefix}range-slider-handle-border-width: #{$range-slider-handle-border-width}; + --#{$prefix}range-slider-handle-border-color: #{$range-slider-handle-border-color}; + --#{$prefix}range-slider-handle-border-radius: 50%; + --#{$prefix}range-slider-pips-color: var(--#{$prefix}body-color); + --#{$prefix}range-slider-pips-font-size: #{$range-slider-pips-font-size}; + --#{$prefix}range-slider-pips-border-width: var(--#{$prefix}border-width); + --#{$prefix}range-slider-pips-border-color: #{adjust-color($border-color, $lightness: -6%)}; // stylelint-disable-line + --#{$prefix}range-slider-tooltip-padding-y: #{$tooltip-padding-y}; + --#{$prefix}range-slider-tooltip-padding-x: #{$tooltip-padding-x}; + --#{$prefix}range-slider-tooltip-bg: #{$range-slider-tooltip-bg}; + --#{$prefix}range-slider-tooltip-color: #{$range-slider-tooltip-color}; + --#{$prefix}range-slider-tooltip-font-size: #{$range-slider-tooltip-font-size}; + --#{$prefix}range-slider-tooltip-border-radius: #{$tooltip-border-radius}; +} + +/* stylelint-disable selector-class-pattern */ +.range-slider-ui { + height: var(--#{$prefix}range-slider-height); + margin: 0; + margin: { + top: 2.25rem; + right: 0; + bottom: 1.75rem; + left: 0; + } + background-color: var(--#{$prefix}range-slider-bg); + border: 0; + box-shadow: none; + + .noUi-connect { + background-color: var(--#{$prefix}range-slider-connect-bg); + } + + .noUi-handle { + top: 50%; + width: var(--#{$prefix}range-slider-handle-size); + height: var(--#{$prefix}range-slider-handle-size); + margin-top: calc(var(--#{$prefix}range-slider-handle-size) * -.5); + background-color: var(--#{$prefix}range-slider-handle-bg); + border: var(--#{$prefix}range-slider-handle-border-width) solid var(--#{$prefix}range-slider-handle-border-color); + border-radius: var(--#{$prefix}range-slider-handle-border-radius); + box-shadow: none; + + &::before, + &::after { + display: none; + } + + &:active, + &:focus-visible { + background-color: var(--#{$prefix}range-slider-handle-active-bg); + } + + &:focus { + outline: none; + } + + &:focus-visible { + box-shadow: $focus-ring-box-shadow; + } + } + + .noUi-marker-normal { + display: none; + } + + .noUi-marker-horizontal { + &.noUi-marker { + width: var(--#{$prefix}range-slider-pips-border-width); + background-color: var(--#{$prefix}range-slider-pips-border-color); + } + + &.noUi-marker-large { height: .75rem; } + } + + .noUi-value { + padding-top: .125rem; + font-size: var(--#{$prefix}range-slider-pips-font-size); + color: var(--#{$prefix}range-slider-pips-color); + } + + .noUi-tooltip { + padding: var(--#{$prefix}range-slider-tooltip-padding-y) var(--#{$prefix}range-slider-tooltip-padding-x); + line-height: 1.2; + font: { + size: var(--#{$prefix}range-slider-tooltip-font-size); + weight: $font-weight-medium; + } + color: var(--#{$prefix}range-slider-tooltip-color); + background-color: var(--#{$prefix}range-slider-tooltip-bg); + border: 0; + @include border-radius(var(--#{$prefix}range-slider-tooltip-border-radius)); + } +} + +html:not([dir="rtl"]) .range-slider-ui.noUi-horizontal .noUi-handle { + right: calc(var(--#{$prefix}range-slider-handle-size) * -.5); +} + +.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle { + /* rtl:begin:ignore */ + left: -.5rem; + + /* rtl:end:ignore */ +} +/* stylelint-enable selector-class-pattern */ + + +// Form validation + +.was-validated .form-control:valid, +.form-control.is-valid, +.was-validated .form-select:valid, +.form-select.is-valid { + border-color: var(--#{$prefix}form-control-border-color); + + &:focus { + border-color: var(--#{$prefix}form-control-focus-border-color); + } +} + +.was-validated .password-toggle .form-control:valid, +.password-toggle .form-control.is-valid, +.was-validated .password-toggle .form-control:invalid, +.password-toggle .form-control.is-invalid { + background-position: $form-select-feedback-icon-position; +} + +.was-validated .form-check-input:valid, +.form-check-input.is-valid { + border: $form-check-input-border; + + &:checked { + background-color: $form-check-input-checked-bg-color; + border-color: $form-check-input-checked-border-color; + } + + &:focus { + box-shadow: none; + } + + ~ .form-check-label { + color: var(--#{$prefix}body-color); + } +} + +.was-validated .form-switch .form-check-input:invalid, +.form-switch .form-check-input.is-invalid { + background-color: var(--#{$prefix}form-invalid-color) !important; +} + +.valid-tooltip { + color: var(--#{$prefix}form-valid-color); + background-color: var(--#{$prefix}success-bg-subtle); +} + +.invalid-tooltip { + color: var(--#{$prefix}form-invalid-color); + background-color: var(--#{$prefix}danger-bg-subtle); +} + + +// Force formatted numeric input fileds RTL + +[data-input-format] { + direction: ltr; +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .form-control:not([data-bs-theme="light"]), + .form-select:not([data-bs-theme="light"]) { + --#{$prefix}form-control-bg: #{$input-bg-dark}; + --#{$prefix}form-control-border-color: #{$input-border-color-dark}; + --#{$prefix}form-control-focus-bg: #{$input-focus-bg-dark}; + --#{$prefix}form-control-focus-border-color: #{$input-focus-border-color-dark}; + } + + .form-select:not([data-bs-theme="light"]) option { + background-color: $dropdown-dark-bg; + } + + .form-check-input:not([data-bs-theme="light"]) { + background-color: $form-check-input-bg-dark; + border: $form-check-input-border-dark; + + &:checked { + background-color: $form-check-input-checked-bg-color-dark; + border-color: $form-check-input-checked-border-color-dark; + + &[type="checkbox"] { + @if $enable-gradients { + --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-checked-bg-image-dark)}, var(--#{$prefix}gradient); + } @else { + --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-checked-bg-image-dark)}; + } + } + + &[type="radio"] { + @if $enable-gradients { + --#{$prefix}form-check-bg-image: #{escape-svg($form-check-radio-checked-bg-image-dark)}, var(--#{$prefix}gradient); + } @else { + --#{$prefix}form-check-bg-image: #{escape-svg($form-check-radio-checked-bg-image-dark)}; + } + } + } + + &[type="checkbox"]:indeterminate { + background-color: $form-check-input-indeterminate-bg-color-dark; + border-color: $form-check-input-indeterminate-border-color-dark; + + @if $enable-gradients { + --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-indeterminate-bg-image-dark)}, var(--#{$prefix}gradient); + } @else { + --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-indeterminate-bg-image-dark)}; + } + } + } + + + .was-validated .form-check-input:invalid, + .form-check-input.is-invalid { + border-color: var(--#{$prefix}form-invalid-border-color); + } + + .form-switch:not([data-bs-theme="light"]) { + .form-check-input { + background-color: $form-switch-bg-color-dark; + border: 0; + + &:checked { + background-color: $form-switch-checked-bg-color; + } + + &:not(:checked):not(:focus) { + --#{$prefix}form-switch-bg: #{escape-svg($form-switch-bg-image)}; + } + } + } + + .count-input:not([data-bs-theme="light"]) { + background-color: $input-bg-dark; + border-color: $input-border-color-dark; + } + + .input-group:not([data-bs-theme="light"]) .input-group-text { + border-color: $input-group-addon-border-color-dark; + } + } +} diff --git a/resources/scss/components/_image-zoom.scss b/resources/scss/components/_image-zoom.scss new file mode 100644 index 0000000..13dd8df --- /dev/null +++ b/resources/scss/components/_image-zoom.scss @@ -0,0 +1,23 @@ +// Image zoom on hover +// based on https://github.com/imgix/drift + +[data-zoom]:hover { + cursor: crosshair; +} + +.drift-zoom-pane { + background-color: var(--#{$prefix}body-bg); + border: $border-width solid var(--#{$prefix}border-color); + @include border-radius(var(--#{$prefix}border-radius-lg)); +} + +[dir="rtl"] .drift-zoom-pane img { + /* rtl:begin:ignore */ + left: 0; + + /* rtl:end:ignore */ +} + +.drift-inline { + z-index: 10; +} diff --git a/resources/scss/components/_lightbox.scss b/resources/scss/components/_lightbox.scss new file mode 100644 index 0000000..5b15a26 --- /dev/null +++ b/resources/scss/components/_lightbox.scss @@ -0,0 +1,70 @@ +// Lightbox / gallery component +// based on https://github.com/biati-digital/glightbox + + +// Fix issue with sticky elements when Glightbox is open + +.glightbox-open { + overflow: clip; +} + +/* stylelint-disable at-rule-no-vendor-prefix */ +@-moz-document url-prefix() { + .glightbox-open { + overflow: hidden; + } +} +/* stylelint-enable at-rule-no-vendor-prefix */ + + +// Remove shadow from Glightbox images + +.glightbox-clean .gslide-media { + box-shadow: none; +} + + +// Change backdrop (overlay) color + +.glightbox-mobile .goverlay, +.goverlay { + background: var(--#{$prefix}body-bg); +} + + +// Override Glightbox buttons + +.glightbox-clean { + .gprev, + .gnext, + .gclose { + width: 2.5rem; + height: 2.5rem; + svg { + width: 1.25rem; + } + @include media-breakpoint-up(md) { + width: 3rem; + height: 3rem; + svg { + width: 1.5rem; + } + } + path { + fill: currentcolor; + } + } +} + +.glightbox-clean .gclose { + opacity: 1; +} + +.glightbox-button-hidden { + display: none; +} + +.gbtn.focused { + outline: none; + box-shadow: 0 0 0 .25rem $focus-ring-color-dark; +} diff --git a/resources/scss/components/_list-group.scss b/resources/scss/components/_list-group.scss new file mode 100644 index 0000000..749c98c --- /dev/null +++ b/resources/scss/components/_list-group.scss @@ -0,0 +1,54 @@ +// Extend default Bootstrap's list group component + +.list-group { + --#{$prefix}list-group-font-size: #{$list-group-font-size}; + --#{$prefix}list-group-action-font-weight: #{$list-group-action-font-weight}; + --#{$prefix}list-group-borderless-item-spacer: #{$list-group-borderless-item-spacer}; + + gap: 0; + @include font-size(var(--#{$prefix}list-group-font-size)); +} + +.list-group-item-action { + font-weight: var(--#{$prefix}list-group-action-font-weight); + color: var(--#{$prefix}list-group-action-color); + transition: $list-group-item-transition; + + &:hover, + &:focus-visible { + color: var(--#{$prefix}list-group-action-hover-color); + background-color: var(--#{$prefix}list-group-action-hover-bg); + } + + &.active { + color: var(--#{$prefix}list-group-action-active-color); + background-color: var(--#{$prefix}list-group-action-active-bg); + } +} + + +// Borderless list group + +.list-group-borderless { + gap: var(--#{$prefix}list-group-borderless-item-spacer); + @include border-radius(0); + + .list-group-item { + border: 0; + + &:not(.rounded-pill) { + @include border-radius(var(--#{$prefix}list-group-border-radius) !important); + } + + &.active { + margin-top: 0; + } + } +} + + +// Flush list group inside card + +.card > .list-group-flush { + --#{$prefix}list-group-item-padding-x: var(--#{$prefix}card-spacer-x); +} diff --git a/resources/scss/components/_nav.scss b/resources/scss/components/_nav.scss new file mode 100644 index 0000000..7c53a58 --- /dev/null +++ b/resources/scss/components/_nav.scss @@ -0,0 +1,203 @@ +// Extend default Bootstrap's .nav, .nav-item, .nav-link classes + +.nav { + --#{$prefix}nav-link-line-height: #{$nav-link-line-height}; + --#{$prefix}nav-link-active-color: #{$nav-link-active-color}; + + flex-direction: row; + gap: 0; +} + +.nav-link { + display: flex; + align-items: center; + + &.show { + color: var(--#{$prefix}nav-link-hover-color); + } + + &.active { + color: var(--#{$prefix}nav-link-active-color); + } + + &.disabled, + &:disabled { + color: var(--#{$prefix}nav-link-disabled-color); + } + + &.text-body, + &.text-body-secondary, + &.text-body-tertiary { + &:hover, + &:focus-visible, + &.show { + color: var(--#{$prefix}nav-link-hover-color) !important; + } + &.active { + color: var(--#{$prefix}nav-link-active-color) !important; + } + &.disabled, + &:disabled { + color: var(--#{$prefix}nav-link-disabled-color) !important; + } + } +} + + +// Tabs + +.nav-tabs { + --#{$prefix}nav-tabs-padding: #{$nav-tabs-padding}; + --#{$prefix}nav-tabs-bg: #{$nav-tabs-bg}; + --#{$prefix}nav-tabs-link-hover-bg: #{$nav-tabs-link-hover-bg}; + --#{$prefix}nav-tabs-link-active-box-shadow: #{$nav-tabs-link-active-box-shadow}; + + gap: var(--#{$prefix}nav-tabs-padding); + padding: var(--#{$prefix}nav-tabs-padding); + background-color: var(--#{$prefix}nav-tabs-bg); + @include border-radius(var(--#{$prefix}nav-tabs-border-radius)); + + .nav-item { + flex-grow: 1; + flex-basis: 0; + text-align: center; + } + + .nav-link { + justify-content: center; + width: 100%; + line-height: var(--#{$prefix}nav-link-line-height); + @include border-radius(var(--#{$prefix}nav-tabs-border-radius)); + + &:hover, + &.show, + &:focus-visible { + background-color: var(--#{$prefix}nav-tabs-link-hover-bg); + } + + &:focus-visible { + box-shadow: $nav-link-focus-box-shadow !important; + } + + &.active { + background-color: var(--#{$prefix}nav-tabs-link-active-bg); + @include box-shadow(var(--#{$prefix}nav-tabs-link-active-box-shadow)); + } + + &.disabled, + &:disabled { + background: none; + } + } + + &.flex-column .nav-link { + justify-content: start; + } + + .dropdown-menu { + @include border-radius(var(--#{$prefix}dropdown-border-radius)); + } +} + + +// Pills + +.nav-pills { + --#{$prefix}nav-pills-gap: #{$nav-pills-gap}; + --#{$prefix}nav-pills-link-border-width: #{$nav-pills-link-border-width}; + --#{$prefix}nav-pills-link-border-color: #{$nav-pills-link-border-color}; + --#{$prefix}nav-pills-link-hover-color: #{$nav-pills-link-hover-color}; + --#{$prefix}nav-pills-link-hover-border-color: #{$nav-pills-link-hover-border-color}; + --#{$prefix}nav-pills-link-active-border-color: #{$nav-pills-link-active-border-color}; + --#{$prefix}nav-pills-link-disabled-color: #{$nav-pills-link-disabled-color}; + --#{$prefix}nav-pills-link-disabled-border-color: #{$nav-pills-link-border-color}; + + gap: var(--#{$prefix}nav-pills-gap); + + .nav-link { + line-height: var(--#{$prefix}nav-link-line-height); + border: var(--#{$prefix}nav-pills-link-border-width) solid var(--#{$prefix}nav-pills-link-border-color); + + &:hover, + &.show, + &:focus-visible { + color: var(--#{$prefix}nav-pills-link-hover-color); + border-color: var(--#{$prefix}nav-pills-link-hover-border-color); + } + + &.active { + border-color: var(--#{$prefix}nav-pills-link-active-border-color); + } + + &.disabled, + &:disabled { + color: var(--#{$prefix}nav-pills-link-disabled-color); + border-color: var(--#{$prefix}nav-pills-link-disabled-border-color); + } + } +} + + +// Underline + +.nav-underline { + gap: var(--#{$prefix}nav-underline-gap); + + .nav-link { + line-height: var(--#{$prefix}nav-link-line-height); + border: 0; + + @include underline(var(--#{$prefix}nav-underline-border-width), before); + + &::before { + bottom: calc(var(--#{$prefix}nav-underline-border-width) * -1); + } + + &.active { + font-weight: $nav-link-font-weight; + background-color: transparent; + @include underline-action(before); + } + } + + &.flex-column .nav-link { + padding: calc(var(--#{$prefix}nav-link-padding-y) * .5) var(--#{$prefix}nav-link-padding-x); + + &::before { + top: 0; + left: calc(var(--#{$prefix}nav-underline-border-width) * -1); + width: var(--#{$prefix}nav-underline-border-width); + height: 100%; + transform: scaleY(0); + transform-origin: bottom left; + } + + &.active::before { + transform: scaleY(1); + transform-origin: top left; + } + } +} + + +// Fill and justify + +.nav-fill:not(.flex-column) .nav-link, +.nav-justified:not(.flex-column) .nav-link { + justify-content: center; +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .nav-tabs:not([data-bs-theme="light"]) { + .nav-link { + --#{$prefix}nav-tabs-link-hover-bg: #{$nav-tabs-link-hover-bg-dark}; + --#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg-dark}; + --#{$prefix}nav-tabs-link-active-box-shadow: #{$nav-tabs-link-active-box-shadow-dark}; + } + } + } +} diff --git a/resources/scss/components/_navbar.scss b/resources/scss/components/_navbar.scss new file mode 100644 index 0000000..61970d5 --- /dev/null +++ b/resources/scss/components/_navbar.scss @@ -0,0 +1,403 @@ +// Add new CSS variables to default Bootstrap's .navbar + +.navbar { + --#{$prefix}navbar-brand-font-weight: #{$navbar-brand-font-weight}; +} + + +// Navbar brand + +.navbar-brand { + display: inline-flex; + align-items: center; + font-weight: var(--#{$prefix}navbar-brand-font-weight); +} + + +// Navbar nav + +.navbar-nav { + --#{$prefix}nav-link-font-size: #{$navbar-nav-link-font-size}; + --#{$prefix}nav-link-underline-border-width: #{$navbar-nav-link-underline-border-width}; + + gap: 0; + + > .nav-item > .nav-link { + padding: var(--#{$prefix}nav-link-padding-y) var(--#{$prefix}navbar-nav-link-padding-x); + + @include underline(var(--#{$prefix}nav-link-underline-border-width), before); + + &::before { + top: calc(var(--#{$prefix}nav-link-padding-y) * .75); + width: var(--#{$prefix}nav-link-underline-border-width); + height: calc(100% - var(--#{$prefix}nav-link-padding-y) * 1.5); + transform: scaleY(0); + transform-origin: bottom left; + } + + &:hover, + &.show, + &:focus-visible, + &.active { + &::before { + transform: scaleY(1); + transform-origin: top left; + } + } + + @if $enable-caret { + &.dropdown-toggle::after { + margin-left: auto; + } + } + } + + &:hover { + > .nav-item > .nav-link.active:not(:hover):not(.show):not(:focus-visible) { + &::before { + transform: scaleY(0); + transform-origin: bottom left; + } + } + } + + .dropdown-menu { + --#{$prefix}dropdown-box-shadow: none; + position: static; + + @if $enable-caret { + .dropup .dropdown-toggle::after, + .dropend .dropdown-toggle::after, + .dropstart .dropdown-toggle::after { + -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix + mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; + } + .dropstart .dropdown-toggle { + &::before { + display: none; + } + &::after { + display: inline-block; + width: $caret-width; + height: $caret-width; + margin-right: -.125rem; + content: ""; + background-color: currentcolor; + border: 0 !important; + -webkit-mask-size: cover; // stylelint-disable-line property-no-vendor-prefix + mask-size: cover; + } + } + } + + .dropend .dropdown-menu, + .dropstart .dropdown-menu { + margin: var(--#{$prefix}dropdown-spacer) 0 !important; + } + } + + .dropdown > .dropdown-menu, + .dropup > .dropdown-menu { + &::before, + &::after { + height: calc(var(--#{$prefix}dropdown-spacer) * 1.125); + } + } +} + +[dir="rtl"] .navbar-nav .dropdown-menu { + .dropup .dropdown-toggle::after, + .dropend .dropdown-toggle::after, + .dropstart .dropdown-toggle::after { + -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix + mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; + } +} + + +// Fix nav inside dark navbar but light offcanvas + +@if $enable-dark-mode { + @include color-mode(light) { + .navbar-dark:not([data-bs-theme="dark"]) .offcanvas .navbar-nav { + --#{$prefix}nav-link-color: #{$navbar-light-color}; + --#{$prefix}nav-link-hover-color: #{$navbar-light-hover-color}; + --#{$prefix}navbar-active-color: #{$navbar-light-active-color}; + --#{$prefix}nav-link-disabled-color: #{$navbar-light-disabled-color}; + } + } +} + + +// Navbar toggler + +.navbar-toggler { + position: relative; + width: $navbar-toggler-bar-width + $navbar-toggler-padding-x * 2; + height: $navbar-toggler-bar-height * 3 + $navbar-toggler-bar-spacing * 2 + $navbar-toggler-padding-y * 2; +} + +.navbar-toggler-icon { + top: 50%; + display: block; + margin-top: $navbar-toggler-bar-height * -.5; + transition-timing-function: cubic-bezier(.55, .055, .675, .19); + transition-duration: .075s; + + &, + &::before, + &::after { + position: absolute; + width: $navbar-toggler-bar-width; + height: $navbar-toggler-bar-height; + background-color: var(--#{$prefix}navbar-color); + transition-property: transform; + } + &::before, + &::after { + display: block; + content: ""; + } + &::before { + top: ($navbar-toggler-bar-spacing + $navbar-toggler-bar-height) * -1; + transition: top .075s .12s ease, opacity .075s ease, width .15s ease-in-out; + } + &::after { + right: 0; + bottom: ($navbar-toggler-bar-spacing + $navbar-toggler-bar-height) * -1; + transition: bottom .075s .12s ease, transform .075s cubic-bezier(.55, .055, .675, .19), width .15s ease-in-out; + } +} + +.navbar-toggler:not(.active):not([aria-expanded="true"]):hover .navbar-toggler-icon { + &::before, + &::after { + width: $navbar-toggler-bar-width * .75; + } +} + +.navbar-toggler.active, +[aria-expanded="true"] { + .navbar-toggler-icon { + transition-delay: .12s; + transition-timing-function: cubic-bezier(.215, .61, .355, 1); + transform: rotate(45deg); + &::before, + &::after { + width: $navbar-toggler-bar-width; + } + &::before { + top: 0; + opacity: 0; + transition: top .075s ease, opacity .075s .12s ease; + } + &::after { + bottom: 0; + transition: bottom .075s ease, transform .075s .12s cubic-bezier(.215, .61, .355, 1); + transform: rotate(-90deg); + } + } +} + +.navbar-stuck-hide.collapse { + display: block; +} + + +// Generate series of `.navbar-expand-*` responsive classes for configuring +// where your navbar collapses. + +.navbar-expand { + @each $breakpoint in map-keys($grid-breakpoints) { + $next: breakpoint-next($breakpoint, $grid-breakpoints); + $infix: breakpoint-infix($next, $grid-breakpoints); + &#{$infix} { + @include media-breakpoint-up($next) { + .navbar-nav { + > .nav-item > .nav-link { + &::before { + top: auto; + bottom: calc(var(--#{$prefix}nav-link-padding-y) * .875); + left: var(--#{$prefix}navbar-nav-link-padding-x); + width: calc(100% - var(--#{$prefix}navbar-nav-link-padding-x) * 2); + height: var(--#{$prefix}nav-link-underline-border-width); + transform: scaleX(0); + transform-origin: bottom right; + } + + @if $enable-caret { + &.dropdown-toggle::before { + width: calc(100% - $caret-width - $caret-spacing - var(--#{$prefix}navbar-nav-link-padding-x) * 2); + } + } + + &:hover, + &.show, + &:focus-visible, + &.active { + @include underline-action(before); + } + + @if $enable-caret { + &.dropdown-toggle::after { + margin-left: $caret-spacing; + } + } + } + + &:hover { + > .nav-item > .nav-link.active:not(:hover):not(.show):not(:focus-visible) { + &::before { + transform: scaleX(0); + transform-origin: bottom right; + } + } + } + + + .dropdown-menu { + --#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow}; + + &.show { + animation: fade-up .25s ease-in-out; + } + + @if $enable-caret { + .dropend .dropdown-toggle::after { + -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix + mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; + } + .dropstart .dropdown-toggle { + &::after { + display: none; + } + &::before { + display: inline-block; + width: $caret-width; + height: $caret-width; + margin-left: -.25rem; + content: ""; + background-color: currentcolor; + border: 0 !important; + -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix + mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; + -webkit-mask-size: cover; // stylelint-disable-line property-no-vendor-prefix + mask-size: cover; + } + } + } + + .dropend .dropdown-menu, + .dropstart .dropdown-menu { + margin: calc(var(--#{$prefix}dropdown-padding-y) * -1 + var(--#{$prefix}dropdown-border-width) * -1) var(--#{$prefix}dropdown-spacer) 0 var(--#{$prefix}dropdown-spacer) !important; + } + } + } + + &.navbar-dark:not([data-bs-theme="dark"]) .offcanvas .navbar-nav { + --#{$prefix}nav-link-color: var(--#{$prefix}navbar-color); + --#{$prefix}nav-link-hover-color: var(--#{$prefix}navbar-hover-color); + --#{$prefix}navbar-active-color: #{$navbar-dark-active-color}; + --#{$prefix}nav-link-disabled-color: var(--#{$prefix}navbar-disabled-color); + } + + &:not(.navbar-stuck) .dropdown-menu-static { + display: block; + animation: none !important; + } + + &.navbar-stuck { + .navbar-stuck-show { + display: block !important; + } + .navbar-stuck-hide:not(.collapse):not(.collapsing) { + display: none !important; + } + .navbar-stuck-hide.collapse:not(.show) { + display: none; + } + } + } + } + } +} + + +// Sticky navbar + +.navbar-stuck { + animation: navbar-show .25s; +} + +.navbar-sticky.is-stuck, +.navbar-sticky.navbar-stuck { + &.navbar, + .navbar { + background-color: var(--#{$prefix}body-bg); + @include box-shadow($box-shadow); + } + + &.rounded-pill:not(.form-control):not(.badge):not(.btn), + .rounded-pill:not(.form-control):not(.badge):not(.btn) { + border-radius: var(--#{$prefix}border-radius-lg) !important; + border: { + top-left-radius: 0 !important; + top-right-radius: 0 !important; + } + } +} + +@keyframes navbar-show { + from { + transform: translateY(-100%); + } + to { + transform: translateY(0); + } +} + +.sticky-product-banner { + + .sticky-product-banner-inner { + position: absolute; + width: 100%; + transition: transform .3s ease-in-out; + transform: translateY(0); + } + + &:not(.is-stuck) .sticky-product-banner-inner { + 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; + transform: translateY(-100%); + } +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .navbar:not([data-bs-theme="light"]) { + --#{$prefix}navbar-color: #{$navbar-dark-color}; + --#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color}; + --#{$prefix}navbar-disabled-color: #{$navbar-dark-disabled-color}; + --#{$prefix}navbar-active-color: #{$navbar-dark-active-color}; + --#{$prefix}navbar-brand-color: #{$navbar-dark-brand-color}; + --#{$prefix}navbar-brand-hover-color: #{$navbar-dark-brand-hover-color}; + } + .navbar-sticky.is-stuck, + .navbar-sticky.navbar-stuck { + &.navbar:not([data-bs-theme="light"]), + .navbar:not([data-bs-theme="light"]) { + background-color: var(--#{$prefix}body-bg); + @include box-shadow($box-shadow-dark); + } + } + } +} diff --git a/resources/scss/components/_pagination.scss b/resources/scss/components/_pagination.scss new file mode 100644 index 0000000..6684da4 --- /dev/null +++ b/resources/scss/components/_pagination.scss @@ -0,0 +1,49 @@ +// Override Bootstrap's pagination component + +.pagination { + --#{$prefix}pagination-spacer: #{$pagination-spacer}; + --#{$prefix}pagination-font-weight: #{$pagination-font-weight}; + + flex-direction: row; + gap: var(--#{$prefix}pagination-spacer); + margin-bottom: 0; +} + +.page-link { + font-weight: var(--#{$prefix}pagination-font-weight); + + &:hover, + &:focus, + &.active, + .active > & { + z-index: 0; + } + + &:focus { + box-shadow: none; + } + &:focus-visible { + z-index: 4; + color: var(--#{$prefix}pagination-focus-color); + background-color: var(--#{$prefix}pagination-focus-bg); + outline: $pagination-focus-outline; + box-shadow: var(--#{$prefix}pagination-focus-box-shadow); + } + + // Fix icon vertical aligment + [class*=" #{$icon-prefix}"], + [class^="#{$icon-prefix}"] { + margin-top: .125rem; + } +} + + +// Sizing + +.pagination-sm { + @include rfs($pagination-font-size-sm, --#{$prefix}pagination-font-size); +} + +.pagination-lg { + @include rfs($pagination-font-size-lg, --#{$prefix}pagination-font-size); +} diff --git a/resources/scss/components/_popover.scss b/resources/scss/components/_popover.scss new file mode 100644 index 0000000..9e67e00 --- /dev/null +++ b/resources/scss/components/_popover.scss @@ -0,0 +1,32 @@ +// Override default Bootstrap's popover component + +.popover { + --#{$prefix}popover-arrow-border: var(--#{$prefix}border-color); +} + +.popover-header { + padding-bottom: 0; + margin-bottom: -$popover-body-padding-y * .5; + border-bottom: 0; +} + + +// Adding custom popover size that is applied via data-bs-custom-class="popover-sm" + +.popover-sm { + --#{$prefix}popover-max-width: #{$popover-max-width * .75}; + --#{$prefix}popover-body-padding-x: #{$popover-body-padding-x * .75}; + --#{$prefix}popover-body-padding-y: #{$popover-body-padding-y * .75}; + @include rfs($font-size-xs, --#{$prefix}popover-font-size); +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .popover:not([data-bs-theme="light"]) { + --#{$prefix}popover-box-shadow: #{$popover-box-shadow-dark}; + } + } +} diff --git a/resources/scss/components/_progress.scss b/resources/scss/components/_progress.scss new file mode 100644 index 0000000..7fee762 --- /dev/null +++ b/resources/scss/components/_progress.scss @@ -0,0 +1,5 @@ +// Override striped gradient for light progress bar + +.progress-bar-striped.bg-light { + @include gradient-striped(rgba($gray-900, .15), 45deg); +} diff --git a/resources/scss/components/_scrollbar.scss b/resources/scss/components/_scrollbar.scss new file mode 100644 index 0000000..9117f07 --- /dev/null +++ b/resources/scss/components/_scrollbar.scss @@ -0,0 +1,100 @@ +// Custom scrollbar +// based on https://github.com/grsmto/simplebar + + +[data-simplebar] { + --#{$prefix}scrollbar-width: #{$scrollbar-width}; + --#{$prefix}scrollbar-bg: #{$scrollbar-bg}; + --#{$prefix}scrollbar-border-radius: #{$scrollbar-border-radius}; + --#{$prefix}scrollbar-track-width: #{$scrollbar-track-width}; + --#{$prefix}scrollbar-track-bg: #{$scrollbar-track-bg}; +} + +.simplebar-scrollbar { + &::before { + right: 0; + left: 0; + background-color: var(--#{$prefix}scrollbar-bg); + @include border-radius(var(--#{$prefix}scrollbar-border-radius)); + opacity: 1 !important; + transition: none; + } +} + +.simplebar-track { + overflow: initial; + background-color: var(--#{$prefix}scrollbar-track-bg); + @include border-radius(var(--#{$prefix}scrollbar-border-radius)); + opacity: 0; + transition: opacity .15s ease-in-out; + + &.simplebar-vertical { + right: calc(var(--#{$prefix}scrollbar-width) * .5); + width: var(--#{$prefix}scrollbar-track-width); + .simplebar-scrollbar { + left: 50%; + width: var(--#{$prefix}scrollbar-width); + margin-left: calc(var(--#{$prefix}scrollbar-width) * -.5); + &::before { + top: 0; + bottom: 0; + } + } + } + + &.simplebar-horizontal { + bottom: calc(var(--#{$prefix}scrollbar-width) * .5); + height: var(--#{$prefix}scrollbar-track-width); + .simplebar-scrollbar { + top: 50%; + bottom: 0; + height: var(--#{$prefix}scrollbar-width); + margin-top: calc(var(--#{$prefix}scrollbar-width) * -.5); + &::before { + top: 0; + right: 0; + bottom: 0; + left: 0; + } + } + } +} + +.simplebar-wrapper:hover ~ .simplebar-track, +[data-simplebar-auto-hide="false"] .simplebar-track { + opacity: 1; +} + +[data-simplebar]:not(.simplebar-dragging) .simplebar-content-wrapper { + scroll-behavior: smooth; +} + + +// RTL support + +[dir="rtl"] .simplebar-track.simplebar-vertical { + /* rtl:begin:ignore */ + right: auto; + left: 0; + + /* rtl:end:ignore */ +} + + +// Inside accordion item + +.accordion-item .simplebar-track.simplebar-vertical { + right: calc(var(--#{$prefix}scrollbar-width) * 2.25); +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + [data-simplebar]:not([data-bs-theme="light"]) { + --#{$prefix}scrollbar-bg: #{$scrollbar-bg-dark}; + --#{$prefix}scrollbar-track-bg: #{$scrollbar-track-bg-dark}; + } + } +} diff --git a/resources/scss/components/_select-box.scss b/resources/scss/components/_select-box.scss new file mode 100644 index 0000000..d429f98 --- /dev/null +++ b/resources/scss/components/_select-box.scss @@ -0,0 +1,288 @@ +// Single / multiple select with search and sorting, tags components +// based on https://github.com/Choices-js/Choices + +// Reboot plugin's styles + +// stylelint-disable selector-class-pattern +.choices { + margin-bottom: 0; +} + +.choices[data-type*="select-one"] { + &::after { + display: none; + } + + .form-select { + padding-right: 3.25rem; + } + + .choices__button { + right: 0; + left: auto; + margin: { + right: 2rem; + left: 0; + } + background-size: 9px; + box-shadow: none !important; + opacity: .4; + transition: opacity .15s ease-in-out; + + &:hover { + opacity: .8; + } + } +} + +.filter-select:has(.choices__item:not(.choices__placeholder)) { + --#{$prefix}form-control-border-color: #{$input-focus-border-color}; +} + +.choices[data-type*="select-multiple"] .form-select, +.choices[data-type*="text"] .form-select { + padding: $input-btn-padding-y $input-btn-padding-y ($input-btn-padding-y - .25rem) $input-btn-padding-y; + background-image: none; + + &.form-select-lg { + padding: $input-btn-padding-y-lg $input-btn-padding-y-lg ($input-btn-padding-y-lg - .25rem) $input-btn-padding-y-lg; + } + + &.form-select-sm { + padding: $input-btn-padding-y-sm $input-btn-padding-y-sm ($input-btn-padding-y-sm - .25rem) $input-btn-padding-y-sm; + } +} + +.choices__placeholder { + color: $input-placeholder-color; + opacity: 1; +} + +.is-focused .form-select { + border-color: var(--#{$prefix}form-control-focus-border-color); +} + +.is-disabled .form-select { + color: $input-disabled-color; + background-color: $input-disabled-bg; + border-color: $input-disabled-border-color; + border-style: dashed; +} + +.choices__list--dropdown, +.choices__list[aria-expanded] { + z-index: 10; + padding: $dropdown-padding-y $dropdown-padding-x; + margin: $dropdown-spacer * 1.25 0 !important; + font-size: $dropdown-font-size; + background-color: $dropdown-bg; + border: $dropdown-border-width solid $dropdown-border-color !important; + @include border-radius($dropdown-border-radius !important); + @include box-shadow($dropdown-box-shadow !important); + + .choices__placeholder { + display: none !important; + } + + .choices__list { + max-height: 240px; + } +} + +.choices__list--single { + display: flex; + padding: 0; + + .choices__item { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +} + +.choices__list--dropdown .choices__item, +.choices__list[aria-expanded] .choices__item { + display: flex; + align-items: center; + padding: $dropdown-item-padding-y $dropdown-item-padding-x !important; + color: $dropdown-link-color; + @include border-radius($dropdown-item-border-radius !important); + + &.is-highlighted { + color: $dropdown-link-active-color; + background-color: $dropdown-link-active-bg; + } +} + +.choices .choices__input { + padding: { + top: .25rem; + right: 0; + bottom: .25rem; + left: .375rem; + } + margin: 0; + margin-bottom: .25rem; + color: $input-color; + background-color: transparent !important; + + &::placeholder { + color: $input-placeholder-color; + opacity: 1; + } +} + +.choices:not([data-type*="select-multiple"]):not([data-type*="text"]) .choices__input { + padding-left: 1.75rem !important; + margin: { + top: -.375rem !important; + bottom: $dropdown-spacer * 1.25 !important; + } + background: escape-svg(url("data:image/svg+xml,")) no-repeat .125rem .75rem; + border-color: var(--#{$prefix}border-color) !important; +} + +.choices__list--dropdown .choices__item--selectable, +.choices__list[aria-expanded] .choices__item--selectable { + &::after { + flex-shrink: 0; + width: $dropdown-font-size * 1.5; + height: $dropdown-font-size * 1.5; + margin: { + top: .1875rem; + right: -.25rem; + left: auto; + } + content: ""; + background-color: currentcolor; + opacity: 0; + -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix + mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; + -webkit-mask-size: cover; // stylelint-disable-line property-no-vendor-prefix + mask-size: cover; + } + + &.is-highlighted::after { + opacity: .85; + } +} + +.choices__heading { + padding: 1rem $dropdown-item-padding-x .75rem; + margin-bottom: $dropdown-spacer * 1.25; + font: { + size: $font-size-sm; + weight: $headings-font-weight; + } + color: var(--#{$prefix}heading-color); + border-color: var(--#{$prefix}border-color); +} + +.choices.is-disabled .choices__list--multiple .choices__item, +.choices__list--multiple .choices__item { + background-color: var(--#{$prefix}emphasis-color); + border-color: var(--#{$prefix}emphasis-color); + margin: { + right: .25rem; + bottom: .25rem; + } + + .choices__button { + padding: { + right: .375rem; + left: 1rem; + } + margin: { + right: -.25rem; + left: .5rem; + } + border: { + right: 0; + left: 1px solid rgba($white, .3); + } + } + + &.is-highlighted { + background-color: var(--#{$prefix}secondary-color); + border-color: var(--#{$prefix}secondary-color); + } +} + +.choices.is-disabled .choices__list--multiple .choices__item { + opacity: .45; +} + + +// Validation + +.was-validated .choices:has(.form-select:invalid), +.choices:has(.is-invalid) { + .form-select { + border-color: var(--#{$prefix}form-invalid-border-color); + } + ~ .invalid-feedback, + ~ .invalid-tooltip { + display: block; + } +} +.was-validated .choices:has(.form-select:valid), +.choices:has(.is-valid) { + ~ .valid-feedback, + ~ .valid-tooltip { + display: block; + } +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .choices[data-type*="select-one"] .choices__button { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=="); + } + + .choices.is-disabled .choices__list--multiple .choices__item, + .choices__list--multiple .choices__item { + color: $dark; + + .choices__button { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=="); + border-color: $gray-300; + } + } + + .filter-select:has(.choices__item:not(.choices__placeholder)) { + --#{$prefix}form-control-border-color: #{$input-focus-border-color-dark}; + } + + .choices:has([data-bs-theme="light"]) { + .form-select { + --#{$prefix}form-control-bg: #{$input-bg}; + --#{$prefix}form-control-border-color: #{$input-border-color}; + --#{$prefix}form-control-focus-bg: #{$input-focus-bg}; + --#{$prefix}form-control-focus-border-color: #{$input-focus-border-color}; + --#{$prefix}form-select-bg-img: #{escape-svg($form-select-indicator)}; + } + + .choices__button { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=="); + } + + .choices.is-disabled .choices__list--multiple .choices__item, + .choices__list--multiple .choices__item { + color: $white; + + .choices__button { + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=="); + border-color: rgba($white, .3); + } + } + + .filter-select:has(.choices__item:not(.choices__placeholder)) { + --#{$prefix}form-control-border-color: #{$input-focus-border-color}; + } + } + } +} +// stylelint-enable selector-class-pattern diff --git a/resources/scss/components/_tables.scss b/resources/scss/components/_tables.scss new file mode 100644 index 0000000..8a5cfd5 --- /dev/null +++ b/resources/scss/components/_tables.scss @@ -0,0 +1,33 @@ +// Tables + +.table { + --#{$prefix}table-th-color: #{$table-th-color}; + + thead th, + tbody th { + color: var(--#{$prefix}table-th-color) !important; + } + + &.table-dark th, + .table-dark th { + color: $white !important; + } +} + + +// Dark mode + +@if $enable-dark-mode { + @include color-mode(dark) { + .table:not([data-bs-theme="light"]) { + --#{$prefix}table-striped-bg: #{$table-striped-bg-dark}; + --#{$prefix}table-active-bg: #{$table-active-bg-dark}; + --#{$prefix}table-hover-bg: #{$table-hover-bg-dark}; + } + + .table-dark { + --#{$prefix}table-bg: var(--#{$prefix}dark); + --#{$prefix}table-border-color: #{$table-border-color}; + } + } +} diff --git a/resources/scss/components/_toasts.scss b/resources/scss/components/_toasts.scss new file mode 100644 index 0000000..db50706 --- /dev/null +++ b/resources/scss/components/_toasts.scss @@ -0,0 +1,25 @@ +// Override default Bootstrap's toast component + +.toast { + padding: var(--#{$prefix}toast-padding-y) var(--#{$prefix}toast-padding-x); + + .btn-close { + --#{$prefix}btn-close-size: .625em; + margin-top: .125rem; + } +} + +.toast-header, +.toast-body { + padding: 0; + + .btn-close { + --#{$prefix}btn-close-size: .625em; + margin: .125rem 0 0; + } +} + +.toast-header { + margin-bottom: var(--#{$prefix}toast-padding-y); + border: 0; +} diff --git a/resources/scss/components/_tooltip.scss b/resources/scss/components/_tooltip.scss new file mode 100644 index 0000000..559bced --- /dev/null +++ b/resources/scss/components/_tooltip.scss @@ -0,0 +1,8 @@ +// Adding custom tooltip size that is applied via data-bs-custom-class="tooltip-sm" + +.tooltip-sm { + --#{$prefix}tooltip-padding-x: #{$tooltip-padding-x * .75}; + --#{$prefix}tooltip-padding-y: #{$tooltip-padding-y * .75}; + @include rfs($font-size-xs, --#{$prefix}tooltip-font-size); + --#{$prefix}tooltip-border-radius: var(--#{$prefix}border-radius-xs); +} diff --git a/resources/scss/components/_type.scss b/resources/scss/components/_type.scss new file mode 100644 index 0000000..0a9730a --- /dev/null +++ b/resources/scss/components/_type.scss @@ -0,0 +1,62 @@ +// Typography related styles + +// Headings +/* stylelint-disable @stylistic/selector-list-comma-newline-after */ + +h1, .h1 { + line-height: $h1-line-height; +} + +h2, .h2 { + line-height: $h2-line-height; +} + +h3, .h3 { + line-height: $h3-line-height; +} + +h4, .h4 { + line-height: $h4-line-height; +} + +h5, .h5 { + line-height: $h4-line-height; +} + +h6, .h6 { + line-height: $h4-line-height; +} + + +// Link inside headings + +h1, .h1, h2, .h2, h3, .h3, +h4, .h4, h5, .h5, h6, .h6 { + a { + color: var(--#{$prefix}heading-color); + text-decoration: none; + } +} +/* stylelint-enable @stylistic/selector-list-comma-newline-after */ + + +// Blockquote + +.blockquote { + font-weight: $blockquote-font-weight; + color: $blockquote-color; +} + +.blockquote-footer { + margin-top: -$blockquote-margin-y * .5; +} + + +// Inline list + +.list-inline { + flex-direction: row; + flex-wrap: wrap; + gap: $spacer * .625 $list-inline-padding; + margin-bottom: $spacer * .75; +} diff --git a/resources/scss/theme.scss b/resources/scss/theme.scss new file mode 100644 index 0000000..55a08d0 --- /dev/null +++ b/resources/scss/theme.scss @@ -0,0 +1,26 @@ +/*! + * Cartzilla | Multipurpose E-Commerce Bootstrap HTML Template + * Copyright 2024 Coderthemes + * Theme styles +*/ + +// User variables +@import "user-variables"; + +// // Configuration & utilities +@import "fonts"; +@import "variables"; +@import "variables-dark"; +@import "utilities"; + +// Bootstrap +@import "bootstrap"; + +// Layout, animations & components +@import "root"; +@import "reboot"; +@import "animations"; +@import "components"; + +// User custom styles +@import "user"; diff --git a/resources/views/404/electronics.blade.php b/resources/views/404/electronics.blade.php new file mode 100644 index 0000000..7fec3bc --- /dev/null +++ b/resources/views/404/electronics.blade.php @@ -0,0 +1,116 @@ +@extends('layouts.base', ['title' => 'Electronics Store - 404 Error']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + +
+

Page not found

+

The page you are looking for was moved, removed or might never existed.

+ Go to homepage +
+ +
+
+
+ + +
+

iPhone 14

+

Apple iPhone 14 128GB Blue

+ + From $899 + + +
+
+
+ iPhone 14 +
+
+
+
+
+
+ + +
+ +

Deal of the week

+

iPad Pro M1

+
+ +
+ iPad +
+
+
+
+
+
+
+ + +
+
+

+ © All rights reserved. Made by Coderthemes +

+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/404/fashion.blade.php b/resources/views/404/fashion.blade.php new file mode 100644 index 0000000..d06ffb4 --- /dev/null +++ b/resources/views/404/fashion.blade.php @@ -0,0 +1,1088 @@ +@extends('layouts.base', ['title' => 'Fashion Store - 404 Error']) + +@section('content') + @include('layouts.partials.offcanvas') + + + + + +
+
+
+ +
+
+
🎉 Free Shipping on orders over $250. Don't miss a discount!
+
💰 Money back guarantee. We return money within 30 days.
+
💪 Friendly 24/7 customer support. We've got you covered!
+
+
+ +
+ +
+
+ + + + + + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

We lost that page...

+

The page you are looking for was moved, removed or + might never existed. Here some helpful links:

+
+ + +
+
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+

+ © All rights reserved. Made by Coderthemes +

+
+
+ +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/404/furniture.blade.php b/resources/views/404/furniture.blade.php new file mode 100644 index 0000000..0415a1d --- /dev/null +++ b/resources/views/404/furniture.blade.php @@ -0,0 +1,103 @@ +@extends('layouts.base', ['title' => 'Furniture Store - 404 Error']) + +@section('content') + +
+
+

Shopping cart

+ +
+
+ + + + +
Your shopping cart is currently empty!
+

Explore our wide range of products and add items to your cart to proceed with your + purchase.

+ Continue shopping +
+
+ + @include('layouts.partials/navbar2') + +
+
+ +
+
+ + + + + + + + + +

We lost that page ...

+

The page you are looking for was moved, removed or might + never existed. Here some helpful links:

+
+ + +
+ +
+ + +
+ +
+ Chair +
+
+
+ + +
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/404/grocery.blade.php b/resources/views/404/grocery.blade.php new file mode 100644 index 0000000..cc73a67 --- /dev/null +++ b/resources/views/404/grocery.blade.php @@ -0,0 +1,353 @@ +@extends('layouts.base', ['title' => 'Grocery Store - 404 Error']) + +@section('content') + @include('layouts.partials/offcanvas2') + + +
+ + +
+
+

Delivery options

+ +
+ +
+ +
+ + +
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+ +
+
Add an address to start ordering
+ + + Find on map + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+
+ +
+
+ + +
+
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+
+ + +
+
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+
+ + +
+
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+
+ + +
+ +
+
Select a suitable store
+ + + Find on map + +
+
+ + +
+
+ + +
+
Found stores:
+
+ +
+ +
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+ +
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+ +
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+ + + +
+
+ + +
+ +
+
+ + + @include('layouts.partials/menu-offcanvas') + + @include('layouts.partials/checkout-navbar') + + +
+
+
+
+
+ Lemon +
+ + + +
+
+

Whoops! That page is missing...

+

The page you are looking for was moved, removed or might + never existed.

+ Go to homepage +
+
+
+ Background image + Background image +
+ + +
+
+

+ © All rights reserved. Made by Coderthemes +

+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/about/v1.blade.php b/resources/views/about/v1.blade.php new file mode 100644 index 0000000..6cadd13 --- /dev/null +++ b/resources/views/about/v1.blade.php @@ -0,0 +1,538 @@ +@extends('layouts.landing', ['title' => 'About v.1']) + +@section('content') + @include('layouts.partials/navbar', ['wishlist' => true]) + + +
+ + + + + + +
+
+ + +
+
+
+ Image +
+
+ + +
+
+ + +
+

Cartzilla - More than a retailer

+

Since 2015, we have been fulfilling + the small dreams and big plans of millions of people. You can find literally everything + here.

+ + Learn more + + +
+
+
+
+
+ + + +
+
+
+
14k
+

products available for purchase

+
+
+
120m
+

users visited site from 2015

+
+
+
800+
+

employees around the world

+
+
+
92%
+

of our customers return

+
+
+
+ + + +
+
+

Mission

+

The best products at fair prices

+

"We believe that things exist to make life easier, more pleasant and + kinder. That's why the search for the right thing should be quick, convenient and enjoyable. We do not + just sell household appliances and electronics, but comfort and accessibility."

+ Avatar +
William Lacker, Cartzilla CEO
+
+
+ + + +
+
+
+
+ Image +
+
+
+
+

Principles

+

The main principles that will allow us to grow

+

Cartzilla is a comprehensive solution to fulfill any customer's needs, serving + as both the starting point and end destination of their search. It operates as a reliable + assistant, dedicated to eliminating the need for any unpleasant compromises, making their dreams + a reality, and empowering them to think big.

+ + +
+ + +
+

+ +

+
+
We prioritize understanding and anticipating our + customers' needs, delivering an exceptional and personalized experience from start + to finish.
+
+
+ + +
+

+ +

+
+
We value a solid reputation built on integrity, + transparency, and quality - ensuring our customers trust and rely on our brand. +
+
+
+ + +
+

+ +

+
+
We've streamlined our process for speed, convenience, and + an enjoyable shopping experience, redefining online standards for our delighted + customers.
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+

Values

+

Simple values to achieve goals

+
+ + +
+ + +
+
+
+ +
+
+
+
+ + +
+
+
+
+ + People +
+

The most important value of the Company is people + (employees, partners, clients). Behind any success there is, first and + foremost, a specific person. It is he who creates the product, technology, + and innovation.

+
+
+
+ + +
+
+
+
+ + Service +
+

Care, attention, desire and ability to be helpful (to a + colleague in his department, other departments, clients, customers and all + other people who surround us).

+
+
+
+ + +
+
+
+
+ + Responsibility +
+

Responsibility is our key quality. We don't shift it to + external circumstances or other people. If we see something that could be + improved, we don't just criticize, but offer our own options.

+
+
+
+ + +
+
+
+
+ + Innovation +
+

We foster a culture of continuous improvement and + innovation. Embracing change and staying ahead of the curve are essential + for our success. We encourage creative thinking, experimentation, and the + pursuit of new ideas.

+
+
+
+ + +
+
+
+
+ + Leadership +
+

Cartzilla people are young, ambitious and energetic + individuals. With identified leadership qualities, with a desire to be the + best at what they do.

+
+
+
+ + +
+
+
+
+ + Sustainability +
+

We are committed to minimizing our environmental impact and + promoting sustainable practices. From responsible sourcing to eco-friendly + packaging, we aim to make a positive contribution to the well-being of our + planet.

+
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+ Image + +
+
+
+
+
+

The role of philanthropy in building a better world

+

Charitable contributions are a vital aspect of + building a better world. These contributions come in various forms, including monetary + donations...

+ Learn more +
+
+
+
+
+ + + +
+
+
+

Career

+

Open positions

+
+ + +
+ + +
+
+ + + +
+ + + +
+
+
+
+

Sign up to our newsletter

+

Receive our latest updates about our products & promotions +

+
+
+ +
+ +
+ +
+ +
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/about/v2.blade.php b/resources/views/about/v2.blade.php new file mode 100644 index 0000000..a88a7bc --- /dev/null +++ b/resources/views/about/v2.blade.php @@ -0,0 +1,461 @@ +@extends('layouts.landing', ['title' => 'About v.2']) + +@section('content') + +
+
+

Shopping cart

+ +
+
+ + + + +
Your shopping cart is currently empty!
+

Explore our wide range of products and add items to your cart to proceed with your + purchase.

+ Continue shopping +
+
+ + @include('layouts.partials/navbar2') + + +
+ + +
+
+

Welcome to Furniture

+

We believe that quality furniture is available to everyone

+
+
+
+ Image +
+ + + Play + +
+
+ + + +
+
+
+ + + +

Eco-friendly

+

Decorate your space with eco-friendly furniture with low VOCs, + environmentally friendly materials and safe coatings.

+
+
+ + + +

Unbeatable quality

+

We choose raw materials from the best manufacturers, so our furniture and + decor are of the highest quality at the best prices.

+
+
+ + + +

Delivery to your door

+

We will deliver to your door anywhere in the world. If you're not 100% + satisfied, let us know within 30 days and we'll solve the problem.

+
+
+
+ + + +
+

+ Design that inspires a better way to work +

+
+
+
+
+ Image +
+
+
+
+

Decorate your space with eco-friendly furniture

+

Eco-friendly furniture help reduce your carbon footprint, but it also provides a healthier living + environment for you and your loved ones. It crafted with sustainable materials such as bamboo, + reclaimed wood, or recycled plastic.

+
+
+ 75% + our products are made of natural and eco-friendly materials +
+
+
+
+
+
+
+
+ Image +
+
+
+
+

Quality in every detail

+

We always choose raw materials from the best manufacturers, so our furniture and decor are of the + highest quality in every detail at the best prices.

+
+
+
+

"Every Cartzilla project is an opportunity to create value for + homeowners on many levels. Working with materials from the best manufacturers is an + added bonus."

+
+ +
+
+
+
+
+ + + +
+
+
+
+

Three defining features +

+ View catalog +
+
+
+
+
+ Image +

Customer focus

+

We give each client as much attention and time as + necessary to understand their wishes and get the perfect result that will satisfy + the client in full.

+
+
+ Image +

Attention to the details

+

We are convinced that the devil is in the details, and + there are no insignificant details, so we carefully monitor everything - from the + supply and selection of high-quality wood to the finest work during the furniture + finishing.

+
+
+ Image +

Betting on reputation

+

Responsible for the integrity, quality and adherence to + deadlines in the production of orders, because the professional reputation of the + workshop is crucial.

+
+
+
+
+
+
+
+ + + +
+
+ + + + + +
+
+

Our stores

+ +
+ +
+
+
+
+ + + +
+ + +
+

Blog and news

+ +
+ + +
+
+ + + + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/addresses.blade.php b/resources/views/account/addresses.blade.php new file mode 100644 index 0000000..47cd01e --- /dev/null +++ b/resources/views/account/addresses.blade.php @@ -0,0 +1,283 @@ +@extends('layouts.account', ['title' => 'Account - Addresses']) + +@section('content') + +
+
+ + +

Addresses

+ + +
+ +
+
    +
  • New York 11741, USA
  • +
  • 396 Lillian Bolavandy, Holbrook
  • +
+
+
+
+
+
+ + +
Please select your country!
+
+
+
+
+ + +
Please select your city!
+
+
+
+
+ + +
Please enter your ZIP code!
+
+
+
+
+ + +
Please enter your address!
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+ +
+
    +
  • Florida 32806, USA
  • +
  • 514 S. Magnolia St., Orlando
  • +
+
+
+
+
+
+ + +
Please select your country!
+
+
+
+
+ + +
Please select your city!
+
+
+
+
+ + +
Please enter your ZIP code!
+
+
+
+
+ + +
Please enter your address!
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + + +
+
+ +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/info.blade.php b/resources/views/account/info.blade.php new file mode 100644 index 0000000..93d2bbb --- /dev/null +++ b/resources/views/account/info.blade.php @@ -0,0 +1,203 @@ +@extends('layouts.account', ['title' => 'Account - Personal Info']) + +@section('content') + +
+
+ +

Personal info

+ +
+ +
+
    +
  • Susan Gardner
  • +
  • May 12, 1996
  • +
  • English
  • +
+
+
+
+
+ +
+ +
Please enter your first name!
+
+
+
+ +
+ +
Please enter your last name!
+
+
+
+ +
+ + +
+
+
+ + +
+
+
+ + +
+
+
+
+
+ +
+ +
+
    +
  • susan.gardner@email.com
  • +
  • +1 (805) 348 95 72 Verified
  • +
+
+
+
+
+ +
+ +
Please enter a valid email address!
+
+
+
+ +
+ +
Please enter your phone number!
+
+
+
+
+ + +
+
+
+
+
+ +
+ +
+
    +
  • **************
  • +
+
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+
+
+
+
+ +
+

Delete account

+

When you delete your account, your public profile will be deactivated + immediately. If you change your mind before the 14 days are up, sign in with your email and + password, and we'll send you a link to reactivate your account.

+ Delete account +
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/marketplace-dashboard.blade.php b/resources/views/account/marketplace-dashboard.blade.php new file mode 100644 index 0000000..e5db9e6 --- /dev/null +++ b/resources/views/account/marketplace-dashboard.blade.php @@ -0,0 +1,328 @@ +@extends('layouts.marketplace', ['title' => 'Marketplace Account - Dashboard']) + +@section('content') + +
+ +
+

Dashboard

+
+ + +
+
+ +
+
+
+

Earnings (before taxes)

+
$842.00
+

Sales 01/09/2024 - 13/09/2024

+
+
+
+
+

Your balance

+
$735.00
+

To be paid on 15/09/2024

+
+
+
+
+

Lifetime earnings

+
$9,156.74
+

Based on list price

+
+
+
+ +
+
+

Earnings history

+ +
+
+ +
+
+
+

Most recent sales

+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Product + + + + Status + + + + +
+
+
+ Image +
+
+ Pending +
+ iPhone + 15 pro mockups +
+
$19.00
+
June 30, 2024
+
+
+
June 30, 20241719745200 + Pending + $19.00$14.25
+
+
+ Image +
+
+ Completed +
+ A + collection of colorful + items +
+
$21.00
+
June 29, 2024
+
+
+
June 29, 20241719658800 + Completed + $21.00$15.75
+
+
+ Image +
+
+ Completed +
+ House + plants website + template +
+
$35.00
+
June 28, 2024
+
+
+
June 28, 20241719572400 + Completed + $35.00$26.25
+
+
+ Image +
+
+ Completed +
+ A + stunning set of tablet pro + mockups +
+
$18.00
+
June 27, 2024
+
+
+
June 27, 20241719486000 + Completed + $18.00$13.50
+
+
+ Image +
+
+ Canceled +
+ Multi + device mockup PSD +
+
$27.00
+
June 26, 2024
+
+
+
June 26, 20241719399600 + Canceled + $27.00$0.00
+ +
+
Showing 5 of 20 results +
+ +
+
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/marketplace-favorites.blade.php b/resources/views/account/marketplace-favorites.blade.php new file mode 100644 index 0000000..706db6e --- /dev/null +++ b/resources/views/account/marketplace-favorites.blade.php @@ -0,0 +1,306 @@ +@extends('layouts.marketplace', ['title' => 'Marketplace Account - Favorites']) + +@section('content') +
+ + +
+

Favorites

+
+ +
+
+ + +
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
17 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
132 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
56 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+ +
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
47 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
34 sales
+
+
+
+
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/marketplace-payouts.blade.php b/resources/views/account/marketplace-payouts.blade.php new file mode 100644 index 0000000..eeaa54f --- /dev/null +++ b/resources/views/account/marketplace-payouts.blade.php @@ -0,0 +1,211 @@ +@extends('layouts.marketplace', ['title' => 'Marketplace Account - Payouts']) + +@section('content') + +
+ +

Payouts

+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Payout method + + + + Status +
$1,233.84123384PayPalAugust 16, 20241723838358 + + In transit + + +
$805.7980579 + PayPalAugust 2, 20241722628758 + Deposited + + +
$1,564.98156498PayoneerJuly 16, 20241721159958 + Deposited + + +
$942.5094250 + PayPalJuly 2, 20241719950358 + Deposited + + +
$1,759.35175935PayoneerJune 16, 20241718567958 + Deposited + + +
$2,060.80206080PayoneerJune 2, 20241717358358 + Returned + + +
$493.2649326 + SWIFTMay 16, 20241715889558 + Deposited + + +
$654.7565475 + SWIFTMay 2, 20241714679958 + Deposited + + +
+
+ +
+
Showing 8 of 30 results
+ +
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/marketplace-products.blade.php b/resources/views/account/marketplace-products.blade.php new file mode 100644 index 0000000..0793924 --- /dev/null +++ b/resources/views/account/marketplace-products.blade.php @@ -0,0 +1,369 @@ +@extends('layouts.marketplace', ['title' => 'Marketplace Account - Products']) + +@section('content') + +
+
+ +
+

Products (4)

+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Product + + Status + + + + + + Action +
+
+
+ Image +
+
+ Active +
+ iPhone 15 pro mockups +
+
+
$19
+
+
+ + 13 +
+
+ + 4 +
+
+
+
Sales: 47
+
Earnings: $669.75
+
+
+
+ Active + 47$669.7566975 + +
+
+
+ Image +
+
+ Active +
+ 3D box mockup bold rebrand +
+
+
$16
+
+
+ + 25 +
+
+ + 2 +
+
+
+
Sales: 56
+
Earnings: $672.00
+
+
+
+ Active + 56$672.0067200 + +
+
+
+ Image +
+
+ Active +
+ Smartphone mockups for UI + designs +
+
+
$18
+
+
+ + 36 +
+
+ + 8 +
+
+
+
Sales: 152
+
Earnings: $2,052.00
+
+
+
+ Active + 152$2,052.00205200 + +
+
+
+ Image +
+
+ Archived +
+ Multi device mockup PSD +
+
+
$27
+
+
+ + 9 +
+
+ + 12 +
+
+
+
Sales: 43
+
Earnings: $870.75
+
+
+
+ Archived + 43$870.7587075 + +
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/marketplace-purchases.blade.php b/resources/views/account/marketplace-purchases.blade.php new file mode 100644 index 0000000..3532ca6 --- /dev/null +++ b/resources/views/account/marketplace-purchases.blade.php @@ -0,0 +1,380 @@ +@extends('layouts.marketplace', ['title' => 'Marketplace Account - Purchases']) + +@section('content') + +
+
+ +
+

Purchases (6)

+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Product + + + + License +
+
+
+
+
+ Image +
+
+
+ Smart watches series 9 mockup +
+
+
+
+
+ Avatar +
+
+ MD Studio +
+
in
+
Mockups
+
+ +
License: Standard
+
Date: + July 28, 2024
+ + +
+
+
July 28, 20241722164400Standard + +
+
+
+
+
+ Image +
+
+
+ Gradient glassmorphism icons + set +
+
+
+
+
+ Avatar +
+
+ Magic FS +
+
in
+
Vectors
+
+ +
License: Standard
+
Date: + July 5, 2024
+ + +
+
+
July 5, 20241720177200Standard + +
+
+
+
+
+ Image +
+
+
+ A stunning set of tablet pro + mockups +
+
+
+
+
+ Avatar +
+
+ Fireby +
+
in
+
Mockups
+
+ +
License: Extended
+
Date: May 30, 2024
+ + +
+
+
May 30, 20241717066800Extended + +
+
+
+
+
+ Image +
+
+
+ Isometric smartphone mockups +
+
+
+
+
+ Avatar +
+
+ MD Studio +
+
in
+
Mockups
+
+ +
License: Standard
+
Date: April 19, 2024
+ + +
+
+
April 19, 20241713524400Standard + +
+
+
+
+
+ Image +
+
+
+ House plants website template +
+
+
+
+
+ Avatar +
+
+ Magic FS +
+
in
+
Templates
+
+ +
License: Extended
+
Date: April 12, 2024
+ + +
+
+
April 12, 20241712919600Extended + +
+
+
+
+
+ Image +
+
+
+ A collection of colorful items +
+
+
+
+
+ Avatar +
+
+ Fireby +
+
in
+
3D illustration
+
+ +
License: Standard
+
Date: March 3, 2024
+ + +
+
+
March 3, 20241709467200Standard + +
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/marketplace-sales.blade.php b/resources/views/account/marketplace-sales.blade.php new file mode 100644 index 0000000..6ba3f64 --- /dev/null +++ b/resources/views/account/marketplace-sales.blade.php @@ -0,0 +1,324 @@ +@extends('layouts.marketplace', ['title' => 'Marketplace Account - Sales']) + +@section('content') + +
+
+ +
+

Sales

+
+
+ + +
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Product + + + + Status + + + + +
+
+
+ Image +
+
+ Pending +
+ Smart watches series 9 mockup +
+
$15.00
+
June 30, 2024
+
+
+
June 30, 20241719745200 + Pending + $15.00$11.25
+
+
+ Image +
+
+ Completed +
+ 3D box mockup bold rebrand +
+
$16.00
+
June 29, 2024
+
+
+
June 29, 20241719658800 + Completed + $16.00$12.00
+
+
+ Image +
+
+ Completed +
+ iPhone 15 pro mockups +
+
$19.00
+
June 29, 2024
+
+
+
June 29, 20241719658800 + Completed + $19.00$14.25
+
+
+ Image +
+
+ Completed +
+ A collection of colorful items +
+
$21.00
+
June 28, 2024
+
+
+
June 28, 20241719572400 + Completed + $21.00$15.75
+
+
+ Image +
+
+ Completed +
+ House plants website template +
+
$35.00
+
June 27, 2024
+
+
+
June 27, 20241719486000 + Completed + $35.00$26.25
+
+
+ Image +
+
+ Completed +
+ Isometric smartphone mockups +
+
$24.00
+
June 26, 2024
+
+
+
June 26, 20241719399600 + Completed + $24.00$18.00
+
+
+ Image +
+
+ Completed +
+ A stunning set of tablet pro + mockups +
+
$18.00
+
June 26, 2024
+
+
+
June 26, 20241719399600 + Completed + $18.00$13.50
+
+
+ Image +
+
+ Canceled +
+ Multi device mockup PSD +
+
$27.00
+
June 25, 2024
+
+
+
June 25, 20241719313200 + Canceled + $27.00$0.00
+ +
+
Showing 8 of 30 results
+ +
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/marketplace-settings.blade.php b/resources/views/account/marketplace-settings.blade.php new file mode 100644 index 0000000..9451379 --- /dev/null +++ b/resources/views/account/marketplace-settings.blade.php @@ -0,0 +1,285 @@ +@extends('layouts.marketplace', ['title' => 'Marketplace Account - Settings']) + +@section('content') + +
+ +

Settings

+ +
+ +
+ +
+ +
+ +
+
+ Avatar +
+ + +
+
+
+

Your profile picture will appear on your + profile and listings. PNG or JPG no bigger than 500px wide and tall.

+ +
+
+ +
+
+
+ + +
Enter your first name!
+
+
+ + +
Enter your last name!
+
+
+ + +
Enter a valid email address!
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ +
+ +
+
+
+ +
+ +
Incorrect password. Please try + again.
+ +
+
+
+
+
+ +
+ +
Please ensure password is at least + 8 characters long.
+ +
+
+
+ +
+ +
Passwords do not match.
+ +
+
+
+
+ + +
+
+ +

Delete account

+

When you delete your account, your public profile will be deactivated + immediately. If you change your mind before the 14 days are up, sign in with your email and + password, and we'll send a link to reactivate account.

+
+ + +
+ Delete account +
+ +
+
+
+
+
+
+ Mastercard + Primary +
+
**** **** **** 8341
+
Expired 05/24
+
+ +
+
+
+
+
+
+ Visa + Visa + +
+
**** **** **** 1276
+
Expiration 01/27
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/notifications.blade.php b/resources/views/account/notifications.blade.php new file mode 100644 index 0000000..4b0682f --- /dev/null +++ b/resources/views/account/notifications.blade.php @@ -0,0 +1,103 @@ +@extends('layouts.account', ['title' => 'Account - Notifications']) + +@section('content') + +
+
+ + + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +

Communication channels

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/orders.blade.php b/resources/views/account/orders.blade.php new file mode 100644 index 0000000..4eee6f3 --- /dev/null +++ b/resources/views/account/orders.blade.php @@ -0,0 +1,386 @@ +@extends('layouts.account', ['title' => 'Account - Orders History']) + +@section('content') + +
+
+ +
+
+

Orders

+
+
+
+
+ +
+
+ +
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Order # + + + + Status + + +  
+ + 78A6431D409 + +
    +
  • Feb 6, 2025
  • +
  • + + In progress +
  • +
  • $2,105.90
  • +
+
+ Feb 6, 2025 + 25-02-06 + + + + In progress + + + $2,105.90 + 210590 + + + Thumbnail + Thumbnail + Thumbnail + + + + +
+ + 47H76G09F33 + +
    +
  • Dec 12, 2024
  • +
  • + + Delivered +
  • +
  • $360.75
  • +
+
+ Dec 12, 2024 + 24-12-12 + + + + Delivered + + + $360.75 + 36075 + + + Thumbnail + + + + +
+ + 502TR872W2 + +
    +
  • Nov 7, 2024
  • +
  • + + Delivered +
  • +
  • $4,268.00
  • +
+
+ Nov 7, 2024 + 24-11-07 + + + + Delivered + + + $4,268.00 + 426800 + + + Thumbnail + Thumbnail + Thumbnail + +3 + + + + +
+ + 34VB5540K83 + +
    +
  • Sep 15, 2024
  • +
  • + + Canceled +
  • +
  • $987.50
  • +
+
+ Sep 15, 2024 + 24-09-15 + + + + Canceled + + + $987.50 + 98750 + + + Thumbnail + Thumbnail + + + + +
+ + 112P45A90V2 + +
    +
  • May 12, 2024
  • +
  • + + Delivered +
  • +
  • $53.00
  • +
+
+ May 12, 2024 + 24-05-12 + + + + Delivered + + + $53.00 + 5300 + + + Thumbnail + + + + +
+ + 28BA67U0981 + +
    +
  • Apr 20, 2024
  • +
  • + + Canceled +
  • +
  • $1,029.50
  • +
+
+ Apr 20, 2024 + 24-04-20 + + + + Canceled + + + $1,029.50 + 102950 + + + Thumbnail + Thumbnail + + + + +
+
+ + +
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/password-recovery.blade.php b/resources/views/account/password-recovery.blade.php new file mode 100644 index 0000000..11bf455 --- /dev/null +++ b/resources/views/account/password-recovery.blade.php @@ -0,0 +1,83 @@ +@extends('layouts.landing', ['title' => 'Account - Password Recovery']) + +@section('content') +
+
+ +
+ + +

Forgot password?

+

Enter the email address you used when you joined and we’ll send you instructions to + reset your password

+ +
+
+ + +
Please enter a vaild email address!
+
+ +
+ + +
+ +
+
+ + +
+ Girl +
+
+
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/payment.blade.php b/resources/views/account/payment.blade.php new file mode 100644 index 0000000..a5cd0a6 --- /dev/null +++ b/resources/views/account/payment.blade.php @@ -0,0 +1,70 @@ +@extends('layouts.account', ['title' => 'Account - Payment Methods']) + +@section('content') + +
+
+ +

Payment methods

+ +
+
+
+
+
+ Mastercard + Primary +
+
**** **** **** 8341
+
Expired 05/24
+
+ +
+
+
+
+
+
+ Visa + Visa + +
+
**** **** **** 1276
+
Expiration 01/27
+
+ +
+
+ +
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/reviews.blade.php b/resources/views/account/reviews.blade.php new file mode 100644 index 0000000..a6b81af --- /dev/null +++ b/resources/views/account/reviews.blade.php @@ -0,0 +1,230 @@ +@extends('layouts.account', ['title' => 'Account - My Reviews']) + +@section('content') + +
+
+ +
+
+

My reviews

+
+
+ +
+
+ + +
+ +
+
+ + + + + + + + + +100 bonuses for a review +
+
+
+ +
+
+ +
+ +
+
+
+100 bonuses + earned
+
+ + + + + +
+ + + +
+
+ + + + + +
+ +
+
+ + + + + + + + + +86 bonuses for a review +
+
+
+ +
+
+ +
+ +
+
+ +
+
+ +
+ +
+
+
+ + + + + +
+ + + +
+
+ +
+ +
+
+ +
+
+ +
+ +
+
+ +
+
+ + +
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/signin.blade.php b/resources/views/account/signin.blade.php new file mode 100644 index 0000000..a343a52 --- /dev/null +++ b/resources/views/account/signin.blade.php @@ -0,0 +1,120 @@ +@extends('layouts.landing', ['title' => 'Account - Sign In']) + +@section('content') +
+
+ +
+ + +

Welcome back

+ + +
+
+ +
Enter a valid email address!
+
+
+
+ +
Password is incorrect!
+ +
+
+
+
+ + +
+ +
+ +
+ +
+
+ or continue with +
+
+ +
+ + + +
+ + +
+ +
+
+ + +
+ Girl +
+
+
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/signup.blade.php b/resources/views/account/signup.blade.php new file mode 100644 index 0000000..2c45efd --- /dev/null +++ b/resources/views/account/signup.blade.php @@ -0,0 +1,269 @@ +@extends('layouts.landing', ['title' => 'Account - Sign Up']) + +@section('content') +
+
+ +
+ + +

Create an account

+ + + +
+
+ + +
Enter a valid email address!
+
+
+ +
+ +
Password does not meet the required criteria! +
+ +
+
+
+
+ + +
+
+ + +
+
+ +
+ +
+
+ or continue with +
+
+ +
+ + + +
+ + +
+ +
+
+ + +
+
+ + +
+
+
+ + +
+
+

Cartzilla account benefits

+
+
+
+
+ + +
+
+ + + +
+

Subscribe to your favorite products

+
+
+
+
+
+ + +
+
+ + + +
+

View and manage your orders and wishlist

+
+
+
+
+
+ + +
+
+ + + +
+

Earn rewards for future purchases

+
+
+
+
+
+ + +
+
+ + + +
+

Receive exclusive offers and discounts

+
+
+
+
+
+ + +
+
+ + + +
+

Create multiple wishlists

+
+
+
+
+
+ + +
+
+ + + +
+

Pay for purchases by installments

+
+
+
+
+
+
+
+
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/account/wishlist.blade.php b/resources/views/account/wishlist.blade.php new file mode 100644 index 0000000..0531122 --- /dev/null +++ b/resources/views/account/wishlist.blade.php @@ -0,0 +1,327 @@ +@extends('layouts.account', ['title' => 'Account - Wishlist']) + +@section('content') + +
+
+ +
+

Wishlist

+ +
+ +
+
+
+
Interesting offers
+ +
+
+ +
+
+
+ + + +
+ +
+
+
+
+
+ +
+
+ + -21% +
+ VR Glasses +
+
+
+
+
+
+ + + + + +
+ (123) +
+

+ + VRB01 Virtual Reality Glasses + +

+
+
$340.99 $430.00
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (142) +
+

+ + Apple iPhone 14 128GB White + +

+
+
$899.00
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+ Smart Watch +
+
+
+
+
+
+ + + + + +
+ (67) +
+

+ + Smart Watch Series 7, White + +

+
+
$429.00
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+ iPad Air +
+
+
+
+
+
+ + + + + +
+ (12) +
+

+ + Tablet Apple iPad Air M1 + +

+
+
$540.00
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+ AirPods 2 +
+
+
+
+
+
+ + + + + +
+ (78) +
+

+ + Headphones Apple AirPods 2 Pro + +

+
+
$224.00
+ +
+
+
+
+
+
+
+@endsection + +@section('scripts') +@endsection diff --git a/resources/views/blog/grid-v1.blade.php b/resources/views/blog/grid-v1.blade.php new file mode 100644 index 0000000..065acd4 --- /dev/null +++ b/resources/views/blog/grid-v1.blade.php @@ -0,0 +1,628 @@ +@extends('layouts.landing', ['title' => 'Blog Grid View v.1']) + +@section('content') + + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => True]) + +
+ + + + + + +

Our blog

+ + + +
+ +
+
+ + + +
+
+ + +
+ + + + +
+
+

Charitable contributions

+
+ + +
+
+
+ + +
+
+
+
+
+ Image +
+
+
+ Image +
+
+
+
+ + +
+
+
+
+

The role of philanthropy in building a better world

+

Charitable contributions are a vital aspect of + building a better world. These contributions come in various forms, + including monetary donations, volunteering time, providing expertise...

+ Read more +
+
+

Supporting communities through charitable giving

+

Join us on a journey of generosity as we + spotlight the transformative power of charitable contributions. In this + section, we celebrate the stories of impact made possible by your...

+ Read more +
+
+
+
+
+
+ + + + +
+ + + +
+ + + + +
+
+ + + +
+ + +
+

Video reviews

+ +
+ + + +
+
+ + @include('layouts.partials/footer') + +@endsection + +@section('scripts') +@endsection \ No newline at end of file diff --git a/resources/views/blog/grid-v2.blade.php b/resources/views/blog/grid-v2.blade.php new file mode 100644 index 0000000..f9f69fc --- /dev/null +++ b/resources/views/blog/grid-v2.blade.php @@ -0,0 +1,640 @@ +@extends('layouts.landing', ['title' => 'Blog Grid View v.2']) + +@section('content') + +
+
+

Shopping cart

+ +
+
+ + + + +
Your shopping cart is currently empty!
+

Explore our wide range of products and add items to your cart to proceed with your + purchase.

+ Continue shopping +
+
+ + @include('layouts.partials/navbar2') + +
+ + +
+
+ + +
+
+ Image + +
+ + +
+
+ +

Decorate your home in easy steps

+

Decorating your home can be a fun and creative + process that transforms your living space.

+ Learn more +
+
+
+
+ + + +
+ + + + + + + + +
+ +
+
+ + + +
+
+
+

Retro elements in interior design

+ + +
+ + +
+
+ +
+
+ + + +
+
+
+ + +
+
+
+ Image +
+ +
+
+ + +
+
+ +

Interior design trends for French windows

+ Learn more +
+
+
+
+
+ + + +
+ +
+
+ + + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/blog/list.blade.php b/resources/views/blog/list.blade.php new file mode 100644 index 0000000..239da2e --- /dev/null +++ b/resources/views/blog/list.blade.php @@ -0,0 +1,635 @@ +@extends('layouts.landing', ['title' => 'Blog List View']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+ + + + + + +

Our blog

+ + + +
+ +
+
+ + + +
+
+ + +
+
+ + + + + + + + + + + + + + + +
+ + + +
+
+

Charitable contributions

+
+ + +
+
+
+ + +
+
+
+
+
+ Image +
+
+
+ Image +
+
+
+
+ + +
+
+
+
+

The role of philanthropy in building a better world

+

Charitable contributions are a vital aspect of + building a better world. These contributions come in various forms, + including monetary donations, volunteering time, providing expertise...

+ Read more +
+
+

Supporting communities through charitable giving

+

Join us on a journey of generosity as we + spotlight the transformative power of charitable contributions. In this + section, we celebrate the stories of impact made possible by your...

+ Read more +
+
+
+
+
+
+ + + +
+ + + + + + + + + + + + +
+
+ + + +
+ + + + +
+
+ + + +
+ + +
+

Video reviews

+ +
+ + + +
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/blog/single-v1.blade.php b/resources/views/blog/single-v1.blade.php new file mode 100644 index 0000000..8f4100b --- /dev/null +++ b/resources/views/blog/single-v1.blade.php @@ -0,0 +1,387 @@ +@extends('layouts.landing', ['title' => 'Blog Single Post v.1']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+ + + + + + +
+
+ + +
+ + +

Payments made easy: How new technology will affect emerging E-commerce industry + worldwide?

+ + + + +

The rise of technology has had a significant impact on the way we live our lives, and the world of + E-commerce is no exception. As technology continues to evolve, it is changing the way we make + payments, and this is having a significant impact on the E-commerce industry worldwide.

+
+
+ Image +
+
Image source Unsplash.com
+
+

One of the biggest trends in the E-Commerce industry is the rise of mobile payments. With the + increasing popularity of smartphones, consumers are now able to make payments quickly and easily + using mobile payment apps. This has made it easier for consumers to shop online, as they no longer + have to enter their credit card information every time they make a purchase.

+

Another trend that is shaping the E-Commerce industry is the rise of cryptocurrency. Cryptocurrency + is a digital currency that uses encryption techniques to regulate the generation of units of + currency and verify the transfer of funds. This technology has the potential to revolutionize the + way we make payments, as it provides a secure and decentralized way to transfer funds.

+

Mobile payments, cryptocurrency and AI

+

In addition to mobile payments and cryptocurrency, there are other technologies that are shaping the + future of E-Commerce. For example, biometric authentication is becoming more prevalent, and this + technology could make it easier for consumers to make payments securely without having to enter a + password.

+
    +
  • The use of artificial intelligence (AI) is also becoming more common in the E-Commerce industry. +
  • +
  • AI can be used to personalize the shopping experience for consumers.
  • +
  • Cryptocurrency adoption reduces transaction fees compared to traditional credit card payment. +
  • +
  • Mobile payments simplifies the checkout process, leading to higher conversion rates as customers + can pay anytime, anywhere.
  • +
+

All of these technologies have the potential to make payments easier and more secure, which is good + news for both consumers and merchants. However, it is important to note that there are still + challenges to overcome, such as security and privacy concerns, as well as the need for widespread + adoption of these new technologies.

+

Technologies continue to evolve

+

The e-commerce industry stands at the forefront of technological evolution, constantly adapting and + growing with every new wave of innovation. In recent years, three major technological advancements + have significantly impacted this dynamic sector: mobile payments, cryptocurrency, and Artificial + Intelligence (AI).

+ + +
+ + + + + +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+ + +
+
+
+ +

Mobile payments have revolutionized the e-commerce landscape by offering unparalleled convenience and + speed. With just a few taps on a smartphone, consumers can complete transactions anytime and + anywhere, bypassing the traditional hassles of cash or card payments.

+

Cryptocurrency has emerged as a potent force, challenging conventional financial systems and offering + a new paradigm for online transactions. With its decentralized nature and robust encryption, + cryptocurrencies provide a level of security and anonymity previously unavailable to online + shoppers.

+ + +
+
+

This technology has the potential to revolutionize the way we make payments, as it provides a + secure and decentralized way to transfer funds.

+
+ +
+ +

Perhaps the most transformative of all, AI has begun to personalize the online shopping experience in + unprecedented ways. Through data analysis and machine learning, AI can predict user preferences, + tailor recommendations, and offer customer service through intelligent chatbots. This not only + enhances the user experience but also increases efficiency and sales for e-commerce businesses. + Furthermore, AI is instrumental in fraud detection and prevention, using pattern recognition to + identify and combat fraudulent activities.

+

Conclusion

+

As these technologies continue to evolve and interweave, the future of e-commerce looks not only more + digital but also more secure, personalized, and accessible. The implications of these advancements + extend beyond just consumer convenience, heralding a new era of digital commerce that is as exciting + as it is unpredictable. The industry must stay agile and forward-thinking to harness these + technologies' full potential and navigate the challenges they bring.

+ + +
+ +
+
Share:
+ + + + + + + + + +
+
+ + +
+
+

Sign up to our newsletter

+

Receive our latest updates about our products & promotions

+
+ +
+ + + +
+

Related articles

+
+ + + + + + + + + + + + +
+
+
+ + + + +
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/blog/single-v2.blade.php b/resources/views/blog/single-v2.blade.php new file mode 100644 index 0000000..a889d13 --- /dev/null +++ b/resources/views/blog/single-v2.blade.php @@ -0,0 +1,350 @@ +@extends('layouts.landing', ['title' => 'Blog Single Post v.2']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + + +
+ + +
+
+
+ + + + +

Payments made easy: How new technology will affect emerging E-commerce industry + worldwide?

+ + + +
+
+
+ + +
+

The rise of technology has had a significant impact on the way we live our lives, and the world of + E-commerce is no exception. As technology continues to evolve, it is changing the way we make + payments, and this is having a significant impact on the E-commerce industry worldwide.

+
+
+ Image +
+
Image source Unsplash.com
+
+

One of the biggest trends in the E-Commerce industry is the rise of mobile payments. With the + increasing popularity of smartphones, consumers are now able to make payments quickly and easily + using mobile payment apps. This has made it easier for consumers to shop online, as they no longer + have to enter their credit card information every time they make a purchase.

+

Another trend that is shaping the E-Commerce industry is the rise of cryptocurrency. Cryptocurrency + is a digital currency that uses encryption techniques to regulate the generation of units of + currency and verify the transfer of funds. This technology has the potential to revolutionize the + way we make payments, as it provides a secure and decentralized way to transfer funds.

+

Mobile payments, cryptocurrency and AI

+

In addition to mobile payments and cryptocurrency, there are other technologies that are shaping the + future of E-Commerce. For example, biometric authentication is becoming more prevalent, and this + technology could make it easier for consumers to make payments securely without having to enter a + password.

+
    +
  • The use of artificial intelligence (AI) is also becoming more common in the E-Commerce industry. +
  • +
  • AI can be used to personalize the shopping experience for consumers.
  • +
  • Cryptocurrency adoption reduces transaction fees compared to traditional credit card payment. +
  • +
  • Mobile payments simplifies the checkout process, leading to higher conversion rates as customers + can pay anytime, anywhere.
  • +
+

All of these technologies have the potential to make payments easier and more secure, which is good + news for both consumers and merchants. However, it is important to note that there are still + challenges to overcome, such as security and privacy concerns, as well as the need for widespread + adoption of these new technologies.

+

Technologies continue to evolve

+

The e-commerce industry stands at the forefront of technological evolution, constantly adapting and + growing with every new wave of innovation. In recent years, three major technological advancements + have significantly impacted this dynamic sector: mobile payments, cryptocurrency, and Artificial + Intelligence (AI).

+ + +
+ + + + + +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+ + +
+
+
+ +

Mobile payments have revolutionized the e-commerce landscape by offering unparalleled convenience and + speed. With just a few taps on a smartphone, consumers can complete transactions anytime and + anywhere, bypassing the traditional hassles of cash or card payments.

+

Cryptocurrency has emerged as a potent force, challenging conventional financial systems and offering + a new paradigm for online transactions. With its decentralized nature and robust encryption, + cryptocurrencies provide a level of security and anonymity previously unavailable to online + shoppers.

+ + +
+
+

This technology has the potential to revolutionize the way we make payments, as it provides a + secure and decentralized way to transfer funds.

+
+ +
+ +

Perhaps the most transformative of all, AI has begun to personalize the online shopping experience in + unprecedented ways. Through data analysis and machine learning, AI can predict user preferences, + tailor recommendations, and offer customer service through intelligent chatbots. This not only + enhances the user experience but also increases efficiency and sales for e-commerce businesses. + Furthermore, AI is instrumental in fraud detection and prevention, using pattern recognition to + identify and combat fraudulent activities.

+

Conclusion

+

As these technologies continue to evolve and interweave, the future of e-commerce looks not only more + digital but also more secure, personalized, and accessible. The implications of these advancements + extend beyond just consumer convenience, heralding a new era of digital commerce that is as exciting + as it is unpredictable. The industry must stay agile and forward-thinking to harness these + technologies' full potential and navigate the challenges they bring.

+ + +
+ + + +
+
Share:
+ + + + + + + + + +
+
+ + + +
+ + + + +
+
+ + + +
+

Related articles

+ +
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/marketplace.blade.php b/resources/views/checkout/marketplace.blade.php new file mode 100644 index 0000000..27923f6 --- /dev/null +++ b/resources/views/checkout/marketplace.blade.php @@ -0,0 +1,854 @@ +@extends('layouts.landing', ['title' => 'Marketplace - Checkout']) + +@section('content') + + + +
+ + +
+
+

Cart (3)

+ +
+
+ + +
+ + +
+ +
+ Thumbnail +
+
+
+
+ Multi device mockup PSD +
+
$27
+
+
+ +
+ +
+
+
+ + +
+ +
+ Thumbnail +
+
+
+
+ Isometric device mockups +
+
$12
+
+
+ +
+ +
+
+
+ + +
+ +
+ Thumbnail +
+
+
+
+ Modern poster with abstract shapes +
+
$8
+
+
+ +
+ +
+
+
+
+ + +
+
+ Subtotal: + $47 +
+ Checkout +
+
+ + + +
+
+
+
+

Checkout

+
+
+
+ + +
+
+ + +
+ +
+ Thumbnail +
+
+
+
+ Multi device mockup PSD +
+
$27.00
+
+
+ +
+ +
+
+
+ + +
+ +
+ Thumbnail +
+
+
+
+ Isometric device mockups +
+
$12.00
+
+
+ +
+ +
+
+
+ + +
+ +
+ Thumbnail +
+
+
+
+ Modern poster with abstract shapes +
+
$8.00
+
+
+ +
+ +
+
+
+
+
+ + + +
+
+ + +
+

Visa, Mastercard, Maestro, Discover

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ Estimated total: + $47 +
+ +
+ + Your payment is secure +
+
+
+
+
+ + @include('layouts.partials/footer3') + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v1-cart.blade.php b/resources/views/checkout/v1-cart.blade.php new file mode 100644 index 0000000..5118ca5 --- /dev/null +++ b/resources/views/checkout/v1-cart.blade.php @@ -0,0 +1,988 @@ +@extends('layouts.landing', ['title' => 'Checkout v.1 - Shopping Cart']) + +@section('content') + +
+
+
+

Login to continue

+ +
+ +
+
+ + +
+
+
+ + +
Enter a valid email address!
+
+
+ +
+ +
Password is incorrect!
+ +
+
+
+
+ + +
+ +
+ +
+
+ + +
+
+
+ + +
Enter a valid email address!
+
+
+ +
+ +
Password does not meet the required criteria! +
+ +
+
+
+
+ + +
+
+ + +
+
+ +
+
Cartzilla account benefits
+
    +
  • +
    + +
    +
    Subscribe to your favorite products
    +
  • +
  • +
    + +
    +
    View and manage your orders and withlist
    +
  • +
  • +
    + +
    +
    Earn rewards for future purchases
    +
  • +
  • +
    + +
    +
    Receive exclusive offers and discounts
    +
  • +
  • +
    + +
    +
    Create multiple wishlists
    +
  • +
+
+
+
+
+
+ + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+ + + + + + +
+

Shopping cart

+
+ + +
+
+

Buy $183 more to get Free Shipping

+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProductPriceQuantityTotal + +
+
+ + iPhone 14 + +
+
+ Apple iPhone 14 + 128GB +
+
    +
  • Color: White
  • +
  • Model: 128GB
  • +
  • Price: + $899.00
  • +
+
+ + + +
+
+
+
$899.00 +
+ + + +
+
$899.00 + +
+
+ + -10% + iPad Pro + +
+
+ Tablet Apple iPad Pro + M2 +
+
    +
  • Color: Black
  • +
  • Model: 256GB
  • +
  • Price: + $989.00 $1,099.00 +
  • +
+
+ + + +
+
+
+
$989.00 $1,099.00 +
+ + + +
+
$989.00 + +
+
+ + Smart Watch + +
+
+ Smart Watch Series + 7 +
+
    +
  • Color: White
  • +
  • Model: 44 mm
  • +
  • Price: + $429.00
  • +
+
+ + + +
+
+
+
$429.00 +
+ + + +
+
$429.00 + +
+ + +
+
+ + + + +
+
+ + + +
+

Trending products

+ + +
+ + + + + + +
+
+ + +
+
+
+
+
+ + +
+
+ + + -21% +
+ VR Glasses +
+
+
+
+
+
+ + + + + +
+ (123) +
+

+ + VRB01 Virtual Reality Glasses + +

+
+
$340.99 $430.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (142) +
+

+ + Apple iPhone 14 128GB Blue + +

+
+
$899.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Dualsense Edge +
+
+
+
+
+
+ + + + + +
+ (187) +
+

+ + Sony Dualsense Edge Controller + +

+
+
$200.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + + New +
+ MacBook +
+
+
+
+
+
+ + + + + +
+ (51) +
+

+ + Laptop Apple MacBook Pro 13 M2 + +

+
+
$1,200.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Bluetooth Headphones +
+
+
+
+
+
+ + + + + +
+ (136) +
+

+ + Wireless Bluetooth Headphones Sony + +

+
+
$299.00
+ +
+
+
+
+
+
+ + +
+ + +
+
+
+ + + +
+
+
+
+

Sign up to our newsletter

+

Receive our latest updates about our products & promotions +

+
+
+ +
+ +
+ +
+ +
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v1-delivery-1.blade.php b/resources/views/checkout/v1-delivery-1.blade.php new file mode 100644 index 0000000..14b5e08 --- /dev/null +++ b/resources/views/checkout/v1-delivery-1.blade.php @@ -0,0 +1,195 @@ +@extends('layouts.landing', ['title' => 'Checkout v.1 - Delivery Info Step 1']) + +@section('content') + +
+
+

Your order

+ +
+
+ + +
+ + iPhone 14 + +
+
+ Apple iPhone 14 128GB White +
+
$899.00
+
Qty: 1
+
+
+ + +
+ + -10% + iPad Pro + +
+
+ Tablet Apple iPad Pro M2 +
+
$989.00 $1,099.00
+
Qty: 1
+
+
+ + +
+ + Smart Watch + +
+
+ Smart Watch Series 7, White +
+
$429.00
+
Qty: 1
+
+
+
+ +
+ Edit cart +
+
+ + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + + +
+
+
+ + +
+
+
+
1
+
+

Delivery information

+
+

Add your Postcode to see the delivery and collection options + available in your area.

+ +
+
+
+
+
2
+

Shipping address

+
+
+
3
+

Payment

+
+
+
+ + + + +
+
+
+ + @include('layouts.partials/footer') + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v1-delivery-2.blade.php b/resources/views/checkout/v1-delivery-2.blade.php new file mode 100644 index 0000000..0eb5a03 --- /dev/null +++ b/resources/views/checkout/v1-delivery-2.blade.php @@ -0,0 +1,628 @@ +@extends('layouts.landing', ['title' => 'Checkout v.1 - Delivery Info Step 2']) + +@section('content') + +
+
+

Your order

+ +
+
+ + +
+ + iPhone 14 + +
+
+ Apple iPhone 14 128GB White +
+
$899.00
+
Qty: 1
+
+
+ + +
+ + -10% + iPad Pro + +
+
+ Tablet Apple iPad Pro M2 +
+
$989.00 $1,099.00
+
Qty: 1
+
+
+ + +
+ + Smart Watch + +
+
+ Smart Watch Series 7, White +
+
$429.00
+
Qty: 1
+
+
+
+ +
+ Edit cart +
+
+ + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+
+
+ + +
+
+
+
1
+
+

Delivery information

+
+

Add your Postcode to see the delivery and collection options + available in your area.

+

+ 15006 + Edit +

+

Choose shipping method

+
+ + +
+
+ +
+
+
+

Choose a courier delivery time convenient for you:

+
+ +
+
+
+
Monday, 13
+
+ + +
+
+ + +
+
+
+
Tuesday, 14
+
+ + +
+
+ + +
+
+
+
Wednesday, 15
+
+ + +
+
+ + +
+
+
+
Thursday, 16
+
+ + +
+
+ + +
+
+
+
Friday, 17
+
+ + +
+
+ + +
+
+
+
Saturday, 18
+
+ + +
+
+ + +
+
+
+
Sunday, 19
+
+ + +
+
+ + +
+
+
+
+ +
+
+
+
+ + +
+ +
+
+

Choose a store nearby:

+
+ +
+

Choose a pickup time convenient for you:

+
+ +
+
+
+
Monday, 13
+
+ + +
+
+ + +
+
+
+
Tuesday, 14
+
+ + +
+
+ + +
+
+
+
Wednesday, 15
+
+ + +
+
+ + +
+
+
+
Thursday, 16
+
+ + +
+
+ + +
+
+
+
Friday, 17
+
+ + +
+
+ + +
+
+
+
Saturday, 18
+
+ + +
+
+ + +
+
+
+
Sunday, 19
+
+ + +
+
+ + +
+
+
+
+ +
+
+
+
+ + +
+ +
+
+ +

Estimated date of delivery - March 15, 2024

+
+
+
+
+ + Continue + + +
+
+
+ + +
+
2
+

Shipping address

+
+ + +
+
3
+

Payment

+
+
+
+ + + + +
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v1-payment.blade.php b/resources/views/checkout/v1-payment.blade.php new file mode 100644 index 0000000..de992ec --- /dev/null +++ b/resources/views/checkout/v1-payment.blade.php @@ -0,0 +1,374 @@ +@extends('layouts.landing', ['title' => 'Checkout v.1 - Shipping Address']) + +@section('content') + +
+
+

Your order

+ +
+
+ + +
+ + iPhone 14 + +
+
+ Apple iPhone 14 128GB White +
+
$899.00
+
Qty: 1
+
+
+ + +
+ + -10% + iPad Pro + +
+
+ Tablet Apple iPad Pro M2 +
+
$989.00 $1,099.00
+
Qty: 1
+
+
+ + +
+ + Smart Watch + +
+
+ Smart Watch Series 7, White +
+
$429.00
+
Qty: 1
+
+
+
+ +
+ Edit cart +
+
+ + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+
+
+
+
+ + +
+
+ +
+
+
+

+ Delivery information + +

+ +
+
+
+

Postcode

+

15006

+

Estimated delivery date

+
+ Monday, 13 + | + 12:00 - 16:00 +
+
+
+
+
+ + + +
+
+ +
+
+
+

+ Shipping address + +

+ +
+
+
    +
  • Jane Cooper
  • +
  • jane.cooper@email.com
  • +
  • (215) 555-1234
  • +
  • Pennsylvania 15006
  • +
  • 567 Cherry Lane Apt B12 Harrisburg
  • +
+
+
+
+ + + +
+
3
+
+

Payment

+
+ + +
+ +
+
+ I would require a change from: +
+ + + + +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+
+ +
+
+ +
+
+
+
+
+ + +
+ +
+
+ + +
+ +
+
+
+ + + + + + + +
+ + +
+ + + Pay $2,406.90 +
+
+
+
+ + + + +
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v1-shipping.blade.php b/resources/views/checkout/v1-shipping.blade.php new file mode 100644 index 0000000..234bbc9 --- /dev/null +++ b/resources/views/checkout/v1-shipping.blade.php @@ -0,0 +1,301 @@ +@extends('layouts.landing', ['title' => 'Checkout v.1 - Shipping Address']) + +@section('content') + +
+
+

Your order

+ +
+
+ + +
+ + iPhone 14 + +
+
+ Apple iPhone 14 128GB White +
+
$899.00
+
Qty: 1
+
+
+ + +
+ + -10% + iPad Pro + +
+
+ Tablet Apple iPad Pro M2 +
+
$989.00 $1,099.00
+
Qty: 1
+
+
+ + +
+ + Smart Watch + +
+
+ Smart Watch Series 7, White +
+
$429.00
+
Qty: 1
+
+
+
+ +
+ Edit cart +
+
+ + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + + +
+
+
+
+
+ + +
+
+ +
+
+
+

+ Delivery information + +

+ +
+
+
+

Postcode

+

15006

+

Estimated delivery date

+
+ Monday, 13 + | + 12:00 - 16:00 +
+
+
+
+
+ + + +
+
2
+
+

Shipping address

+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ +

+ Billing address + +

+
+ + +
+ + Continue + + +
+
+
+ + +
+
3
+

Payment

+
+
+
+ + + + +
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v1-thankyou.blade.php b/resources/views/checkout/v1-thankyou.blade.php new file mode 100644 index 0000000..66ab692 --- /dev/null +++ b/resources/views/checkout/v1-thankyou.blade.php @@ -0,0 +1,244 @@ +@extends('layouts.landing', ['title' => 'Checkout v.1 - Thank You Page']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+
+ + +
+
+
+
+ +
+
+
Order #234000
+
+

Thank you for your order!

+ +
+
+
+
+
+

Delivery

+

567 Cherry Souse Lane Sacramento, 95829

+
+
+

Time

+

Sunday, May 9, 12:00 - 14:00

+
+
+

Payment

+

Visa: **** **** **** 8395

+
+
+
+
+

🎉 Congratulations! 30% off your new purchase!

+

Use the coupon now or look for it in your personal account. +

+
+ + +
+
+
+

Need help?Contact us

+
+
+ + + +
+
+ + +
+

You may also like

+
+ + +
+
+
+
+
+ + +
+
+ + + -21% +
+ VR Glasses +
+
+
+
+
+
+ + + + + +
+ (123) +
+

+ + VRB01 Virtual Reality Glasses + +

+
+
$340.99 $430.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (142) +
+

+ + Apple iPhone 14 128GB Blue + +

+
+
$899.00
+ +
+
+
+
+
+ + + Continue shopping + + +
+
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v2-cart.blade.php b/resources/views/checkout/v2-cart.blade.php new file mode 100644 index 0000000..91aca34 --- /dev/null +++ b/resources/views/checkout/v2-cart.blade.php @@ -0,0 +1,711 @@ +@extends('layouts.landing', ['title' => 'Checkout v.2 - Shopping Cart']) + +@section('content') + @include('layouts.partials/offcanvas') + + +
+ + +
+
+

Delivery options

+ +
+ +
+ +
+ + +
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+ +
+
Add an address to start ordering
+ + + Find on map + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+
+ +
+
+ + +
+
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+
+ + +
+
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+
+ + +
+
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+
+ + +
+ +
+
Select a suitable store
+ + + Find on map + +
+
+ + +
+
+ + +
+
Found stores:
+
+ +
+ +
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+ +
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+ +
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+ + + +
+
+ + +
+ +
+
+ + + @include('layouts.partials/menu-offcanvas') + + @include('layouts.partials/checkout-navbar') + +
+ + + + + + +
+

Shopping cart

+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProductPriceQuantityTotal + +
+
+ + -$2.79 + Thumbnail + +
+
+ Fresh orange Klementina, Spain +
+
    +
  • Portion: 1kg
  • +
  • Price: + $3.12 $4.05 +
  • +
+
+ + + +
+
+
+
$3.12 $4.05 +
+ + + +
+
$9.36 + +
+
+ + Thumbnail + +
+
+ Pesto sauce Barilla with basil, + Italy +
+
    +
  • Portion: 200g
  • +
  • Price: + $3.95 +
  • +
+
+ + + +
+
+
+
$3.95 +
+ + + +
+
$3.95 + +
+
+ + Thumbnail + +
+
+ Steak salmon fillet with + rosmary +
+
    +
  • Portion: 1kg
  • +
  • Price: + $27.00 +
  • +
+
+ + + +
+
+
+
$27.00 +
+ + + +
+
$54.00 + +
+
+ + Thumbnail + +
+
+ Sprite soda lemon lime, can +
+
    +
  • Portion: 330ml
  • +
  • Price: + $0.80 +
  • +
+
+ + + +
+
+
+
$0.80 +
+ + + +
+
$1.60 + +
+ + +
+
+ + + + +
+
+
+ + @include('layouts.partials/footer2') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v2-delivery.blade.php b/resources/views/checkout/v2-delivery.blade.php new file mode 100644 index 0000000..c575070 --- /dev/null +++ b/resources/views/checkout/v2-delivery.blade.php @@ -0,0 +1,710 @@ +@extends('layouts.landing', ['title' => 'Checkout v.2 - Shopping Cart']) + +@section('content') + @include('layouts.partials/offcanvas') + + +
+ + +
+
+

Delivery options

+ +
+ +
+ +
+ + +
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+ +
+
Add an address to start ordering
+ + + Find on map + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+
+ +
+
+ + +
+
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+
+ + +
+
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+
+ + +
+
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+
+ + +
+ +
+
Select a suitable store
+ + + Find on map + +
+
+ + +
+
+ + +
+
Found stores:
+
+ +
+ +
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+ +
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+ +
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+ + + +
+
+ + +
+ +
+
+ + + @include('layouts.partials/menu-offcanvas') + + @include('layouts.partials/checkout-navbar') + + +
+ + + + + + +
+

Shopping cart

+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProductPriceQuantityTotal + +
+
+ + -$2.79 + Thumbnail + +
+
+ Fresh orange Klementina, Spain +
+
    +
  • Portion: 1kg
  • +
  • Price: + $3.12 $4.05 +
  • +
+
+ + + +
+
+
+
$3.12 $4.05 +
+ + + +
+
$9.36 + +
+
+ + Thumbnail + +
+
+ Pesto sauce Barilla with basil, + Italy +
+
    +
  • Portion: 200g
  • +
  • Price: + $3.95
  • +
+
+ + + +
+
+
+
$3.95 +
+ + + +
+
$3.95 + +
+
+ + Thumbnail + +
+
+ Steak salmon fillet with + rosmary +
+
    +
  • Portion: 1kg
  • +
  • Price: + $27.00
  • +
+
+ + + +
+
+
+
$27.00 +
+ + + +
+
$54.00 + +
+
+ + Thumbnail + +
+
+ Sprite soda lemon lime, can +
+
    +
  • Portion: 330ml
  • +
  • Price: $0.80
  • +
+
+ + + +
+
+
+
$0.80 +
+ + + +
+
$1.60 + +
+ + +
+
+ + + + +
+
+
+ + @include('layouts.partials/footer2') + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v2-pickup.blade.php b/resources/views/checkout/v2-pickup.blade.php new file mode 100644 index 0000000..35a600e --- /dev/null +++ b/resources/views/checkout/v2-pickup.blade.php @@ -0,0 +1,683 @@ +@extends('layouts.landing', ['title' => 'Checkout v.2 - Pickup from Store']) + +@section('content') + @include('layouts.partials/offcanvas') + + +
+ + +
+
+

Delivery options

+ +
+ +
+ +
+ + +
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+ +
+
Add an address to start ordering
+ + + Find on map + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+
+ +
+
+ + +
+
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+
+ + +
+
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+
+ + +
+
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+
+ + +
+ +
+
Select a suitable store
+ + + Find on map + +
+
+ + +
+
+ + +
+
Found stores:
+
+ +
+ +
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+ +
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+ +
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+ + + +
+
+ + +
+ +
+
+ + + +
+ + +
+

Schedule date and time

+ +
+ + +
+ + +
+
+
Mon
+ + +
+
+
Tue
+ + +
+
+
Wed
+ + +
+
+
Thu
+ + +
+
+
Fri
+ + +
+
+
Sat
+ + +
+
+
Sun
+ + +
+
+ + +
+ +
+ + Free +
+
+
+ +
+ + Free +
+
+
+ +
+ + Free +
+
+
+ +
+ + Free +
+
+
+ +
+ + Free +
+
+
+ +
+ + Free +
+
+
+ +
+ + Free +
+
+
+ + +
+ +
+
+ + + + @include('layouts.partials/menu-offcanvas') + + @include('layouts.partials/checkout-navbar') + +
+ + + + + + +
+

Checkout

+
+ + +
+ + +

Pickup from the store

+
+
+ +
+
Sacramento Supercenter
+ 8270 Delta Shores Cir S, Sacramento, CA 95832 +
+
+ +
+ + +

Pickup date and time

+
+
+ + +
+
+ + +
+
+ + +
+
+
Closest time of receipt
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +

Payment method

+
+ + +
+
+ +
+
+
+ + +
+ +
+
+
+ + +
+
+
+ +
+
+ +
+
+
+
+
+ + +
+ +
+
+ + +
+ +
+
+
+ + +

Packaging

+ +
+
+ + +
+
+ + +
+
+
+ + + + +
+
+
+ + @include('layouts.partials/footer2') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/checkout/v2-thankyou.blade.php b/resources/views/checkout/v2-thankyou.blade.php new file mode 100644 index 0000000..9f59f5e --- /dev/null +++ b/resources/views/checkout/v2-thankyou.blade.php @@ -0,0 +1,603 @@ +@extends('layouts.landing', ['title' => 'Checkout v.2 - Thank You Page']) + +@section('content') + @include('layouts.partials/offcanvas2') + + +
+ + +
+
+

Delivery options

+ +
+ +
+ +
+ + +
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+ +
+
Add an address to start ordering
+ + + Find on map + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+
+ +
+
+ + +
+
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+
+ + +
+
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+
+ + +
+
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+
+ + +
+ +
+
Select a suitable store
+ + + Find on map + +
+
+ + +
+
+ + +
+
Found stores:
+
+ +
+ +
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+ +
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+ +
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+ + + +
+
+ + +
+ +
+
+ + + @include('layouts.partials/menu-offcanvas') + + @include('layouts.partials/checkout-navbar') + + +
+ + +
+
+
+

Thank you for your order!

+

Your order #234000 + accepted and will be processed shortly. Expect our courier today (Sunday, + May 9) at 12:00 - 14:00.

+ Continue + shopping +
+ Background image + Background image +
+
+ + + +
+

You may also like

+ +
+
+ + +
+
+
+ -30% + + +
+ Image +
+
+
+
+ +
+
+
+
+
$3.12 $4.05
+

+ Fresh + orange Klementina, Spain +

+
+
1kg
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$0.80
+

+ Pepsi + soda classic, can +

+
+
330ml
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
250g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$1.24
+

+ Coconut, + Indonesia +

+
+
1 coconut
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
200g
+
+
+
+ + +
+
+
+
+ + @include('layouts.partials/footer2') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/contact/v1.blade.php b/resources/views/contact/v1.blade.php new file mode 100644 index 0000000..9d0eef7 --- /dev/null +++ b/resources/views/contact/v1.blade.php @@ -0,0 +1,1841 @@ +@extends('layouts.landing', ['title' => 'Contact v.1']) + +@section('content') +
+ + +
+
+

Shopping cart

+ +
+

Buy $53 more to get Free Shipping

+
+
+
+
+
+ + +
+ + +
+ + Thumbnail + +
+
+ Leather sneakers with golden laces +
+
$74.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Classic cotton men's shirt +
+
$27.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Polarized sunglasses for men +
+
$96.00 112.00
+
+
+ + + +
+ +
+
+
+
+ + +
+
+ Subtotal: + $197.00 +
+ +
+
+ + + + +
+
+
+ +
+
+
🎉 Free Shipping on orders over $250. Don't miss a discount!
+
💰 Money back guarantee. We return money within 30 days.
+
💪 Friendly 24/7 customer support. We've got you covered!
+
+
+ +
+ +
+
+ + + + +
+ + + +
+ Background image +
+
+
+

Contact us

+

Feel free to contact us and we will be happy to help you!

+
+
+
+
+ + + +
+
+ + +
+
+ +

Store location

+
+
+
    +
  • New York 11741, USA
  • +
  • 396 Lillian Bolavandy, Holbrook
  • +
+
+ + +
+
+ +

Call us directly

+
+
+
    +
  • Customers: 1 50 537 53 082
  • +
  • Franchise: 1 50 537 53 000
  • +
+
+ + +
+
+ +

Send a message

+
+
+
    +
  • Customers: help@cartzilla.com
  • +
  • Franchise: franchise@catzilla.com
  • +
+
+ + +
+
+ +

Working hours

+
+
+
    +
  • Mon - Fri 8:00 - 18:00
  • +
  • Sut - Sun 10:00 - 16:00
  • +
+
+
+
+ + + +
+
+
+

Looking for support?

+

We might already have what you're looking for. See our FAQs or head to our dedicated + Help Center.

+
+ Help center +
+
+ + + +
+ + + + + + + + + + + Map +
+
+
+
+
+ +
+ + + +
+

Popular questions

+
+
+ + +
+ + +
+

+ +

+
+
Delivery times vary based on your location and the chosen + shipping method. Generally, our standard delivery takes up to 5 days, while our Express + Delivery ensures your order reaches you within 1 day. Please note that these times may + be subject to occasional variations due to unforeseen circumstances, but we do our best + to meet these estimates.
+
+
+ + +
+

+ +

+
+
We offer a range of secure payment options to provide you with + flexibility and convenience. Accepted methods include major credit/debit cards, PayPal, + and other secure online payment gateways. You can find the complete list of accepted + payment methods during the checkout process.
+
+
+ + +
+

+ +

+
+
Yes, we proudly offer international shipping to cater to our + global customer base. Shipping costs and delivery times will be automatically calculated + at the checkout based on your selected destination. Please note that any customs duties + or taxes applicable in your country are the responsibility of the customer.
+
+
+ + +
+

+ +

+
+
While you can place an order as a guest, creating an account + comes with added benefits. By having an account, you can easily track your orders, + manage your preferences, and enjoy a quicker checkout process for future purchases. It + also allows us to provide you with personalized recommendations and exclusive offers. +
+
+
+ + +
+

+ +

+
+
Once your order is dispatched, you will receive a confirmation + email containing a unique tracking number. You can use this tracking number on our + website to monitor the real-time status of your shipment. Additionally, logging into + your account will grant you access to a comprehensive order history, including tracking + information.
+
+
+ + +
+

+ +

+
+
Our refund policy is designed to ensure customer satisfaction. + Details can be found in our [refund policy page](insert link). In essence, we accept + returns within [insert number] days of receiving the product, provided it is in its + original condition with all tags and packaging intact. Refunds are processed promptly + once the returned item is inspected and approved.
+
+
+ + +
+

+ +

+
+
While guest checkout is available for your convenience, + creating an account enhances your overall shopping experience. With an account, you can + easily track your order status, save multiple shipping addresses, and enjoy a + streamlined checkout process. Moreover, account holders receive early access to + promotions and exclusive offers. Signing up is quick and hassle-free!
+
+
+ + +
+

+ +

+
+
Yes, we offer free shipping on orders exceeding $250. Orders + below this threshold are subject to standard shipping fees, which will be displayed + during the checkout process.
+
+
+
+
+
+
+ + + +
+
+

+ + #cartzilla + +

+

Find more inspiration on our Instagram

+
+ +
+
+ + @include('layouts.partials.footer3') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/contact/v2.blade.php b/resources/views/contact/v2.blade.php new file mode 100644 index 0000000..58d2ae0 --- /dev/null +++ b/resources/views/contact/v2.blade.php @@ -0,0 +1,410 @@ +@extends('layouts.landing', ['title' => 'Contact v.2']) + +@section('content') + +
+
+

Shopping cart

+ +
+
+ + + + +
Your shopping cart is currently empty!
+

Explore our wide range of products and add items to your cart to proceed with your + purchase.

+ Continue shopping +
+
+ + @include('layouts.partials/navbar2') + + +
+ + +
+
+ + +

Contact our specialists

+ + + + + +
+
+
+

Fill out the form below and we + will reply within 24 hours. You may also directly reach out to us at info@cartzilla.com +

+ + +
+
+
+
+ + +
Enter your first + name!
+
+
+ + +
Enter your last name! +
+
+
+ + +
Enter your email + address!
+
+
+ + +
+
+ + +
Select the subject of + your message!
+
+
+ + +
Write your message! +
+
+
+ +
+
+
+
+ + +
+
+
+
+ + +
Enter your company name! +
+
+
+ + +
Enter contact person + name!
+
+
+ + +
Enter company email + address!
+
+
+ + +
+
+ + +
+
+ + +
Select the subject of + your message!
+
+
+ + +
Write your message!
+
+
+ +
+
+
+
+
+
+
+
+
+ + + +
+
+
+ + +

Call us directly

+ +
+
+ + +

Send us a message

+ +
+
+ + +

Looking for support?

+ +
+
+
+ + + +
+
+ + +
+
+ Image +
+ + +
+
+

Our stores

+ +
+ +
+
+
+
+
+ + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/contact/v3.blade.php b/resources/views/contact/v3.blade.php new file mode 100644 index 0000000..20e9d0d --- /dev/null +++ b/resources/views/contact/v3.blade.php @@ -0,0 +1,290 @@ +@extends('layouts.landing', ['title' => 'Contact v.3']) + +@section('content') + +
+
+

Shopping cart

+ +
+
+ + + + +
Your shopping cart is currently empty!
+

Explore our wide range of products and add items to your cart to proceed with your + purchase.

+ Continue shopping +
+
+ + @include('layouts.partials/navbar2') + +
+
+ + +

Contact us

+

Fill out the form below and we will reply within 24 hours

+ + + +
+ + +
+
+
+ + +
Enter your name!
+
+
+ + +
Enter your email address!
+
+
+ + +
Select the subject of your message! +
+
+
+ + +
Write your message!
+
+
+ +
+
+
+ + +
+ Image +
+
+ + + +
+
+
+ +
+

Call us directly

+ +
+
+
+ +
+

Send a message

+ +
+
+
+ +
+

Store location

+
    +
  • New York 11741, USA
  • +
  • 396 Lillian Bolavandy, Holbrook
  • +
+
+
+
+ +
+

Working hours

+
    +
  • Mon - Fri 8:00 - 18:00
  • +
  • Sut - Sun 10:00 - 16:00
  • +
+
+
+ +
+ + + +
+

Looking for support?

+

We might already have what you're looking for. See our FAQs or head to our + dedicated Help Center.

+ Help Center +
+
+
+ + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/help/single-article-v1.blade.php b/resources/views/help/single-article-v1.blade.php new file mode 100644 index 0000000..6f46cda --- /dev/null +++ b/resources/views/help/single-article-v1.blade.php @@ -0,0 +1,223 @@ +@extends('layouts.landing', ['title' => 'Help Single Article v.1']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+ + +
+
+ + +
+

How can we help?

+
+ + +
+
+
+
+
+ + + +
+

+ Track your order +

+
+
+
+
+
+ + + +
+

+ Edit or cancel order +

+
+
+
+
+
+ + + +
+

+ Returns & refunds +

+
+
+
+
+
+ + + +
+

+ My + bonus account +

+
+
+
+
+
+
+ + +
+ + + + +
+ + + + + + +
+

What is your returns policy?

+

Last Updated: June 26, 2024

+

At Cartzilla, we strive to ensure your complete satisfaction with every purchase. If, for any reason, + you are not entirely pleased with your order, we've got you covered with our Returns Policy. You may + return eligible items within 30 days of the delivery date.

+

1. Pack the goods

+
    +
  • Check if your product is eligible for return.
  • +
  • Put the new product in its original packaging without any signs of use. If the product consists + of several parts, you must return the entire set. Make sure that nothing is lost and that you + return the product in the complete set in which you received it.
  • +
  • If you purchased a product with a gift, you must return the entire set (product and gift). + Otherwise, the nominal value of the gift will be deducted from the refund amount.
  • +
  • It is not necessary to send a cheque.
  • +
+

2. Where to bring the goods

+

You can return the goods to the service department or Cartzilla return point.

+
    +
  • Service departments at Cartzilla points of delivery. Here, we will immediately check the goods + and, if everything is in order, agree on a return policy on the spot. You can bring any goods + here. Simple goods, such as clothes and shoes. Complex goods: smartphones, washing machines, + microwaves, power tools. The examination is carried out by a technical specialist. If long-term + diagnostics are required, the goods will be sent to a service centre.
  • +
  • Returns acceptance points at Cartzilla pick-up points. Here, our employee will conduct a visual + inspection of your goods. The decision regarding the goods is made after the goods are delivered + to the service department. The details will be agreed with you. The examination is carried out + within 14 days.
  • +
+
+ Image +
+

3. How will I get a refund for the goods?

+

You can provide your bank card details for a refund when making a refund in your personal account on + the website or in a paper return form. Please indicate the card number and full name of the bank + card holder in English on the return form.

+

Usually, the money is refunded in 3-5 days after the decision to refund is made.

+
+
+
+

Was this information helpful?

+
+ + +
+ + +
+
+
+

Can't find the answer to a question?

+

Get in touch with our support team.

+
+ Contact us +
+
+
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/help/single-article-v2.blade.php b/resources/views/help/single-article-v2.blade.php new file mode 100644 index 0000000..9640898 --- /dev/null +++ b/resources/views/help/single-article-v2.blade.php @@ -0,0 +1,166 @@ +@extends('layouts.landing', ['title' => 'Help Single Article v.2']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+ + +
+
+ + +
+
+
+

How can we help?

+
+ + +
+ +
+
+
+
+ Image + Image +
+
+
+
+
+ + + +
+
+ + + +
+
+ + + +

+ How does courier delivery work? + How does courier delivery work? +

+
+
+
+
+
+

To avail of the convenience of Cartzilla courier delivery, please note + that this service is currently available exclusively in specific cities and regions. To + check whether Cartzilla courier delivery is an option for your location, refer to the + information provided on the product page (don't forget to specify the settlement) or + find details in the delivery block when confirming your order on the website.

+

It's crucial to ensure that the recipient of the order is available to + answer the courier's call during the specified delivery time. In case of unsuccessful + communication or unavailability, the order will be returned to the warehouse. This step + is taken to maintain the efficiency of the delivery process and minimize any + inconvenience caused.

+

The cost of Cartzilla courier delivery varies based on factors such as + location, total weight, and dimensions of the order. Typically, the delivery fee falls + within the range of $5 to $15. It's important to note that the exact cost of delivery is + calculated at the time of placing your order. Therefore, it's advisable to exercise + caution and ensure that the delivery city is specified accurately to avoid any + discrepancies.

+

When opting for Cartzilla courier delivery, you have the flexibility to + choose between paying for your order in cash or using a payment card. However, please be + aware that payment by card upon receipt may have certain restrictions or conditions that + you should be mindful of. These details are typically outlined during the checkout + process, providing you with transparency and clarity regarding your payment options for + a seamless delivery experience.

+
+

Was this information helpful?

+
+ + +
+
+
+
+
+
+
+ + +
+

Can't find an answer to your question?

+ Contact us +
+
+ + +
+ + @include('layouts.partials/footer') + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/help/topics-v1.blade.php b/resources/views/help/topics-v1.blade.php new file mode 100644 index 0000000..b0cd829 --- /dev/null +++ b/resources/views/help/topics-v1.blade.php @@ -0,0 +1,697 @@ +@extends('layouts.landing', ['title' => 'Help Topics v.1']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+ + +
+
+ + +
+

How can we help?

+
+ + +
+
+
+
+
+ + + +
+

+ Track your order +

+
+
+
+
+
+ + + +
+

+ Edit or cancel order +

+
+
+
+
+
+ + + +
+

+ Returns & refunds +

+
+
+
+
+
+ + + +
+

+ My bonus account +

+
+
+
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + +
+
+ + + +
+

Popular articles

+ + +
+
+ +
+
+ + +
+ + + +
+ +
+ + +
+ +
+
+
+ +
+ + +
+
+
+
+

Popular FAQs

+

Still have unanswered questions and need to get in touch?

+ Contact us +
+
+
+ + +
+ + +
+

+ +

+
+
Delivery times vary based on your location and the chosen + shipping method. Generally, our standard delivery takes up to 5 days, while our Express + Delivery ensures your order reaches you within 1 day. Please note that these times may + be subject to occasional variations due to unforeseen circumstances, but we do our best + to meet these estimates.
+
+
+ + +
+

+ +

+
+
We offer a range of secure payment options to provide you with + flexibility and convenience. Accepted methods include major credit/debit cards, PayPal, + and other secure online payment gateways. You can find the complete list of accepted + payment methods during the checkout process.
+
+
+ + +
+

+ +

+
+
Yes, we proudly offer international shipping to cater to our + global customer base. Shipping costs and delivery times will be automatically calculated + at the checkout based on your selected destination. Please note that any customs duties + or taxes applicable in your country are the responsibility of the customer.
+
+
+ + +
+

+ +

+
+
While you can place an order as a guest, creating an account + comes with added benefits. By having an account, you can easily track your orders, + manage your preferences, and enjoy a quicker checkout process for future purchases. It + also allows us to provide you with personalized recommendations and exclusive offers. +
+
+
+ + +
+

+ +

+
+
Once your order is dispatched, you will receive a confirmation + email containing a unique tracking number. You can use this tracking number on our + website to monitor the real-time status of your shipment. Additionally, logging into + your account will grant you access to a comprehensive order history, including tracking + information.
+
+
+ + +
+

+ +

+
+
Our refund policy is designed to ensure customer satisfaction. + Details can be found in our [refund policy page](insert link). In essence, we accept + returns within [insert number] days of receiving the product, provided it is in its + original condition with all tags and packaging intact. Refunds are processed promptly + once the returned item is inspected and approved.
+
+
+ + +
+

+ +

+
+
Our comprehensive size guide is conveniently located on each + product page to assist you in choosing the right fit. Additionally, you can find the + size guide in the main menu under "Size Guide." We recommend referring to these + resources to ensure your selected items match your preferred sizing.
+
+
+ + +
+

+ +

+
+
While guest checkout is available for your convenience, + creating an account enhances your overall shopping experience. With an account, you can + easily track your order status, save multiple shipping addresses, and enjoy a + streamlined checkout process. Moreover, account holders receive early access to + promotions and exclusive offers. Signing up is quick and hassle-free!
+
+
+ + +
+

+ +

+
+
Yes, we offer free shipping on orders exceeding $250. Orders + below this threshold are subject to standard shipping fees, which will be displayed + during the checkout process.
+
+
+ + +
+

+ +

+
+
Once an order is confirmed, our system processes it promptly to + ensure timely dispatch. Therefore, modifications or cancellations are challenging after + this point. However, please contact our customer support as soon as possible, and we + will do our best to assist you based on the order status.
+
+
+
+
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/help/topics-v2.blade.php b/resources/views/help/topics-v2.blade.php new file mode 100644 index 0000000..4306694 --- /dev/null +++ b/resources/views/help/topics-v2.blade.php @@ -0,0 +1,882 @@ +@extends('layouts.landing', ['title' => 'Help Topics v.2']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+ + +
+
+ + +
+
+
+

How can we help?

+
+ + +
+ +
+
+
+
+ Image + Image +
+
+
+
+
+ + + +
+
+ +
+ + +
+ + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Can't find an answer to your question?

+ Contact us +
+
+ + + +
+
+

Popular articles

+ + +
+
+ +
+
+ + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + +
+
+
+
+

Popular FAQs

+

Still have unanswered questions and need to get in touch?

+ Contact us +
+
+
+ + +
+ + +
+

+ +

+
+
Delivery times vary based on your location and the chosen + shipping method. Generally, our standard delivery takes up to 5 days, while our Express + Delivery ensures your order reaches you within 1 day. Please note that these times may + be subject to occasional variations due to unforeseen circumstances, but we do our best + to meet these estimates.
+
+
+ + +
+

+ +

+
+
We offer a range of secure payment options to provide you with + flexibility and convenience. Accepted methods include major credit/debit cards, PayPal, + and other secure online payment gateways. You can find the complete list of accepted + payment methods during the checkout process.
+
+
+ + +
+

+ +

+
+
Yes, we proudly offer international shipping to cater to our + global customer base. Shipping costs and delivery times will be automatically calculated + at the checkout based on your selected destination. Please note that any customs duties + or taxes applicable in your country are the responsibility of the customer.
+
+
+ + +
+

+ +

+
+
While you can place an order as a guest, creating an account + comes with added benefits. By having an account, you can easily track your orders, + manage your preferences, and enjoy a quicker checkout process for future purchases. It + also allows us to provide you with personalized recommendations and exclusive offers. +
+
+
+ + +
+

+ +

+
+
Once your order is dispatched, you will receive a confirmation + email containing a unique tracking number. You can use this tracking number on our + website to monitor the real-time status of your shipment. Additionally, logging into + your account will grant you access to a comprehensive order history, including tracking + information.
+
+
+ + +
+

+ +

+
+
Our refund policy is designed to ensure customer satisfaction. + Details can be found in our [refund policy page](insert link). In essence, we accept + returns within [insert number] days of receiving the product, provided it is in its + original condition with all tags and packaging intact. Refunds are processed promptly + once the returned item is inspected and approved.
+
+
+ + +
+

+ +

+
+
Our comprehensive size guide is conveniently located on each + product page to assist you in choosing the right fit. Additionally, you can find the + size guide in the main menu under "Size Guide." We recommend referring to these + resources to ensure your selected items match your preferred sizing.
+
+
+ + +
+

+ +

+
+
While guest checkout is available for your convenience, + creating an account enhances your overall shopping experience. With an account, you can + easily track your order status, save multiple shipping addresses, and enjoy a + streamlined checkout process. Moreover, account holders receive early access to + promotions and exclusive offers. Signing up is quick and hassle-free!
+
+
+ + +
+

+ +

+
+
Yes, we offer free shipping on orders exceeding $250. Orders + below this threshold are subject to standard shipping fees, which will be displayed + during the checkout process.
+
+
+ + +
+

+ +

+
+
Once an order is confirmed, our system processes it promptly to + ensure timely dispatch. Therefore, modifications or cancellations are challenging after + this point. However, please contact our customer support as soon as possible, and we + will do our best to assist you based on the order status.
+
+
+
+
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/home/electronics.blade.php b/resources/views/home/electronics.blade.php new file mode 100644 index 0000000..a89188d --- /dev/null +++ b/resources/views/home/electronics.blade.php @@ -0,0 +1,1960 @@ +@extends('layouts.landing', ['title' => 'Electronics Store']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+ + +
+
+
+
+ + +
+
+ + +
+
+
+

Feel the real quality sound

+

Headphones ProMax

+ + Shop now + + +
+
+

Deal of the week

+

Powerful iPad Pro M2

+ + Shop now + + +
+
+

Virtual reality glasses

+

Experience New Reality

+ + Shop now + + +
+
+
+
+ +
+ + +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+ + + +
+
+ + +
+
+
+ +
+
+

Free Shipping & Returns

+

For all orders over $199.00

+
+
+
+ + +
+
+
+ +
+
+

Secure Payment

+

We ensure secure payment

+
+
+
+ + +
+
+
+ +
+
+

Money Back Guarantee

+

Returning money 30 days

+
+
+
+ + +
+
+
+ +
+
+

24/7 Customer Support

+

Friendly customer support

+
+
+
+
+
+ + + +
+

New arrivals

+
+ + +
+
+
+ Laptop +
+

MacBook

+

Be Pro Anywhere

+ + From $1,199 + + +
+
+ + +
+ + +
+
+ Smart Watch +
+
+
+
+ + + + + +
+ 45 +
+

+ + Smart Watch Series 7, White + +

+
$449.00
+
+
+ + +
+
+ VR Glasses +
+
+
+
+ + + + + +
+ 123 +
+

+ + VRB01 Virtual Reality Glasses + +

+
$340.99
+
+
+ + +
+
+ Bluetooth Headphones +
+
+
+
+ + + + + +
+ 34 +
+

+ + Wireless Bluetooth Headphones Sony + +

+
$357.00
+
+
+ + +
+
+ MacBook +
+
+
+
+ + + + + +
+ 34 +
+

+ + Laptop Apple MacBook Pro 13 M2 + +

+
$1,200.00
+
+
+
+ + +
+ + +
+
+ iPad Pro +
+
+
+
+ + + + + +
+ 126 +
+

+ + Tablet Apple iPad Air M1 + +

+
$540.00
+
+
+ + +
+
+ AirPods 2 Pro +
+
+
+
+ + + + + +
+ 340 +
+

+ Headphones + Apple AirPods 2 Pro +

+
$209.99 $356.00 +
+
+
+ + +
+
+ Power Bank +
+
+
+
+ + + + + +
+ 29 +
+

+ + Power Bank PBS 10000 mAh Black + +

+
$49.99
+
+
+ + +
+
+ iPhone 14 +
+
+
+
+ + + + + +
+ 12 +
+

+ + Apple iPhone 14 128GB White + +

+
$899.00 $958.00 +
+
+
+
+
+
+ + + +
+ + +
+

Trending products

+ +
+ + +
+ + +
+
+
+
+
+ + +
+
+ + + -21% +
+ VR Glasses +
+
+
+
+
+
+ + + + + +
+ (123) +
+

+ + VRB01 Virtual Reality Glasses + +

+
+
$340.99 $430.00
+ +
+
+
+ +
    +
  • + Display: + + OLED 1440x1600 +
  • +
  • + Graphics: + + Adreno 540 +
  • +
  • + Sound: + + 2x3.5mm jack +
  • +
  • + Input: + + 4 built-in cameras +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (142) +
+

+ + Apple iPhone 14 128GB White + +

+
+
$899.00
+ +
+
+
+ +
    +
  • + Display: + + 6.1" XDR +
  • +
  • + Capacity: + + 128 GB +
  • +
  • + Chip: + + A15 Bionic +
  • +
  • + Camera: + + 12 + 12 MP +
  • +
  • + Weight: + + 172 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Smart Watch +
+
+
+
+
+
+ + + + + +
+ (67) +
+

+ + Smart Watch Series 7, White + +

+
+
$429.00
+ +
+
+
+ +
    +
  • + Display: + + 45mm OLED +
  • +
  • + Chip: + + 64-bit Dual-core +
  • +
  • + Connectivity: + + Wi-Fi, Bluetooth +
  • +
  • + Power: + + Lithium-ion battery +
  • +
  • + Weight: + + 37.0 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + + New +
+ MacBook +
+
+
+
+
+
+ + + + + +
+ (51) +
+

+ + Laptop Apple MacBook Pro 13 M2 + +

+
+
$1,200.00
+ +
+
+
+ +
    +
  • + Chip: + + Apple M2 +
  • +
  • + Memory: + + 8 GB unified +
  • +
  • + Storage: + + 256 GB SSD +
  • +
  • + Display: + + 13.3-inch Retina +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPad Air +
+
+
+
+
+
+ + + + + +
+ (12) +
+

+ + Tablet Apple iPad Air M1 + +

+
+
$540.00
+ +
+
+
+ +
    +
  • + Display: + + 10.9" LED +
  • +
  • + Capacity: + + 64 GB +
  • +
  • + Chip: + + Apple M1 +
  • +
  • + Camera: + + 12 MP Wide +
  • +
  • + Weight: + + 462 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ AirPods 2 +
+
+
+
+
+
+ + + + + +
+ (78) +
+

+ + Headphones Apple AirPods 2 Pro + +

+
+
$224.00
+ +
+
+
+ +
    +
  • + Audio: + + Noise Cancellation +
  • +
  • + Sensors: + + Touch control +
  • +
  • + Chip: + + Apple H2 +
  • +
  • + Weight: + + 50.8 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPad Pro +
+
+
+
+
+
+ + + + + +
+ (49) +
+

+ + Tablet Apple iPad Pro M1 + +

+
+
$739.00
+ +
+
+
+ +
    +
  • + Display: + + 11" LED +
  • +
  • + Capacity: + + 128 GB +
  • +
  • + Chip: + + Apple M1 +
  • +
  • + Camera: + + 12 MP Wide +
  • +
  • + Weight: + + 470 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Bluetooth Headphones +
+
+
+
+
+
+ + + + + +
+ (136) +
+

+ + Wireless Bluetooth Headphones Sony + +

+
+
$299.00
+ +
+
+
+ +
    +
  • + Audio: + + Noise Cancellation +
  • +
  • + Connectivity: + + Bluetooth, 3.5mm jack +
  • +
  • + Material: + + Leather, Plastic +
  • +
  • + Weight: + + 185 grams +
  • +
+
+
+
+
+
+ + + +
+
+
+
+
+ + +
+
+ + +
+
+ 20 + + % + OFF + +
+
+
+
+
+ + + +
+
+ + +
+
+
+

Seasonal weekly sale 2024

+

Use code Sale + 2024 to get best offer

+
+
+
+
+ Camera +
+
+
+
+
+
+
+
+
+ + + +
+ + +
+
+

Special offers for you

+ + +
+
+ + d +
+
:
+
+ + h +
+
:
+
+ + m +
+
+
+ +
+ + +
+ + + + + + +
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Wireless Buds +
+
+
+
+
+
+ + + + + +
+ (14) +
+

+ + Xiaomi Wireless Buds Pro + +

+
+
$129.99 $156.00
+ +
+
+
+
+
Available: 112
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Smart Watch +
+
+
+
+
+
+ + + + + +
+ (138) +
+

+ + Smart Watch Series 7, White + +

+
+
$429.00 $486.00
+ +
+
+
+
+
Available: 45
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Nikon Camera +
+
+
+
+
+
+ + + + + +
+ (64) +
+

+ + VRB01 Camera Nikon Max + +

+
+
$652.00 $785.00
+ +
+
+
+
+
Available: 13
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (51) +
+

+ + Apple iPhone 14 128GB Blue + +

+
+
$652.00 $785.00
+ +
+
+
+
+
Available: 7
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ VR Glasses +
+
+
+
+
+
+ + + + + +
+ (19) +
+

+ + VRB01 Virtual Reality Glasses + +

+
+
$340.99 $430.00
+ +
+
+
+
+
Available: 16
+
+
+
+
+
+ + +
+ + +
+
+
+ + + +
+ +
+ + + +
+
+
+
+

Sign up to our newsletter

+

Receive our latest updates about our products & promotions +

+
+
+ +
+ +
+ +
+ +
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/home/fashion-v1.blade.php b/resources/views/home/fashion-v1.blade.php new file mode 100644 index 0000000..bfef74d --- /dev/null +++ b/resources/views/home/fashion-v1.blade.php @@ -0,0 +1,2228 @@ +@extends('layouts.landing', ['title' => 'Fashion Store v.1']) + +@section('content') +
+ + +
+
+

Shopping cart

+ +
+

Buy $53 more to get Free Shipping

+
+
+
+
+
+ + +
+ + +
+ + Thumbnail + +
+
+ Leather sneakers with golden laces +
+
$74.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Classic cotton men's shirt +
+
$27.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Polarized sunglasses for men +
+
$96.00 112.00
+
+
+ + + +
+ +
+
+
+
+ + +
+
+ Subtotal: + $197.00 +
+ +
+
+ + + +
+
+
+ +
+
+
🎉 Free Shipping on orders over $250. Don't miss a discount!
+
💰 Money back guarantee. We return money within 30 days.
+
💪 Friendly 24/7 customer support. We've got you covered!
+
+
+ +
+ +
+
+ + + +
+ + +
+
+
+ + +
+
+
+
+ + +
+

The new warm collection

+

New fall
season 2024

+ + Shop now + + +
+ + +
+

Ready for the party?

+

Choose outfits for parties

+ + Shop now + + +
+ + +
+

Shades of gray for your look

+

-50% on gray Collection

+ + Shop now + + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ Image +
+
+ Image +
+
+ Image +
+
+
+
+
+
+
+
+ + + +
+
+ + +
+
+
+

Popular products

+ + +
+ + +
+
+ + + +
+
+ + +
+
+
+
+
+
+
+ Image +
+
+
+
+
+ Image +
+
+
+
+
+
+ + + +
+

This week's highlights

+ + +
+
+ +
+
+ + +
+ + +
+
+
+ Sale + + +
+ Image +
+
+
+
+ XS + S + M + L + +
+
+
+ +
$126.50 $156.00
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ 6.5 + 7 + 7.5 + 8 + +
+
+
+ +
$74.00
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ S + M + L + XL + +
+
+
+ +
$32.99
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+ +
$105.00
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ XS + S + M + L + +
+
+
+ +
$38.50
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+ +
$140.00
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ -17% + + +
+ Image +
+
+
+ +
$96.00 $112.00
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ M + L + XL +
+
+
+ +
$27.00
+
+
+3 colors
+
+ + + + + + + + +
+
+
+
+
+
+ + + +
+
+

New arrivals

+

Meet the Cartzilla collection

+
+
+ + +
+
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+
+ + +
+
+

New arrivals

+

Meet the Cartzilla collection

+
+
+ + + + + +
+ +
+ + + +
+
+
+
+ + + +
+
+ + + +
+
+
+ + + +
+
+

Happy customers

+
+ + + + + + +
+
+ + +
+
+
+
+
+ Image +
+
+
+ + + + + +
+

Victoria Gardner

+
+
+

Very satisfied with the bag! A wonderful shopper, not too big and + not too small, but as it should be 🔥 The bag looks more expensive than it + costs.

+
+
+
+ + +
+
+
+
+
+ Image +
+
+
+ + + + + +
+

Alexandra D.

+
+
+

A wonderful compact bag, holds a lot of things, good tailoring, + smooth seams, strong fittings, good quality.

+
+
+
+ + +
+
+
+
+
+ Image +
+
+
+ + + + + +
+

Jenny Wilson

+
+
+

Elegant blouse and the color is very nice, the seams are neat. 🛍 + Excellent quality fabric, for summer weather is very good because the fabric is + light and does not stick to the body.

+
+
+
+ + +
+
+
+
+
+ Image +
+
+
+ + + + + +
+

Kristin Watson

+
+
+

The quality is impeccable, sturdy yet stylish. They provide + excellent support, comfortable for all-day wear. The massive design adds a + unique edge to any outfit.

+
+
+
+ + +
+
+
+
+
+ Image +
+
+
+ + + + + +
+

Daniel Adams

+
+
+

These sunglasses are a game-changer! Not only do they offer + superior protection from the sun, but they also elevate my style.

+
+
+
+
+ + +
+
+
+
+
+ + + +
+
+

+ + #cartzilla + +

+

Find more inspiration on our Instagram

+
+ +
+
+ + @include('layouts.partials/footer2') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/home/fashion-v2.blade.php b/resources/views/home/fashion-v2.blade.php new file mode 100644 index 0000000..3ceb865 --- /dev/null +++ b/resources/views/home/fashion-v2.blade.php @@ -0,0 +1,2582 @@ +@extends('layouts.landing', ['title' => 'Fashion Store v.2']) + +@section('content') +
+ + +
+
+

Shopping cart

+ +
+

Buy $53 more to get Free Shipping

+
+
+
+
+
+ + +
+ + +
+ + Thumbnail + +
+
+ Leather sneakers with golden laces +
+
$74.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Classic cotton men's shirt +
+
$27.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Polarized sunglasses for men +
+
$96.00 112.00
+
+
+ + + +
+ +
+
+
+
+ + +
+
+ Subtotal: + $197.00 +
+ +
+
+ + + +
+
+
+ +
+
+
🎉 Free Shipping on orders over $250. Don't miss a discount!
+
💰 Money back guarantee. We return money within 30 days.
+
💪 Friendly 24/7 customer support. We've got you covered!
+
+
+ +
+ +
+
+ + + +
+ + +
+
+
+
+
+

The new stylish collection

+

New fall season + 2024

+ + Shop now + + +
+
+
+
+ +
+ ' + tabindex="1" aria-label="Hotspot"> + + + White cotton blouset +
38.50
+
+
+ ' + tabindex="1" aria-label="Hotspot"> + + + Brown corduroy pants +
64.99
+
+ + ' + tabindex="1" aria-label="Hotspot"> + + +
+ Image +
+ + + + + + + +
+ + + +
+
+
+ + +
+
+
+
+

For men

+ + +
+
+ Image +
+
+ + +
+
+ + +
+
+
+
+

For women

+ + +
+
+ Image +
+
+ + +
+
+ + +
+
+
+
+

Accessories

+ + +
+
+ Image +
+
+ + +
+
+
+ + +
+
+
+ + + +
+

This week's highlights

+ + +
+
+ +
+
+ + +
+ + +
+
+
+ Sale + + +
+ Image +
+
+
+
+ XS + S + M + L + +
+
+
+ +
$126.50 $156.00
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+ +
$112.00
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ S + M + L + XL + +
+
+
+ +
$54.00
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+ +
$105.00
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+

Sweatshirts

+

Colors for your mood

+
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+ Shop now +
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ 6 + 6.5 + 7 + 7.5 + +
+
+
+ +
$86.50
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ M + L + XL +
+
+
+ +
$27.00
+
+
+3 colors
+
+ + + + + + + + +
+
+
+
+
+
+ + + +
+

Special offers for you

+
+
+ + +
+
+
+ + +
+
+
+ -30% + Image +
+
+
+ Polarized sunglasses for + men +
+
$56.00 $80.00
+ Shop now +
+ + + +
+
+ + +
+
+
+ -17% + Image +
+
+
+ Fashionalble women fedora + hat +
+
$43.00 $50.00
+ Shop now +
+ + + +
+
+
+
+
+ + +
+ + +
+
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+ + +
+ + +
+
+ + + +
+

Shop by brand

+
+ +
+
+ + + +
+
+

+ + #cartzilla + +

+

Find more inspiration on our Instagram

+
+ +
+
+ + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/home/furniture.blade.php b/resources/views/home/furniture.blade.php new file mode 100644 index 0000000..b03f29a --- /dev/null +++ b/resources/views/home/furniture.blade.php @@ -0,0 +1,1199 @@ +@extends('layouts.landing', ['title' => 'Furniture Store']) + +@section('content') + +
+
+

Shopping cart

+ +
+
+ + + + +
Your shopping cart is currently empty!
+

Explore our wide range of products and add items to your cart to proceed with your + purchase.

+ Continue shopping +
+
+ + @include('layouts.partials/navbar2') + +
+ + +
+
+

Everything You Need for a Modern + Interior

+
+ + +
+
+ + +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+
+
+ + +
+ +
+ + +
+
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+
+ + +
+ +
+ + +
+
+ + +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+
+
+
+ + +
+
+
+

Navy blue low sofa for relaxation +

+

$1,250.00

+ + Shop now + + +
+
+

Armchair with wooden legs 70x120 cm +

+

$269.99

+ + Shop now + + +
+
+

Bed frame light gray 140x200 cm

+

$760.00

+ + Shop now + + +
+
+

Blue armchair with iron legs

+

$220.00

+ + Shop now + + +
+
+
+
+
+ + + +
+ +
+ + + +
+ + +
+

Popular products

+ +
+ + +
+ + + + + + +
+
+ + +
+
+ + Product + Room + +
+ + + + + + +
+

+ + Bed frame light gray 140x200 cm + +

+
$760.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Blue armchair with iron legs + +

+
$220.00
+
+ + +
+
+
+ + +
+
+ +
+ -13% +
+ Product + Room +
+
+ + + + + + +
+

+ + Loft-style lamp 120x80 cm + +

+
$140.00 $160.00 +
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Armchair with wooden legs 60x100 cm + +

+
$320.50
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + + + + + +
+

+ + Decorative flowerpot with a plant + +

+
$107.50
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Chair with a cushion for the legs + +

+
$435.00
+
+ + +
+
+
+
+
+
+ + +
+ + +
+
+ + + +
+

Interior design and inspiration

+ + + + + +
+
+ + +
+ + Indigo coushy low sofa +
$856.00
+
+
+ ' + tabindex="1" aria-label="Hotspot"> + + + + Indigo coushy low sofa +
$856.00
+
+ + ' + tabindex="1" aria-label="Hotspot"> + + + + Ergonomic beige armchair +
$235.00
+ + + ' + tabindex="1" aria-label="Hotspot"> + + + + Ergonomic beige armchair +
$235.00
+ + + ' + tabindex="1" aria-label="Hotspot"> + + + Waves modern painting +
$74.99
+ + + ' + tabindex="1" aria-label="Hotspot"> + + + Image + + + +
+ Image +
+ +
+ + +
+ Image +
+ + +
+ Image +
+
+ +
+ + + +
+
+
+ + + +

Eco-friendly

+

Decorate your space with eco-friendly furniture with low VOCs, + environmentally friendly materials and safe coatings.

+
+
+ + + +

Unbeatable quality

+

We choose raw materials from the best manufacturers, so our furniture and + decor are of the highest quality at the best prices.

+
+
+ + + +

Delivery to your door

+

We will deliver to your door anywhere in the world. If you're not 100% + satisfied, let us know within 30 days and we'll solve the problem.

+
+
+
+ + + +
+
+ + +
+
+
+
+ Image + +
+ + +
+
+
Best deal
+

Scandinavian green chair with wooden legs 60x100 cm +

+
+ Product +
+
$357.00
+ Shop + now +
+
+
+
+ + + +
+ + +
+

Blog and news

+ +
+ + +
+
+ + + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/home/grocery.blade.php b/resources/views/home/grocery.blade.php new file mode 100644 index 0000000..cc8faef --- /dev/null +++ b/resources/views/home/grocery.blade.php @@ -0,0 +1,2014 @@ +@extends('layouts.landing', ['title' => 'Grocery Store']) + +@section('content') + @include('layouts.partials/offcanvas2') + +
+ + +
+
+

Delivery options

+ +
+ +
+ +
+ + +
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+ +
+
Add an address to start ordering
+ + + Find on map + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+
+ +
+
+ + +
+
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+
+ + +
+
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+
+ + +
+
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+
+ + +
+ +
+
Select a suitable store
+ + + Find on map + +
+
+ + +
+
+ + +
+
Found stores:
+
+ +
+ +
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+ +
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+ +
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+ + + +
+
+ + +
+ +
+
+ + @include('layouts.partials/menu-offcanvas') + + + +
+ +
+ +
+ + +
+
+
+ + +
+
+
+
+
+

🔥 Free shipping - order over + 50$ +

+

Healthy Food Available to Everyone

+ Shop now +
+
+
+
+ Image +
+ + +
+
+
+
+
+

🥚 Organic products to your table

+

Organic eggs from home-grown chicken +

+ Shop now +
+
+
+
+ Image +
+ + +
+
+
+
+
+

🥝 Only natural ingredients

+

Enjoy refreshing summer drink

+ Shop now +
+
+
+
+ Image +
+
+ + +
+
+
+
+
+
+
+
+ + + +
+
+
+ + +
+
+
+

124 products

+

Only fresh fish to your table

+ +
+
+ Image +
+
+
+ + +
+
+
+

97 products

+

Products for Easter table

+ +
+
+ Image +
+
+
+ + +
+
+
+

28 products

+

Berries from the garden

+ +
+
+ Image +
+
+
+
+ + +
+
+
+ + + +
+
+ + +
+

Categories

+ +
+ +
+
+

Popular products

+ +
+ + +
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
500g
+
+
+ + +
+
+
+ -30% + + +
+ Image +
+
+
+
+ +
+
+
+
+
$3.12 $4.05
+

+ Fresh orange Klementina, Spain +

+
+
1kg
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$0.80
+

+ Pepsi soda classic, can +

+
+
330ml
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
250g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$1.24
+

+ Coconut, Indonesia +

+
+
1 coconut
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
200g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$1.99
+

+ Fresh mango, Spain +

+
+
1 mango
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
300g
+
+
+
+
+
+
+ + + +
+

Shop by lifestyle

+
+
+ + +
+
+ + + +
+

+ + Gluten-Free + +

+

Foods that don't contain gluten

+
+ + +
+
+ + + + + + + + + +
+

+ + Vegan + +

+

Vegetable based goodness

+
+ + +
+
+ + + + +
+

+ + Plant based + +

+

Based on herbal ingredients

+
+ + +
+
+ + + + +
+

+ + Keto + +

+

Good fats served in food

+
+
+ + +
+
+
+ + + +
+
+ + +
+
+
+
+

Make breakfast healthy and easy

+ +
+
+ Banner +
+
+
+
+ + +
+
+

Special products

+ +
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$18.60
+

+ Pure virgin olive oil Basso +

+
+
1000ml
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
500g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$3.40
+

+ Fresh red grapefruit +

+
+
1kg
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
150g
+
+
+
+ + +
+
+
+
+
+ + + +
+

Recipes

+
+ + +
+
+ + +
+
+ Image +
+
+

+ Garden salad with a + mix of lettuce, cucumber and tomato +

+
+
+ + 30 min +
+
+ + Easy +
+
+ + 4 por +
+
+
+
+ + +
+
+ Image +
+
+

+ Raspberry fresh + lemonade with lemon, strawberry syrup and mint +

+
+
+ + 50 min +
+
+ + Hard +
+
+ + 8 por +
+
+
+
+ + +
+
+ Image +
+
+

+ Penne pasta with + spinach and zucchini in a creamy sauce +

+
+
+ + 25 min +
+
+ + Easy +
+
+ + 2 por +
+
+
+
+
+ +
+ + +
+
+
+ + Book cover + +
+ Cookbook +

The Best in Gastronomy

+
Author: Dana + Chambers
+

An exquisite cookbook that takes readers on a culinary + journey around the world. With stunning photography and detailed instructions ...

+
$12.40
+ + Shop book + + +
+
+
+
+
+
+ + + +
+
+ + +
+
+
+

Make online shop easier with our Cartzilla App

+ +
+
+ Image +
+
+
+ + +
+
+
+ Image +
+
+

We'd love to hear what you think!

+ +
+
+
+
+
+
+ + @include('layouts.partials/footer2') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/home/marketplace.blade.php b/resources/views/home/marketplace.blade.php new file mode 100644 index 0000000..17f24d9 --- /dev/null +++ b/resources/views/home/marketplace.blade.php @@ -0,0 +1,1579 @@ +@extends('layouts.landing', ['title' => 'Marketplace']) + +@section('content') + + +
+ + +
+
+

Cart (3)

+ +
+
+ + +
+ + +
+ +
+ Thumbnail +
+
+
+
+ Multi device mockup PSD +
+
$27
+
+
+ +
+ +
+
+
+ + +
+ +
+ Thumbnail +
+
+
+
+ Isometric device mockups +
+
$12
+
+
+ +
+ +
+
+
+ + +
+ +
+ Thumbnail +
+
+
+
+ Modern poster with abstract shapes +
+
$8
+
+
+ +
+ +
+
+
+
+ + +
+
+ Subtotal: + $47 +
+ Checkout +
+
+ + + +
+ + +
+
+ + +
+
+

High-quality design resources tailored for busy creatives

+

Discover top-notch 3D and vector illustrations, photos images, designs and + mockups.

+
+
+ + + + + +
+

Browse by most popular formats

+ +
+
+ + +
+
+
+
+
+ + + +
+
+

Latest products

+ + +
+ + +
+
+ + +
+
+ + +
+
+
+ + Image + +
+ +
+
+ +
+
+ + + + + +
+
+
+ + Image + +
+ +
+
+ +
+
+
+
+
+ + + +
+
+

Explore design resources

+
+ +
+
+ + +
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
119 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
132 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+ +
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
43 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
247 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
56 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+ +
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
192 sales
+
+
+
+
+
+ + + +
+ + + +
+

Best collections

+
+ + +
+
+
+ Image +
+
+
+ Image +
+
+ Image +
+
+
+ + +
+
546 resources
+
+
+ + +
+
+
+ Image +
+
+
+ Image +
+
+ Image +
+
+
+ + +
+
112 resources
+
+
+ + +
+
+
+ Image +
+
+
+ Image +
+
+ Image +
+
+
+ + +
+
305 resources
+
+
+ + +
+
+
+ Image +
+
+
+ Image +
+
+ Image +
+
+ +
289 resources
+
+
+
+ + + +
+
+ + @include('layouts.partials/footer3') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/home/single-store.blade.php b/resources/views/home/single-store.blade.php new file mode 100644 index 0000000..979bc5c --- /dev/null +++ b/resources/views/home/single-store.blade.php @@ -0,0 +1,1135 @@ +@extends('layouts.landing', ['title' => 'Single Product Store']) + +@section('content') +
+
+

Shopping cart

+ +
+
+ + + + +
Your shopping cart is currently empty!
+

Add item(s) to the cart to proceed with your purchase.

+ +
+
+ + + +
+ + +
+ + +
+
+
+

+ Modern + Reliable + Fresh + Modern + Reliable + Fresh + Modern + Reliable + Fresh +

+
+
+
+
+ +
12 hours of hot comfort
+
+
+ + + +
24 hours of ice-cold refreshment
+
+
+ +
The quality free from harmful chemicals
+
+
+
+
+
+ + + Foreground image + + + Background image +
+ + + +
+
+
+

The clever choice for modern hydration

+
+
+
+
+
+
+ + + +

24 Hours cold drink

+

Your drinks stay at the perfect temperature

+
+
+ + + +

Eco-friendly and safe

+

The highest-quality free from harmful chemicals

+
+
+
+
+
+ Image +
+
+
+
+
+ + + +

Leak-proof cap

+

Bottle without worrying about leaks

+
+
+ + + +

30-day money-back guarantee

+

We offer a full refund within 30 days

+
+
+
+
+
+ +
+
+ + + +
+
+
+
+
+
+
+ Image +
+
+
+
+
+

Temperature control

+

Experience the power of advanced insulation technology that + keeps your drinks at just the right temperature all day long. Whether it's a hot summer day + or a chilly morning, your beverages will stay perfectly chilled or warmly comforting. Say + goodbye to lukewarm drinks!

+
+
+ + + +
24 hours of ice-cold refreshment
+
+
+ +
12 hours of hot comfort
+
+
+
+
+
+
+
+
+
+
+
+
+ Image + +
+
+
+
+
+
+ Image + Image +
+

A healthier way to hydrate

+

Your health and well-being are our top priorities, which is why we've + designed our metallic water bottles using the highest quality materials. Every sip from our + bottles is a step towards a healthier lifestyle, free from harmful chemicals and + contaminants.

+
+
+
+
+
+ + + +
+
+
+

Express yourself with a rainbow of colors

+ +

We believe in the quality and performance of our bottles, and we want you to + feel the same. We offer a 30-day money-back + guarantee.

+ +
+
+
+
+
+ Freshness +
+
+
+
+ Sunflower +
+
+
+
+ Heavenly +
+
+
+
+ Darkness +
+
+
+
+
+
+ + + +
+
+
+ + +
+

They are happy with Bottle

+ +
+ + +
+
+ + +
+
+
+ + + + + +
+

Perfect for daily use!

+

I bought the metallic blue bottle, and it has quickly become my go-to + for everything! It keeps my water cold all day, even during my long shifts at work. + Absolutely love it 🤩

+
+ + + +
+ + +
+
+
+ + + + + +
+

Stays fresh and odor-free

+

I love that this bottle doesn't retain any odors or flavors from + previous drinks. I switch between coffee, juice, and water, and it always tastes + fresh. The durability is also impressive. I've dropped it a few times, and it still + looks brand new! ✨

+
+ + + +
+
+
+ + +
+
+
+ + + + + +
+

Great for the gym

+

I've taken this bottle to the gym every day for the past month, and + it's still in perfect condition. The leak-proof design is a lifesaver, and the + bright red color really stands out in my bag. Only wish it held a bit more water, + but otherwise, it's fantastic!

+
+ + + +
+ + +
+
+
+ + + + + +
+

Perfect for travel

+

I bought this bottle for a recent trip, and it was amazing 🔥. It + kept my coffee hot during the entire flight and fit perfectly in my bag without + leaking.

+
+ + + +
+
+
+ + +
+
+
+ + + + + +
+

Stylish and functional

+

I was looking for a bottle that was both stylish and durable, and + this one exceeded my expectations ❤️. The rose gold finish is stunning, and it keeps + my tea hot for hours.

+
+ + + +
+ + +
+
+
+ +
+
+
+ + + + + +
+

Keeps drinks cold for hours

+
+
+ + Image +
+
+
+
+ + +
+
+
+
+
+
+ + + +
+
+
+
+

Buy Bottle now and get 25% off

+ +
+
+ + +
+ +
+
+ + + +@endsection + +@section('scripts') + +@endsection diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php new file mode 100644 index 0000000..f35f93c --- /dev/null +++ b/resources/views/index.blade.php @@ -0,0 +1,1183 @@ +@extends('layouts.landing', ['title' => 'Multipurpose E-Commerce Bootstrap HTML Template']) + +@section('css') + +@endsection + +@section('content') + + + + +
+ + +
+ + +
+

Multipurpose Bootstrap 5 E-Commerce Template

+

Unlock the potential of your online business with our premium e-commerce front-end + template, carefully crafted on the latest Bootstrap framework.

+
+ + +
+
+ + +
+ +
+
+ Furniture Store + Furniture Store +
+ + +
+
+ + +
+ +
+
+ Grocery Store + Grocery Store +
+ + +
+
+
+
+ + +
+ +
+
+ Fashion Store v.1 + Fashion Store v.1 +
+ +
+
+ + +
+ +
+
+ Fashion Store v.2 + Fashion Store v.2 +
+ + +
+
+ + +
+ +
+
+ Electronics Store + Electronics Store +
+ + +
+
+
+
+ + +
+ +
+
+ Single Product Store + Single Product Store +
+ + +
+
+ + +
+ +
+
+ Marketplace + Marketplace +
+ + +
+
+
+
+
+ + + +
+

Complete E-Commerce Front-end Solution

+

All you need for your next e-commerce project +

+
+
+
+
+
+ + + +
+ E-Commerce Front-end + E-Commerce Front-end +
+
+
+
    +
  • + + + + Multiple Shop Layout Options +
  • +
  • + + + + Multiple Product Page Variations +
  • +
  • + + + + Complete Order Workflow: Cart + Checkout +
  • +
  • + + + + Shop Customer Account Pages +
  • +
  • + + + + Marketplace Vendor Account Pages +
  • + +
  • + + + + Electronics, Fashion, Grocery, Furniture,
    Marketplace and Single Product Store + Demos
    +
  • +
  • + + + + Blog Pages: Blog Layouts + Single Articles +
  • +
  • + + + + Help Center / Support Pages +
  • +
  • + + + + Secondary Pages: About, Contacts, 404, etc. +
  • +
  • + + + + 60+ Flexible Components (UI Kit) +
  • +
+
+
+
+ + + +
+
+
+
+ + Dark Mode + Light Mode +
+ + + + + + + +
+
+
+
+
+
+
+
+ + + +
+

Cartzilla Feature Highlights +

+
+
+ Bootstrap +

Built with Latest Bootstrap

+

Cartzilla is the powerful e-commerce front-end solution based on + Bootstrap 5 - the world's most popular responsive, mobile-first front-end component library.

+
+
+ Sass +

Easy to Customize with Sass

+

Cartzilla is built using Sass, allowing for effortless customization of + colors, typography, and beyond. It is the most mature, stable, and powerful CSS extension language + in the world.

+
+
+ Npm +

Kick-start Your Development

+

Start your development process fast and easy with included Npm scripts + setup, full tasks automation and local server hot reload. The configuration files are included in + the download package.

+
+
+ JavaScript +

Future-proof JavaScript

+

Cartzilla's core scripts, along with all dependencies, are meticulously + crafted in vanilla JS (ES6 modules), ensuring optimal performance and compatibility across various + platforms.

+
+
+ HTML5 +

W3C Valid HTML Code

+

As you likely know, ensuring 100% valid code through W3C validation for + all HTML files is crucial. Invalid HTML imposes restrictions on innovation, yet Cartzilla remains + innovative at its core.

+
+
+ Figma +

Premium Figma File Included

+

A well-crafted Figma design file is included in the download package. + It offers a visually stunning and thoroughly organized layout, utilizing Figma's components and + styles.

+
+
+ Touch UI +

Touch-enabled Sliders

+

In the era of touch screens it is important to ensure great user + experience on handheld devices, especially when it comes to such frequently used interface component + as slider.

+
+
+ Google Fonts +

Google Fonts

+

Cartzilla uses preloaded variable Google font (Inter) which is free, + fast to load and of very high quality. Currently Google fonts library includes 1600+ font families + to choose from.

+
+
+ Vector Icons +

Vector Based HD-ready Icons

+

Cartzilla is equiped with font-based icon pack and svg icons to ensure + that infographics and interface icons look sharp on any device with any screen resolution and pixel + density.

+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mobile screens + Mobile screens +
+
+
+
+

Mobile Friendly Interface. PWA ready

+

Cartzilla ensures seamless interactions across all devices. With + progressive web app (PWA) compatibility, users can enjoy the app-like experiences on their + mobile browsers.

+

Scan QR code below to test on your device: +

+ QR code + QR code +
+
+
+
+
+ + + +
+

Theme Customizer

+ + +
+
+
+ Colors + Colors +
+
+
+ Colors +

Change theme brand colors quickly and easily

+

Customize theme colors to match your brand palette using the color picker or just + type in the color hex. Supported colors: primary, warning, success, info, danger.

+
+
+ +
+ + +
+
+
+ Typography + Typography +
+
+
+ Typography +

Set up fonts from the huge Google font collection

+

Easily change the font to your liking. Choose the font from Google Fonts library of + 1,600+ open source font families. Update headings and body font sizes right from customizer.

+
+
+ +
+ + +
+
+
+ Borders + Borders +
+
+
+ Borders +

Rounded or square? Customize borders as you wish

+

It's up to you to make your website soft and friendly with increased border radius or + add business vibes with less rounded shapes. Additionally, you can adjust the border width.

+
+
+
+
+ + +
+
+
+
+
+
+

Still not convinced?

+

Add premium support and lifetime updates to this.

+ + + Buy now + +
+
+
+ © All rights reserved. Made by Coderthemes +
+
+
+ + + + +@endsection + +@section('scripts') +@endsection \ No newline at end of file diff --git a/resources/views/layouts/account.blade.php b/resources/views/layouts/account.blade.php new file mode 100644 index 0000000..ac20abc --- /dev/null +++ b/resources/views/layouts/account.blade.php @@ -0,0 +1,114 @@ + + + + + @include('layouts.partials/title-meta') + + @vite(['resources/js/theme-switcher.js']) + + @include('layouts.partials/head-css') + + + + + + + + @include('layouts.partials/offcanvas') + + + + + @include('layouts.partials/navbar', ['account' => true]) + + +
+
+
+ + @include('layouts.partials/account-sidebar') + + @yield('content') + +
+
+
+ + @include('layouts.partials/footer') + + @include('layouts.partials/back-to-top') + + @include('layouts.partials/footer-script') + + + + diff --git a/resources/views/layouts/base.blade.php b/resources/views/layouts/base.blade.php new file mode 100644 index 0000000..45f0b66 --- /dev/null +++ b/resources/views/layouts/base.blade.php @@ -0,0 +1,21 @@ + + + + + @include('layouts.partials/title-meta') + + @vite(['resources/js/theme-switcher.js']) + + @include('layouts.partials/head-css') + + + + @yield('content') + + @include('layouts.partials/back-to-top') + + @include('layouts.partials/footer-script') + + + + diff --git a/resources/views/layouts/landing.blade.php b/resources/views/layouts/landing.blade.php new file mode 100644 index 0000000..d081c37 --- /dev/null +++ b/resources/views/layouts/landing.blade.php @@ -0,0 +1,23 @@ + + + + + @include('layouts.partials/title-meta') + + @vite(['resources/js/theme-switcher.js']) + + @include('layouts.partials/head-css') + + @yield('css') + + + +@yield('content') + +@include('layouts.partials/back-to-top') + +@vite(['resources/js/theme.js']) + + + + diff --git a/resources/views/layouts/marketplace.blade.php b/resources/views/layouts/marketplace.blade.php new file mode 100644 index 0000000..4b2f86a --- /dev/null +++ b/resources/views/layouts/marketplace.blade.php @@ -0,0 +1,59 @@ + + + + + @include('layouts.partials/title-meta') + + @vite(['resources/js/theme-switcher.js']) + + @include('layouts.partials/head-css') + + + + + + + @include('layouts.partials/offcanvas2') + + @include('layouts.partials/marketplace-navbar') + +
+
+
+ + @include('layouts.partials/marketplace-sidebar') + + + @yield('content') +
+
+
+ + @include('layouts.partials/footer3') + + @include('layouts.partials/back-to-top') + + @include('layouts.partials/footer-script') + + + + diff --git a/resources/views/layouts/partials/account-navbar.blade.php b/resources/views/layouts/partials/account-navbar.blade.php new file mode 100644 index 0000000..f208d33 --- /dev/null +++ b/resources/views/layouts/partials/account-navbar.blade.php @@ -0,0 +1,2226 @@ + diff --git a/resources/views/layouts/partials/account-sidebar.blade.php b/resources/views/layouts/partials/account-sidebar.blade.php new file mode 100644 index 0000000..60a12a5 --- /dev/null +++ b/resources/views/layouts/partials/account-sidebar.blade.php @@ -0,0 +1,93 @@ + + diff --git a/resources/views/layouts/partials/back-to-top.blade.php b/resources/views/layouts/partials/back-to-top.blade.php new file mode 100644 index 0000000..5286da1 --- /dev/null +++ b/resources/views/layouts/partials/back-to-top.blade.php @@ -0,0 +1,13 @@ + + diff --git a/resources/views/layouts/partials/checkout-navbar.blade.php b/resources/views/layouts/partials/checkout-navbar.blade.php new file mode 100644 index 0000000..82b36f8 --- /dev/null +++ b/resources/views/layouts/partials/checkout-navbar.blade.php @@ -0,0 +1,367 @@ + diff --git a/resources/views/layouts/partials/customizer.blade.php b/resources/views/layouts/partials/customizer.blade.php new file mode 100644 index 0000000..3a78585 --- /dev/null +++ b/resources/views/layouts/partials/customizer.blade.php @@ -0,0 +1,55 @@ +
+

Theme Customizer

+ + +
+
+
+ Colors + Colors +
+
+
+ Colors +

Change theme brand colors quickly and easily

+

Customize theme colors to match your brand palette using the color picker or just type in + the color hex. Supported colors: primary, warning, success, info, danger.

+
+
+ +
+ + +
+
+
+ Typography + Typography +
+
+
+ Typography +

Set up fonts from the huge Google font collection

+

Easily change the font to your liking. Choose the font from Google Fonts library of 1,600+ + open source font families. Update headings and body font sizes right from customizer.

+
+
+ +
+ + +
+
+
+ Borders + Borders +
+
+
+ Borders +

Rounded or square? Customize borders as you wish

+

It's up to you to make your website soft and friendly with increased border radius or add + business vibes with less rounded shapes. Additionally, you can adjust the border width.

+
+
+
diff --git a/resources/views/layouts/partials/footer-script.blade.php b/resources/views/layouts/partials/footer-script.blade.php new file mode 100644 index 0000000..6a7e759 --- /dev/null +++ b/resources/views/layouts/partials/footer-script.blade.php @@ -0,0 +1,3 @@ +@vite(['resources/js/theme.js']) + +@yield('scripts') \ No newline at end of file diff --git a/resources/views/layouts/partials/footer.blade.php b/resources/views/layouts/partials/footer.blade.php new file mode 100644 index 0000000..96e3dab --- /dev/null +++ b/resources/views/layouts/partials/footer.blade.php @@ -0,0 +1,280 @@ + diff --git a/resources/views/layouts/partials/footer2.blade.php b/resources/views/layouts/partials/footer2.blade.php new file mode 100644 index 0000000..e126211 --- /dev/null +++ b/resources/views/layouts/partials/footer2.blade.php @@ -0,0 +1,173 @@ +
+
+ + +
+
+
+ +
Regularly updated content
+

Stay ahead of trends, always having fresh and modern assets.

+
+
+ +
Subscription-based access
+

Find everything you need in one place, saving time and effort.

+
+
+ +
Exclusive collections
+

Partner with renowned designers and artists to create exclusive + collections.

+
+
+ +
User-friendly search
+

Spend less time searching and more time creating.

+
+
+
+ + +
+
+ + +
+
Join our newsletter, get discounts 🔥
+
+ + +
+ +
+ + +
+ +
+
+
+ + +

+ © All rights reserved. Made with by Coderthemes +

+
+ + +
+
diff --git a/resources/views/layouts/partials/footer3.blade.php b/resources/views/layouts/partials/footer3.blade.php new file mode 100644 index 0000000..550abda --- /dev/null +++ b/resources/views/layouts/partials/footer3.blade.php @@ -0,0 +1,170 @@ +
+
+ + +
+
+
+ +
Regularly updated content
+

Stay ahead of trends, always having fresh and modern assets.

+
+
+ +
Subscription-based access
+

Find everything you need in one place, saving time and effort.

+
+
+ +
Exclusive collections
+

Partner with renowned designers and artists to create exclusive + collections.

+
+
+ +
User-friendly search
+

Spend less time searching and more time creating.

+
+
+
+ + +
+
+ + +
+
Join our newsletter, get discounts 🔥
+
+ + +
+ +
+ + +
+ +
+
+
+ + +

+ © All rights reserved. Made with by Coderthemes +

+
+
diff --git a/resources/views/layouts/partials/head-css.blade.php b/resources/views/layouts/partials/head-css.blade.php new file mode 100644 index 0000000..82e8ccd --- /dev/null +++ b/resources/views/layouts/partials/head-css.blade.php @@ -0,0 +1,5 @@ +@vite(['node_modules/choices.js/public/assets/styles/choices.min.css', 'node_modules/swiper/swiper-bundle.min.css', 'node_modules/glightbox/dist/css/glightbox.min.css', 'node_modules/simplebar/dist/simplebar.min.css', 'node_modules/flatpickr/dist/flatpickr.min.css', 'node_modules/nouislider/dist/nouislider.min.css', 'node_modules/img-comparison-slider/dist/styles.css']) + +@vite(['resources/icons/cartzilla-icons.min.css']) +@vite(['resources/scss/theme.scss']) + diff --git a/resources/views/layouts/partials/marketplace-navbar.blade.php b/resources/views/layouts/partials/marketplace-navbar.blade.php new file mode 100644 index 0000000..89adfcd --- /dev/null +++ b/resources/views/layouts/partials/marketplace-navbar.blade.php @@ -0,0 +1,581 @@ + diff --git a/resources/views/layouts/partials/marketplace-sidebar.blade.php b/resources/views/layouts/partials/marketplace-sidebar.blade.php new file mode 100644 index 0000000..843be83 --- /dev/null +++ b/resources/views/layouts/partials/marketplace-sidebar.blade.php @@ -0,0 +1,80 @@ + diff --git a/resources/views/layouts/partials/menu-offcanvas.blade.php b/resources/views/layouts/partials/menu-offcanvas.blade.php new file mode 100644 index 0000000..943b805 --- /dev/null +++ b/resources/views/layouts/partials/menu-offcanvas.blade.php @@ -0,0 +1,589 @@ + \ No newline at end of file diff --git a/resources/views/layouts/partials/navbar.blade.php b/resources/views/layouts/partials/navbar.blade.php new file mode 100644 index 0000000..d406392 --- /dev/null +++ b/resources/views/layouts/partials/navbar.blade.php @@ -0,0 +1,2238 @@ + diff --git a/resources/views/layouts/partials/navbar2.blade.php b/resources/views/layouts/partials/navbar2.blade.php new file mode 100644 index 0000000..fd79238 --- /dev/null +++ b/resources/views/layouts/partials/navbar2.blade.php @@ -0,0 +1,517 @@ +
+ + 🔥 The Biggest Sale + Ever 50% Off + +
+ + diff --git a/resources/views/layouts/partials/offcanvas.blade.php b/resources/views/layouts/partials/offcanvas.blade.php new file mode 100644 index 0000000..e15d2c5 --- /dev/null +++ b/resources/views/layouts/partials/offcanvas.blade.php @@ -0,0 +1,123 @@ + +
+ + +
+
+

Shopping cart

+ +
+

Buy $183 more to get Free Shipping

+
+
+
+
+ + +
+ + +
+ + iPhone 14 + +
+
+ Apple iPhone 14 128GB White +
+
$899.00
+
+
+ + + +
+ +
+
+
+ + +
+ + -10% + iPad Pro + +
+
+ Tablet Apple iPad Pro M2 +
+
$989.00 $1,099.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Smart Watch + +
+
+ Smart Watch Series 7, White +
+
$429.00
+
+
+ + + +
+ +
+
+
+
+ + +
+
+ Subtotal: + $2,317.00 +
+ +
+
diff --git a/resources/views/layouts/partials/offcanvas2.blade.php b/resources/views/layouts/partials/offcanvas2.blade.php new file mode 100644 index 0000000..35ae4f0 --- /dev/null +++ b/resources/views/layouts/partials/offcanvas2.blade.php @@ -0,0 +1,149 @@ +
+ + +
+
+

Shopping cart

+ +
+ +
+ + +
+ + +
+ + -$2.79 + Thumbnail + +
+
+ Fresh orange Klementina, + Spain +
+
$3.12
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Pesto sauce Barilla with basil, + Italy +
+
$3.95
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Steak salmon fillet with + rosmary +
+
$27.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Sprite soda lemon lime, can +
+
$0.80
+
+
+ + + +
+ +
+
+
+
+ + +
+
+ Subtotal: + $68.91 +
+ +
+
diff --git a/resources/views/layouts/partials/title-meta.blade.php b/resources/views/layouts/partials/title-meta.blade.php new file mode 100644 index 0000000..e5aacee --- /dev/null +++ b/resources/views/layouts/partials/title-meta.blade.php @@ -0,0 +1,18 @@ + + + + + + +Cartzilla | {{ $title }} + + + + + + + + + + diff --git a/resources/views/shop/catalog-electronics.blade.php b/resources/views/shop/catalog-electronics.blade.php new file mode 100644 index 0000000..89b1506 --- /dev/null +++ b/resources/views/shop/catalog-electronics.blade.php @@ -0,0 +1,1876 @@ +@extends('layouts.landing', ['title' => 'Electronics Store - Catalog']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => True]) + +
+ + + + + + +

Shop catalog

+ + + +
+
+
+ +
+
+
+
+
+ + +
+

iPhone 14

+

Apple iPhone 14 128GB Blue

+ + From $899 + + +
+
+
+ iPhone 14 +
+
+
+
+
+
+ + +
+ +

Deal of the week

+

iPad Pro M1

+
+ +
+ iPad +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
Found 732 items
+
+ + + + + +
+
+
+
+
+ +
+ +
+
+
+
+
+
+ + + +
+
+ + + + + + +
+
+ + +
+
+
+
+
+ + +
+
+ + + -21% +
+ VR Glasses +
+
+
+
+
+
+ + + + + +
+ (123) +
+

+ + VRB01 Virtual Reality Glasses + +

+
+
$340.99 $430.00
+ +
+
+
+ +
    +
  • + Display: + + OLED 1440x1600 +
  • +
  • + Graphics: + + Adreno 540 +
  • +
  • + Sound: + + 2x3.5mm jack +
  • +
  • + Input: + + 4 built-in cameras +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (142) +
+

+ + Apple iPhone 14 128GB White + +

+
+
$899.00
+ +
+
+
+ +
    +
  • + Display: + + 6.1" XDR +
  • +
  • + Capacity: + + 128 GB +
  • +
  • + Chip: + + A15 Bionic +
  • +
  • + Camera: + + 12 + 12 MP +
  • +
  • + Weight: + + 172 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Smart Watch +
+
+
+
+
+
+ + + + + +
+ (67) +
+

+ + Smart Watch Series 7, White + +

+
+
$429.00
+ +
+
+
+ +
    +
  • + Display: + + 45mm OLED +
  • +
  • + Chip: + + 64-bit Dual-core +
  • +
  • + Connectivity: + + Wi-Fi, Bluetooth +
  • +
  • + Power: + + Lithium-ion battery +
  • +
  • + Weight: + + 37.0 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPad Air +
+
+
+
+
+
+ + + + + +
+ (12) +
+

+ + Tablet Apple iPad Air M1 + +

+
+
$540.00
+ +
+
+
+ +
    +
  • + Display: + + 10.9" LED +
  • +
  • + Capacity: + + 64 GB +
  • +
  • + Chip: + + Apple M1 +
  • +
  • + Camera: + + 12 MP Wide +
  • +
  • + Weight: + + 462 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ AirPods 2 +
+
+
+
+
+
+ + + + + +
+ (78) +
+

+ + Headphones Apple AirPods 2 Pro + +

+
+
$224.00
+ +
+
+
+ +
    +
  • + Audio: + + Noise Cancellation +
  • +
  • + Sensors: + + Touch control +
  • +
  • + Chip: + + Apple H2 +
  • +
  • + Weight: + + 50.8 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + + New +
+ MacBook +
+
+
+
+
+
+ + + + + +
+ (51) +
+

+ + Laptop Apple MacBook Pro 13 M2 + +

+
+
$1,200.00
+ +
+
+
+ +
    +
  • + Chip: + + Apple M2 +
  • +
  • + Memory: + + 8 GB unified +
  • +
  • + Storage: + + 256 GB SSD +
  • +
  • + Display: + + 13.3-inch Retina +
  • +
+
+
+
+
+ + +
+ + +
+
+
+

Seasonal weekly sale 2024

+

Use code Sale 2024 to get best offer

+
+
+
+
+ Camera +
+
+
+
+ +
+ + +
+
+
+
+
+ + +
+
+ + +
+ Dualsense Edge +
+
+
+
+
+
+ + + + + +
+ (187) +
+

+ + Sony Dualsense Edge Controller + +

+
+
$200.00
+ +
+
+
+ +
    +
  • + Controls: + + Adjustable triggers +
  • +
  • + Connectivity: + + Bluetooth +
  • +
  • + Audio: + + 3.5mm, built-in speaker +
  • +
  • + Weight: + + 325 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPad Pro +
+
+
+
+
+
+ + + + + +
+ (49) +
+

+ + Tablet Apple iPad Pro M1 + +

+
+
$739.00
+ +
+
+
+ +
    +
  • + Display: + + 11" LED +
  • +
  • + Capacity: + + 128 GB +
  • +
  • + Chip: + + Apple M1 +
  • +
  • + Camera: + + 12 MP Wide +
  • +
  • + Weight: + + 470 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Wireless Buds +
+
+
+
+
+
+ + + + + +
+ (142) +
+

+ + Xiaomi Wireless Buds Pro + +

+
+
$156.00
+ +
+
+
+ +
    +
  • + Audio: + + Noise Cancellation +
  • +
  • + Connectivity: + + Bluetooth +
  • +
  • + Material: + + Plastic +
  • +
  • + Weight: + + 98 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (335) +
+

+ + Apple iPhone 14 128GB Blue + +

+
+
$899.00
+ +
+
+
+ +
    +
  • + Display: + + 6.1" XDR +
  • +
  • + Capacity: + + 128 GB +
  • +
  • + Chip: + + A15 Bionic +
  • +
  • + Camera: + + 12 + 12 MP +
  • +
  • + Weight: + + 172 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Bluetooth Headphones +
+
+
+
+
+
+ + + + + +
+ (136) +
+

+ + Wireless Bluetooth Headphones Sony + +

+
+
$299.00
+ +
+
+
+ +
    +
  • + Audio: + + Noise Cancellation +
  • +
  • + Connectivity: + + Bluetooth, 3.5mm jack +
  • +
  • + Material: + + Leather, Plastic +
  • +
  • + Weight: + + 185 grams +
  • +
+
+
+
+ + +
+
+
+ Laptop +
+

MacBook

+

Be Pro Anywhere

+ + From $1,199 + + +
+
+ + +
+
+
+
+
+ + +
+
+ + + -17% +
+ Nikon Camera +
+
+
+
+
+
+ + + + + +
+ (14) +
+

+ + VRB01 Camera Nikon Max + +

+
+
$652.00 $785.00
+ +
+
+
+ +
    +
  • + Resolution: + + 45.7 MP +
  • +
  • + Sensor: + + 35.9mm x 23.9mm +
  • +
  • + Storage: + + SD card +
  • +
  • + Movie: + + 4K UHD +
  • +
  • + Weight: + + 216 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Power Bank +
+
+
+
+
+
+ + + + + +
+ (125) +
+

+ + Power Bank PBS 10000 mAh Black + +

+
+
$45.00
+ +
+
+
+ +
    +
  • + Capacity: + + 10000 mAh +
  • +
  • + Indcators: + + LED light +
  • +
  • + Color: + + Black +
  • +
  • + Movie: + + 4K UHD +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Smart Watch +
+
+
+
+
+
+ + + + + +
+ (67) +
+

+ + Smart Watch Series 7, White + +

+
+
$429.00
+ +
+
+
+ +
    +
  • + Display: + + 45mm OLED +
  • +
  • + Chip: + + 64-bit Dual-core +
  • +
  • + Connectivity: + + Wi-Fi, Bluetooth +
  • +
  • + Power: + + Lithium-ion battery +
  • +
  • + Weight: + + 37.0 grams +
  • +
+
+
+
+
+ + + +
+
+
+ + + +
+
+
+
+

Sign up to our newsletter

+

Receive our latest updates about our products & promotions

+
+
+ +
+ +
+ +
+ +
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/catalog-fashion.blade.php b/resources/views/shop/catalog-fashion.blade.php new file mode 100644 index 0000000..aa74acd --- /dev/null +++ b/resources/views/shop/catalog-fashion.blade.php @@ -0,0 +1,2669 @@ +@extends('layouts.landing', ['title' => 'Fashion Store - Catalog']) + +@section('content') +
+ + +
+
+

Shopping cart

+ +
+

Buy $53 more to get Free Shipping

+
+
+
+
+
+ + +
+ + +
+ + Thumbnail + +
+
+ Leather sneakers with golden laces +
+
$74.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Classic cotton men's shirt +
+
$27.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Polarized sunglasses for men +
+
$96.00 112.00
+
+
+ + + +
+ +
+
+
+
+ + +
+
+ Subtotal: + $197.00 +
+ +
+
+ + + +
+
+
+ +
+
+
🎉 Free Shipping on orders over $250. Don't miss a discount!
+
💰 Money back guarantee. We return money within 30 days.
+
💪 Friendly 24/7 customer support. We've got you covered!
+
+
+ +
+ +
+
+ + + +
+ + + + + + +

Shop catalog

+ + + +
+
+ + + + + + +
+ + +
+
Found 32 + items +
+
+ +
+ +
+
+
+ +
+ + +
+
+
+ Sale + + +
+ Image +
+
+
+
+ XS + S + M + L + +
+
+
+ +
$126.50 $156.00 +
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ S + M + L + XL + +
+
+
+ +
$54.00
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ 6 + 6.5 + 7 + 7.5 + +
+
+
+ +
$86.50
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+ +
$105.00
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ -17% + + +
+ Image +
+
+
+ +
$96.00 $112.00 +
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ M + L + XL +
+
+
+ +
$27.00
+
+
+3 colors
+
+ + + + + + + + +
+
+
+
+ + +
+
+

Sweatshirts

+

Colors for your mood

+
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+ Image +
+
+
+
+ Shop + now +
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ 6 + 6.5 + 7 + 7.5 + +
+
+
+ +
$160.00
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ 6.5 + 7 + 7.5 + 8 + +
+
+
+ +
$74.00
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ XS + S + M + L + +
+
+
+ +
$38.50
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+ +
$140.00
+
+
+2 colors
+
+ + + + + + +
+
+
+
+
+ + + +
+
+
+ + + +
+
+

+ + #cartzilla + +

+

Find more inspiration on our Instagram

+
+ +
+
+ + @include('layouts.partials/footer2') + + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/catalog-furniture.blade.php b/resources/views/shop/catalog-furniture.blade.php new file mode 100644 index 0000000..c33399a --- /dev/null +++ b/resources/views/shop/catalog-furniture.blade.php @@ -0,0 +1,1553 @@ +@extends('layouts.landing', ['title' => 'Furniture Store - Catalog']) + +@section('content') +
+
+

Shopping cart

+ +
+
+ + + + +
Your shopping cart is currently empty!
+

Explore our wide range of products and add items to your cart to proceed with your + purchase.

+ Continue shopping +
+
+ +
+ + +
+
Filter and sort
+ +
+ + +
+ + + + +
+ + +
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
Width
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
Height
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+
+ + @include('layouts.partials/navbar2') + +
+
+ + + + + + +

Shop catalog

+ + + +
+
+
+
+ +
+ + + + + + +
+ + +
+ +
+
+
+ + + +
+ + + + + +
+ + + +
+ + +
+
+ + Product + Room + +
+ + + + + + +
+

+ + Soft chair with cushion and wooden legs + +

+
$245.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + + + + + +
+

+ + Decorative flowerpot with a plant + +

+
$107.50
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + + + +
+

+ + Home fragrance with the aroma of spices + +

+
$24.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + + + +
+

+ + Bed frame light gray 140x200 cm + +

+
$760.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Blue armchair with iron legs + +

+
$220.00
+
+ + +
+
+
+ + +
+
+ +
+ -13% +
+ Product + Room +
+
+ + + + + + +
+

+ + Loft-style lamp 120x80 cm + +

+
$140.00 $160.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Chair with a cushion for the legs + +

+
$435.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Armchair with wooden legs 60x100 cm + +

+
$320.50
+
+ + +
+
+
+ + +
+
+ +
+ New +
+ Product + Room +
+
+ + + + +
+

+ + Leather office chair with one leg + +

+
$345.50
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + + + +
+

+ + Navy blue low sofa for relaxation + +

+
$1,250.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Armchair with wooden legs 70x120 cm + +

+
$269.99
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + +
+

+ + Wooden shelf for decor elements + +

+
$278.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + + + +
+

+ + Aluminium foldable desk lamp + +

+
$89.99
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Modern lounge couch on wooden frame + +

+
$638.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + +
+

+ + Adjustable hardwire wall sconce + +

+
$74.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Soft armchair with wooden legs + +

+
$215.00
+
+ + +
+
+
+
+ + + +
+

Showing 16 from 64

+
+
+
+
+ +
+
+
+ + + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/catalog-grocery.blade.php b/resources/views/shop/catalog-grocery.blade.php new file mode 100644 index 0000000..73e82d7 --- /dev/null +++ b/resources/views/shop/catalog-grocery.blade.php @@ -0,0 +1,2261 @@ +@extends('layouts.landing', ['title' => 'Grocery Store - Catalog']) + +@section('content') + @include('layouts.partials/offcanvas2') + +
+ + +
+
+

Delivery options

+ +
+ +
+ +
+ + +
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+ +
+
Add an address to start ordering
+ + + Find on map + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+
+ +
+
+ + +
+
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+
+ + +
+
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+
+ + +
+
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+
+ + +
+ +
+
Select a suitable store
+ + + Find on map + +
+
+ + +
+
+ + +
+
Found stores:
+
+ +
+ +
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+ +
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+ +
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+ + + +
+
+ + +
+ +
+
+ + @include('layouts.partials/menu-offcanvas') + + + +
+ +
+ +
+ + + + + + +

Shop catalog

+ + + +
+
+ + + + + + +
+ + +
+
Found 256 items
+
+ +
+ +
+
+
+ + +
+ + + + + +
+ + +
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
500g
+
+
+ + +
+
+
+ -30% + + +
+ Image +
+
+
+
+ +
+
+
+
+
$3.12 $4.05
+

+ Fresh orange Klementina, Spain +

+
+
1kg
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$0.80
+

+ Pepsi soda classic, can +

+
+
330ml
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
250g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$1.24
+

+ Coconut, Indonesia +

+
+
1 coconut
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
200g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$1.99
+

+ Fresh mango, Spain +

+
+
1 mango
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
300g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$18.60
+

+ Pure virgin olive oil Basso +

+
+
1000ml
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
500g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$3.40
+

+ Fresh red grapefruit +

+
+
1kg
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
150g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
1kg
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$1.75
+

+ Fresh red seedless grapes +

+
+
1kg
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$3.10
+

+ Fresh lemons, pack +

+
+
500g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
500g
+
+
+
+ + + +
+
+
+
+ + @include('layouts.partials/footer2') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/catalog-marketplace.blade.php b/resources/views/shop/catalog-marketplace.blade.php new file mode 100644 index 0000000..2a002ef --- /dev/null +++ b/resources/views/shop/catalog-marketplace.blade.php @@ -0,0 +1,1204 @@ +@extends('layouts.landing', ['title' => 'Marketplace - Catalog']) + +@section('content') + + + @include('layouts.partials/offcanvas2') + + + +
+
+ + + + + + +

Marketplace catalog

+ + + +
+
+ +
+
+
+
Format:
+
+ +
+
+
+
Sort by:
+
+ +
+
+
+
+ + + +
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
17 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
132 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
56 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
34 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
23 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+ +
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
95 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
47 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+ +
+
+ + +
+
+
+ + Image + +
+ +
+
+ +
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
86 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
119 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
43 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
10 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+ +
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
192 sales
+
+
+
+
+
+ + + + +
+
+ + @include('layouts.partials/footer3') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/categories-electronics.blade.php b/resources/views/shop/categories-electronics.blade.php new file mode 100644 index 0000000..66f3e1d --- /dev/null +++ b/resources/views/shop/categories-electronics.blade.php @@ -0,0 +1,1206 @@ +@extends('layouts.landing', ['title' => 'Electronics Store - Categories']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => True]) + +
+ + + + + + +

Shop categories

+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ + +
+
+ +
+ Smartphones +
+
+

+ Smartphones +

+ +
+
+ + + + + +
+
+ +
+ Tablets +
+
+

+ Tablets +

+ +
+
+ + + + + +
+
+ +
+ Computers +
+
+

+ Computers & Laptops +

+ +
+
+ + + + + +
+
+ +
+ Headphones +
+
+

+ Headphones +

+ +
+
+ + + +
+
+ + + +
+
+
+
+ + +
+

iPhone 14

+

Apple iPhone 14 128GB Blue

+ + From $899 + + +
+
+
+ iPhone 14 +
+
+
+
+
+
+ + +
+ +

Deal of the week

+

iPad Pro M1

+
+ +
+ iPad +
+
+
+
+
+
+ + + +
+
+ + +
+
+
+
+
+ + +
+
+ + + -21% +
+ VR Glasses +
+
+
+
+
+
+ + + + + +
+ (123) +
+

+ + VRB01 Virtual Reality Glasses + +

+
+
$340.99 $430.00
+ +
+
+
+ +
    +
  • + Display: + + OLED 1440x1600 +
  • +
  • + Graphics: + + Adreno 540 +
  • +
  • + Sound: + + 2x3.5mm jack +
  • +
  • + Input: + + 4 built-in cameras +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (142) +
+

+ + Apple iPhone 14 128GB White + +

+
+
$899.00
+ +
+
+
+ +
    +
  • + Display: + + 6.1" XDR +
  • +
  • + Capacity: + + 128 GB +
  • +
  • + Chip: + + A15 Bionic +
  • +
  • + Camera: + + 12 + 12 MP +
  • +
  • + Weight: + + 172 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Smart Watch +
+
+
+
+
+
+ + + + + +
+ (67) +
+

+ + Smart Watch Series 7, White + +

+
+
$429.00
+ +
+
+
+ +
    +
  • + Display: + + 45mm OLED +
  • +
  • + Chip: + + 64-bit Dual-core +
  • +
  • + Connectivity: + + Wi-Fi, Bluetooth +
  • +
  • + Power: + + Lithium-ion battery +
  • +
  • + Weight: + + 37.0 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + + New +
+ MacBook +
+
+
+
+
+
+ + + + + +
+ (51) +
+

+ + Laptop Apple MacBook Pro 13 M2 + +

+
+
$1,200.00
+ +
+
+
+ +
    +
  • + Chip: + + Apple M2 +
  • +
  • + Memory: + + 8 GB unified +
  • +
  • + Storage: + + 256 GB SSD +
  • +
  • + Display: + + 13.3-inch Retina +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPad Air +
+
+
+
+
+
+ + + + + +
+ (12) +
+

+ + Tablet Apple iPad Air M1 + +

+
+
$540.00
+ +
+
+
+ +
    +
  • + Display: + + 10.9" LED +
  • +
  • + Capacity: + + 64 GB +
  • +
  • + Chip: + + Apple M1 +
  • +
  • + Camera: + + 12 MP Wide +
  • +
  • + Weight: + + 462 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ AirPods 2 +
+
+
+
+
+
+ + + + + +
+ (78) +
+

+ + Headphones Apple AirPods 2 Pro + +

+
+
$224.00
+ +
+
+
+ +
    +
  • + Audio: + + Noise Cancellation +
  • +
  • + Sensors: + + Touch control +
  • +
  • + Chip: + + Apple H2 +
  • +
  • + Weight: + + 50.8 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPad Pro +
+
+
+
+
+
+ + + + + +
+ (49) +
+

+ + Tablet Apple iPad Pro M1 + +

+
+
$739.00
+ +
+
+
+ +
    +
  • + Display: + + 11" LED +
  • +
  • + Capacity: + + 128 GB +
  • +
  • + Chip: + + Apple M1 +
  • +
  • + Camera: + + 12 MP Wide +
  • +
  • + Weight: + + 470 grams +
  • +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Bluetooth Headphones +
+
+
+
+
+
+ + + + + +
+ (136) +
+

+ + Wireless Bluetooth Headphones Sony + +

+
+
$299.00
+ +
+
+
+ +
    +
  • + Audio: + + Noise Cancellation +
  • +
  • + Connectivity: + + Bluetooth, 3.5mm jack +
  • +
  • + Material: + + Leather, Plastic +
  • +
  • + Weight: + + 185 grams +
  • +
+
+
+
+
+
+ + + +
+
+
+
+

Sign up to our newsletter

+

Receive our latest updates about our products & promotions

+
+
+ +
+ +
+ +
+ +
+
+
+
+ + @include('layouts.partials/footer') + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/product-details-electronics.blade.php b/resources/views/shop/product-details-electronics.blade.php new file mode 100644 index 0000000..703fbfa --- /dev/null +++ b/resources/views/shop/product-details-electronics.blade.php @@ -0,0 +1,771 @@ +@extends('layouts.landing', ['title' => 'Electronics Store - Product Details']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + + +
+ + + + + + +

Apple iPhone 14 Plus 128GB Blue

+ + + +
+
+ +
+
+ + + +
+
+ + + + + + +
+
+
+
+
+
+ iPhone 14 +
+
+

Apple iPhone 14 Plus 128GB Blue

+
$940.00
+
+
+
+ + + +
+
+
+
+
+ + + +
+

Product details

+

General specs

+
    +
  • + Model: + + iPhone 14 Plus +
  • +
  • + Manufacturer: + + Apple Inc. +
  • +
  • + Finish: + + Ceramic, Glass, Aluminium + +
  • +
  • + Capacity: + + 128GB +
  • +
  • + Chip: + + A15 Bionic chip +
  • +
+

Display

+
    +
  • + Diagonal: + + 6.1" +
  • +
  • + Screen type: + + Super Retina XDR + +
  • +
  • + Resolution: + + 2778x1284px at 458ppi +
  • +
  • + Refresh rate: + + 120 Hz +
  • +
+

Camera

+
    +
  • + Front camera: + + 12MP +
  • +
  • + Main camera: + + 12MP Ultra Wide +
  • +
  • + Zoom: + + 2x opical, 5x digital +
  • +
  • + Video: + + 4K video recording + +
  • +
+

Power and Battery

+
    +
  • + Fast charging: + + Yes +
  • +
  • + Wireless charging: + + Yes +
  • +
  • + Charging power: + + up to 15W +
  • +
  • + Video playback: + + Up to 26 hours +
  • +
  • + Audio playback: + + Up to 100 hours +
  • +
+

Size and Weight

+
    +
  • + Height: + + 160.8 mm +
  • +
  • + Width: + + 78.1 mm +
  • +
  • + Weight: + + 203 grams +
  • +
+ +
+

Do you have any questions?

+ Contact us +
+
+
+
+ + + +
+

Viewed products

+ + +
+ + + + + + +
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Dualsense Edge +
+
+
+
+
+
+ + + + + +
+ (187) +
+

+ + Sony Dualsense Edge Controller + +

+
+
$200.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + + -17% +
+ Nikon Camera +
+
+
+
+
+
+ + + + + +
+ (14) +
+

+ + VRB01 Camera Nikon Max + +

+
+
$652.00 $785.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (335) +
+

+ + Apple iPhone 14 128GB Blue + +

+
+
$899.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPad Pro +
+
+
+
+
+
+ + + + + +
+ (49) +
+

+ + Tablet Apple iPad Pro M1 + +

+
+
$739.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ AirPods 2 +
+
+
+
+
+
+ + + + + +
+ (78) +
+

+ + Headphones Apple AirPods 2 Pro + +

+
+
$224.00
+ +
+
+
+
+
+
+ + +
+ + +
+
+
+ + + +
+
+
+
+

Sign up to our newsletter

+

Receive our latest updates about our products & promotions +

+
+
+ +
+ +
+ +
+ +
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/product-fashion.blade.php b/resources/views/shop/product-fashion.blade.php new file mode 100644 index 0000000..7392efc --- /dev/null +++ b/resources/views/shop/product-fashion.blade.php @@ -0,0 +1,3398 @@ +@extends('layouts.landing', ['title' => 'Fashion Store - Product Page']) + +@section('content') + + + + +
+ + +
+
+

Shopping cart

+ +
+

Buy $53 more to get Free Shipping

+
+
+
+
+
+ + +
+ + +
+ + Thumbnail + +
+
+ Leather sneakers + with golden laces +
+
$74.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Classic cotton + men's shirt +
+
$27.00
+
+
+ + + +
+ +
+
+
+ + +
+ + Thumbnail + +
+
+ Polarized + sunglasses for men +
+
$96.00 112.00
+
+
+ + + +
+ +
+
+
+
+ + +
+
+ Subtotal: + $197.00 +
+ +
+
+ + + +
+
+
+ +
+
+
🎉 Free Shipping on orders over $250. Don't miss a discount!
+
💰 Money back guarantee. We return money within 30 days.
+
💪 Friendly 24/7 customer support. We've got you covered!
+
+
+ +
+ +
+
+ + + +
+ + + + + + +
+
+ + +
+
+ Sale + + + +
+ Image +
+
+
+ + +
+ + + +
+
+ + + +
+ + + + + +
+ 23 reviews +
+ + +

Denim midi skirt with pockets

+ + +

Made from high-quality denim fabric, this midi skirt offers durability and + comfort for all-day wear. The mid-length design strikes the perfect balance between casual and + chic, making it suitable for various occasions, from casual outings to semi-formal events.

+
+
+

One of the standout features of this skirt is its functional pockets. With two spacious + pockets at the front, you can conveniently carry your essentials such as keys, phone, or + wallet without the need for a bulky bag. The pockets also add a touch of utility and + flair to the overall look.

+

The skirt's classic denim color and timeless design make it easy to pair + with a variety of tops, blouses, and footwear, allowing you to create endless stylish + ensembles. Whether you prefer a laid-back look with a graphic tee and sneakers or a more + polished ensemble with a blouse and heels, this skirt effortlessly adapts to your style. +

+
+
+ + + +
+ $126.50 + $156.00 +
+ + +
+ +
+ + + + + + +
+
+ + +
+
+ + +
+ +
+ + +
+
+ + + +
+ +
+ + +
    +
  • + + + Estimated delivery: + + 15 - 27 Mar, 2024 +
  • +
  • + + + Free shipping & returns: + + On all orders over $100.00 +
  • +
+ + +
+ 🔥 Hurry up! The sale is coming to an + end + 6 items in stock! +
+
+
+
+
+
+
+
+ + + +
+
+ +
+
+ + + +
+ + + + +
+ + +
+
+
+
    +
  • Model's height: 176 cm
  • +
  • The model is wearing size: S/36 +
  • +
+

This skirt is designed to fall just below the knee, offering a flattering length that is + suitable for various occasions. It is made from a soft and lightweight fabric that drapes + beautifully, ensuring comfort and ease of movement. The blue color adds a vibrant touch, + making it a standout piece in your wardrobe.

+
    +
  • fitted waistband
  • +
  • fastened with a hidden zipper
  • +
  • midi length
  • +
+

The blue color of the skirt allows for easy pairing with a variety of tops. + You can opt for a crisp white blouse for a classic and polished outfit, or choose a + patterned or contrasting-colored top for a more vibrant and fashion-forward look.

+
+
+
+
+
+ +
Lightweight
+

Designed with lightweight European fabrics, perfect for life + on the go.

+
+
+
+
+ +
Perfect fit
+

Our clothing is designed to fit any body type, find your + perfect look!

+
+
+
+
+ +
Free delivery
+

Get free door-to-door delivery for all orders over $250.

+
+
+
+
+ +
Sustainability
+

We are proud to offer a Lifetime Guarantee on all products. +

+
+
+
+
+
+
+ + +
+

Following below washing instructions can help prolong the life of your denim skirt and keep it + looking its best for longer.

+
+
+
+
Machine wash cold
+
Turn the denim midi skirt inside out before placing it in the washing machine. Use cold + water to help preserve the color and fabric integrity.
+
Gentle cycle
+
Select the gentle or delicate cycle on your washing machine to prevent excessive + agitation, which can cause unnecessary wear and tear on the denim.
+
Mild detergent
+
Use a mild detergent specifically formulated for denim or delicate fabrics. Avoid using + bleach or harsh chemicals, as they can damage the denim fibers.
+
Avoid overloading
+
Do not overcrowd the washing machine with too many garments. This can + lead to inadequate cleaning and may cause friction that damages the denim skirt.
+
+
+
+
+
Wash separately
+
Wash the denim midi skirt separately from items with zippers, buttons, or other sharp + accessories that could snag or damage the fabric.
+
Skip fabric softener
+
Avoid using fabric softener, as it can leave a residue on the denim and reduce its + natural stiffness, which is characteristic of denim garments.
+
Air dry or tumble dry low
+
After washing, reshape the skirt and either lay it flat to air dry or tumble dry on a + low heat setting. Avoid high heat, as it can shrink or distort the denim.
+
Ironing
+
If necessary, iron the denim midi skirt inside out using a low to + medium heat setting. Avoid ironing directly on any embellishments or pockets to prevent + damage.
+
+
+
+
+ + +
+
+
+
+
Delivery
+

We strive to deliver your denim midi skirt with pockets to you as quickly as possible. + Our estimated delivery times are as follows:

+
    +
  • Standard delivery: Within 3-7 + business days
  • +
  • Express delivery: Within 1-3 business + days
  • +
+

Please note that delivery times may vary depending on your location and any ongoing + promotions or holidays. You can track your order using the provided tracking number once + your package has been dispatched.

+
+
+
+
+
Returns
+

We want you to be completely satisfied with your denim midi skirt with pockets. If for + any reason you are not happy with your purchase, you can return it within 30 days of + receiving your order for a full refund or exchange.

+

To be eligible for a return, the skirt must be unused, unwashed, and in its original + condition with tags attached. Please ensure that all packaging is intact when returning + the item.

+

To initiate a return, please contact our customer service team with your + order number and reason for the return. We will provide you with a return shipping label + and instructions on how to proceed. Please note that shipping fees are non-refundable. +

+
+
+
+
+ + +
+ + +
+
+

Customer reviews

+
+
+ + + + + +
+ Based on 23 reviews +
+
+ +
+ + +
+
+
+
+ Rafael Marquez + +
+
June 25, 2024
+
+ + + + + +
+
+
+

Absolutely love this chair! It's exactly what I was looking for to + complete my Scandinavian-themed living room. The wooden legs add a touch of warmth and + the design is timeless. Comfortable and sturdy, couldn't be happier with my purchase! +

+
+
+ + Yes, I recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + +
+
+
+
+ Bessie Cooper + +
+
April 8, 2024
+
+ + + + + +
+
+
+

While the design of the chair is nice and it does add a touch of retro + vibe to my space, I found the quality to be lacking. After just a few weeks of use, one + of the legs started to wobble, and the seat isn't as comfortable as I had hoped. + Disappointed with the durability. Additionally, the assembly process was a bit + frustrating as some of the screws didn't align properly with the holes, requiring extra + effort to secure them in place. Overall, while it looks good, I expected better quality + for the price.

+
+
+ + No, I don't recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + +
+
+
+
Savannah Nguyen
+
March 30, 2024
+
+ + + + + +
+
+
+

Great addition to our dining room! The chair looks fantastic and is + quite comfortable for short sits. Assembly was a breeze, and the quality seems decent + for the price. Overall, satisfied with the purchase.

+
+
+ + Yes, I recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + +
+
+
+
Daniel Adams
+
March 16, 2024
+
+ + + + + +
+
+
+

Couldn't be happier with this chair! It's not only stylish but also + incredibly comfortable. The size is perfect for our space, and the wooden legs feel + sturdy. Definitely recommend it to anyone looking for a chic and functional seating + option.

+
+
+ + Yes, I recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + +
+
+
+
Kristin Watson
+
February 7, 2024
+
+ + + + + +
+
+
+

The chair is nice, but it's not the most comfortable for extended + periods of sitting. The wooden legs give it a nice aesthetic, but they seem a bit + fragile. It's a decent chair for occasional use, but I wouldn't recommend it for daily + use or long sitting sessions.

+
+
+ + Yes, I recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + + +
+
+
+ + + +
+
+

Complete your look

+ + +
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ S + M + L + XL + +
+
+
+ +
$54.00
+
+
+2 + colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ 6 + 6.5 + 7 + 7.5 + +
+
+
+ +
$160.00
+
+
+1 + color
+
+ + + + +
+
+
+
+
+
+ + +
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ XS + S + M + L + +
+
+
+ +
$38.50
+
+
+1 + color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ 6.5 + 7 + 7.5 + 8 + +
+
+
+ +
$74.00
+
+
+2 + colors
+
+ + + + + + +
+
+
+
+
+
+
+
+
+ + +
+ Image +
+
+
+ + + +
+
+

Viewed products

+ + +
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ S + M + L + XL + +
+
+
+ +
$32.99
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ 6 + 6.5 + 7 + 7.5 + +
+
+
+ +
$86.50
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+ +
$105.00
+
+
+1 color
+
+ + + + +
+
+
+
+ + +
+
+
+ -17% + + +
+ Image +
+
+
+ +
$96.00 $112.00 +
+
+
+2 colors
+
+ + + + + + +
+
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+ +
$140.00
+
+
+2 colors
+
+ + + + + + +
+
+
+
+
+
+
+ + + +
+
+

+ + #cartzilla + +

+

Find more inspiration on our Instagram

+
+ +
+
+ + + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/product-furniture.blade.php b/resources/views/shop/product-furniture.blade.php new file mode 100644 index 0000000..d989e9f --- /dev/null +++ b/resources/views/shop/product-furniture.blade.php @@ -0,0 +1,1525 @@ +@extends('layouts.landing', ['title' => 'Furniture Store - Product Page']) + +@section('content') + + +
+
+

Shopping cart

+ +
+
+ + + + +
Your shopping cart is currently empty!
+

Explore our wide range of products and add items to your cart to proceed with your + purchase.

+ Continue shopping +
+
+ + @include('layouts.partials/navbar2') + +
+
+ + + + + + +
+ + +
+
+ + +
+ + +
+
+
+ + + +
+
+
+
+
V00273124
+

Chair with wooden legs 60x100 cm

+
$357.00 $416.00 +
+
    +
  • + Pay 4 interest-free payments of $89.00 with + + + + + + +
  • +
  • + We provide a 3-year warranty + + + +
  • +
+ + +
+ +
+ + + + + + +
+
+ + +
+ + +
+ + +
+ + +
+ + +
+
+ + Free shipping +
+
+ Get it between May 24 - May 27 to + +
+
+ + +
+
+
Have a question?
+

Contact us if you have questions

+
+ Contact us +
+
+
+
+ + + +
+
+ +
+
+ + + +
+
+

The chair will bring a stylish retro atmosphere to your room, inspired by the Scandinavian design. + The classic look fits anywhere in your home and provides a sturdy and durable place to sit for years + to come.

+
    +
  • Backrest height: 46 cm
  • +
  • Width: 64 cm
  • +
  • Depth: 78 cm
  • +
  • Height under furniture: 22 cm
  • +
  • Seat width: 56 cm
  • +
  • Armrest height: 63 cm
  • +
+ +
+
+

+ +

+
+
Introducing our Scandinavian-inspired chair, + meticulously designed to infuse your living space with a touch of retro elegance. + Crafted with the finest materials and attention to detail, this chair embodies the + timeless charm of Scandinavian design, making it a versatile addition to any home decor. + With its classic silhouette and understated sophistication, it seamlessly integrates + into various interior styles, bringing both style and functionality to your room.
+
+
+
+

+ +

+
+
+
    +
  • Timeless design: Inspired + by Scandinavian aesthetics, this chair boasts a sleek and retro-inspired + silhouette that adds a touch of elegance to any space.
  • +
  • Durable construction: + Crafted with high-quality materials, the chair is built to last, providing + sturdy and reliable seating for years to come.
  • +
  • Versatile placement: + Whether as a focal point in your living room, a cozy reading corner in your + study, or an inviting seat around the dining table, this chair effortlessly + adapts to different settings.
  • +
  • Comfortable seating: The + chair features a well-padded seat and backrest, ensuring optimal comfort for + extended periods of relaxation or conversation.
  • +
  • Easy maintenance: Designed + for convenience, the chair's upholstery is easy to clean, allowing for + hassle-free maintenance and care.
  • +
+
+
+
+
+

+ +

+
+
We stand behind the quality of our products. Our chair + comes with a 10-year warranty, guaranteeing against defects in materials and workmanship + under normal use. In the unlikely event that you encounter any issues with your chair, + contact our customer service team, and we will be happy to assist you with a replacement + or repair.
+
+
+
+

+ +

+
+
We understand the importance of timely delivery and + strive to provide a seamless shipping experience for our customers. Upon placing your + order, our team will process it promptly, and you will receive a notification once your + chair is ready for shipment. We offer various shipping options to accommodate your + preferences, with estimated delivery times provided at checkout. Rest assured, your + chair will be carefully packaged to ensure it arrives safely at your doorstep, ready to + enhance your home with its timeless charm.
+
+
+
+
+
+ + + +
+

Popular products

+
+ + + + + + +
+
+ + +
+
+ + Product + Room + +
+ + + + + + +
+

+ + Bed frame light gray 140x200 cm + +

+
$760.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Blue armchair with iron legs + +

+
$220.00
+
+ + +
+
+
+ + +
+
+ +
+ -13% +
+ Product + Room +
+
+ + + + + + +
+

+ + Loft-style lamp 120x80 cm + +

+
$140.00 $160.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Armchair with wooden legs 60x100 cm + +

+
$320.50
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + + + + + +
+

+ + Decorative flowerpot with a plant + +

+
$107.50
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Chair with a cushion for the legs + +

+
$435.00
+
+ + +
+
+
+
+
+
+ + +
+ + +
+
+ + + +
+

From the blog

+ +
+ + + +
+ + +
+
+

Customer reviews

+
+
+ + + + + +
+ Based on 6 reviews +
+
+ +
+ + +
+
+
+
+ Rafael Marquez + +
+
June 25, 2024
+
+ + + + + +
+
+
+

Absolutely love this chair! It's exactly what I was looking for to complete + my Scandinavian-themed living room. The wooden legs add a touch of warmth and the design is + timeless. Comfortable and sturdy, couldn't be happier with my purchase!

+
+
+ + Yes, I recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + +
+
+
+
+ Bessie Cooper + +
+
April 8, 2024
+
+ + + + + +
+
+
+

While the design of the chair is nice and it does add a touch of retro vibe + to my space, I found the quality to be lacking. After just a few weeks of use, one of the + legs started to wobble, and the seat isn't as comfortable as I had hoped. Disappointed with + the durability. Additionally, the assembly process was a bit frustrating as some of the + screws didn't align properly with the holes, requiring extra effort to secure them in place. + Overall, while it looks good, I expected better quality for the price.

+
+
+ + No, I don't recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + +
+
+
+
Savannah Nguyen
+
March 30, 2024
+
+ + + + + +
+
+
+

Great addition to our dining room! The chair looks fantastic and is quite + comfortable for short sits. Assembly was a breeze, and the quality seems decent for the + price. Overall, satisfied with the purchase.

+
+
+ + Yes, I recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + +
+ + +
+
+
+
Daniel Adams
+
March 16, 2024
+
+ + + + + +
+
+
+

Couldn't be happier with this chair! It's not only stylish but also + incredibly comfortable. The size is perfect for our space, and the wooden legs feel + sturdy. Definitely recommend it to anyone looking for a chic and functional seating + option.

+
+
+ + Yes, I recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + +
+
+
+
+ Jenny Wilson + +
+
February 19, 2024
+
+ + + + + +
+
+
+

This chair exceeded my expectations! It's well-made, comfortable, and + looks even better in person. The Scandinavian design adds a sophisticated touch to my + home office. I've received so many compliments already. Five stars all the way!

+
+
+ + Yes, I recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+ + +
+
+
+
Kristin Watson
+
February 7, 2024
+
+ + + + + +
+
+
+

The chair is nice, but it's not the most comfortable for extended + periods of sitting. The wooden legs give it a nice aesthetic, but they seem a bit + fragile. It's a decent chair for occasional use, but I wouldn't recommend it for daily + use or long sitting sessions.

+
+
+ + No, I don't recommend this product +
+
+
Helpful?
+ +
+
+
+
+
+
+ + + +
+ + + +
+

Viewed products

+
+ + + + + + +
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Soft armchair with wooden legs + +

+
$215.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + + + +
+

+ + Navy blue low sofa for relaxation + +

+
$1,250.00
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + +
+

+ + Armchair with wooden legs 70x120 cm + +

+
$269.99
+
+ + +
+
+
+ + +
+
+ + Product + Room + +
+ + + + + + +
+

+ + Home fragrance with the aroma of spices + +

+
$24.00
+
+ + +
+
+
+
+
+
+ + +
+ + +
+
+
+
+ + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/product-general-electronics.blade.php b/resources/views/shop/product-general-electronics.blade.php new file mode 100644 index 0000000..dc75cb7 --- /dev/null +++ b/resources/views/shop/product-general-electronics.blade.php @@ -0,0 +1,1958 @@ +@extends('layouts.landing', ['title' => 'Electronics Store - Product General Info']) + +@section('content') + + + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+ + + + + + +

Apple iPhone 14 Plus 128GB Blue

+ + + +
+ +
+ + + +
+
+ + +
+ + +
+
+
+
+ Preview +
+
+
+
+ Preview +
+
+
+
+ Preview +
+
+
+
+ Preview +
+
+
+
+ Preview +
+
+
+
+ Preview +
+
+
+
+ Preview +
+
+
+ + +
+ +
+ + +
+ +
+
+ + +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+
+ + + +
+
+
+ + +
+ +
+ + + + + + + + +
+
+ + +
+ +
+ + + + + + + + +
+
+ + +
+
$940.00
+
+ + Available to order +
+
+ + +
+
+ + + +
+ + + +
+ + +
+
+ + + + + +
+32 + bonuses
+
+
+ + + + +
Interest-free loan
+
+
+ + + + + + + +
Pay by installments
+
+
+
+ + +
+

Shipping options

+ + + Find local store + +
+ + + + + + + + + + + + + + + + + + +
Pickup from the storeTodayFree
Pickup from postal officesTomorrow$25.00
Delivery by courier2-3 days$35.00
+ + +
+
+

+ +

+
+
+ +

Explore the details of our product warranties here, including duration, coverage, + and any additional protection plans available. We prioritize your satisfaction, + and our warranty information is designed to keep you informed and confident in + your purchase.

+
+
+
+
+

+ +

+
+
Experience hassle-free transactions with our flexible payment options and credit + facilities. Learn more about the various payment methods accepted, installment + plans, and any exclusive credit offers available to make your shopping experience + seamless.
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+ iPhone 14 +
+
+

Apple iPhone 14 Plus 128GB Blue

+
$940.00
+
+
+
+ + + +
+
+
+
+
+ + + +
+
+

Cheaper together

+
+
+
+
+ + +
+
+ + +
+

+ + Apple iPhone 14 128GB White + +

+
$940.00
+
+ +
+ + +
+
+ + +
+

+ + Headphones Apple AirPods 2 Pro + +

+
+ -32% + $224.00 + $330.00 +
+
+ +
+ + +
+
+ + +
+

+ + Wireless charger for iPhone + +

+
+ -48% + $26.00 + $50.00 +
+
+
+
+
+
+
+
+
+
Total for selected products
+
+ $1,164.00 + +
+
+
+
+
+ + + +
+

Trending products

+ + +
+ + + + + + +
+
+ + +
+
+
+
+
+ + +
+
+ + + -21% +
+ VR Glasses +
+
+
+
+
+
+ + + + + +
+ (123) +
+

+ + VRB01 Virtual Reality Glasses + +

+
+
$340.99 $430.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (142) +
+

+ + Apple iPhone 14 128GB White + +

+
+
$899.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Smart Watch +
+
+
+
+
+
+ + + + + +
+ (67) +
+

+ + Smart Watch Series 7, White + +

+
+
$429.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + + New +
+ MacBook +
+
+
+
+
+
+ + + + + +
+ (51) +
+

+ + Laptop Apple MacBook Pro 13 M2 + +

+
+
$1,200.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Bluetooth Headphones +
+
+
+
+
+
+ + + + + +
+ (136) +
+

+ + Wireless Bluetooth Headphones Sony + +

+
+
$299.00
+ +
+
+
+
+
+
+ + +
+ + +
+
+
+ + + +
+
+
+ + +

Product details

+

General specs

+
    +
  • + Model: + + iPhone 14 Plus +
  • +
  • + Manufacturer: + + Apple Inc. +
  • +
  • + Finish: + + Ceramic, Glass, Aluminium + +
  • +
  • + Capacity: + + 128GB +
  • +
  • + Chip: + + A15 Bionic chip +
  • +
+

Display

+
    +
  • + Diagonal: + + 6.1" +
  • +
  • + Screen type: + + Super Retina XDR + +
  • +
  • + Resolution: + + 2778x1284px at 458ppi +
  • +
  • + Refresh rate: + + 120 Hz +
  • +
+ + + + +
+

Reviews

+ +
+ + +
+
+ + +
+
4.1
+
+ + + + + +
+
68 reviews
+
+
+
+ + +
+ + +
+
+ 5 +
+
+
+
+
37
+
+ + +
+
+ 4 +
+
+
+
+
16
+
+ + +
+
+ 3 +
+
+
+
+
9
+
+ + +
+
+ 2 +
+
+
+
+
4
+
+ + +
+
+ 1 +
+
+
+
+
3
+
+
+
+
+ + +
+
+
+ Rafael Marquez + +
+ June 28, 2024 +
+
+ + + + + +
+
    +
  • Color: Blue
  • +
  • Model: 128GB
  • +
+

The phone has a new A15 Bionic chip, which makes it lightning-fast and + responsive. The camera system has also been upgraded, and it now includes a 12-megapixel + ultra-wide lens and a 12-megapixel wide lens.

+
    +
  • Pros: Powerful A15 Bionic chip, improved + camera
  • +
  • Cons: High price tag
  • +
+ +
+ + +
+
+
+ Daniel Adams +
+ May 15, 2024 +
+
+ + + + + +
+
    +
  • Color: Blue
  • +
  • Model: 128GB
  • +
+

The phone has a new A15 Bionic chip, which makes it lightning-fast and + responsive. The camera system has also been upgraded, and it now includes a 12-megapixel + ultra-wide lens and a 12-megapixel wide lens.

+
    +
  • Pros: Powerful A15 Bionic chip, improved + camera
  • +
  • Cons: High price tag
  • +
+ +
+ + +
+ + + + +
+
+ + + +
+

Viewed products

+ + +
+ + + + + + +
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Dualsense Edge +
+
+
+
+
+
+ + + + + +
+ (187) +
+

+ + Sony Dualsense Edge Controller + +

+
+
$200.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + + -17% +
+ Nikon Camera +
+
+
+
+
+
+ + + + + +
+ (14) +
+

+ + VRB01 Camera Nikon Max + +

+
+
$652.00 $785.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (335) +
+

+ + Apple iPhone 14 128GB Blue + +

+
+
$899.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPad Pro +
+
+
+
+
+
+ + + + + +
+ (49) +
+

+ + Tablet Apple iPad Pro M1 + +

+
+
$739.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ AirPods 2 +
+
+
+
+
+
+ + + + + +
+ (78) +
+

+ + Headphones Apple AirPods 2 Pro + +

+
+
$224.00
+ +
+
+
+
+
+
+ + +
+ + +
+
+
+ + + +
+
+
+
+

Sign up to our newsletter

+

Receive our latest updates about our products & promotions +

+
+
+ +
+ +
+ +
+ +
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/product-grocery.blade.php b/resources/views/shop/product-grocery.blade.php new file mode 100644 index 0000000..da25678 --- /dev/null +++ b/resources/views/shop/product-grocery.blade.php @@ -0,0 +1,1996 @@ +@extends('layouts.landing', ['title' => 'Grocery Store - Product Page']) + +@section('content') + @include('layouts.partials/offcanvas2') + +
+ + +
+
+

Delivery options

+ +
+ +
+ +
+ + +
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+ +
+
Add an address to start ordering
+ + + Find on map + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+
+
+ +
+
+ + +
+
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+
+ + +
+
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+
+ + +
+
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+
+ + +
+ +
+
Select a suitable store
+ + + Find on map + +
+
+ + +
+
+ + +
+
Found stores:
+
+ +
+ +
8270 Delta Shores Cir S, Sacramento, CA 95832
+
Open: 07:00 - 22:00 +
+
+
+
+ +
+ +
755 Riverpoint Ct, West Sacramento, CA 95605
+
Open: 07:00 - 21:00 +
+
+
+
+ +
+ +
10655 Folsom Blvd, Rancho Cordova, CA 95670
+
Open: 08:00 - 23:00 +
+
+
+
+ + + +
+
+ + +
+ +
+
+ + @include('layouts.partials/menu-offcanvas') + + + +
+ +
+ +
+ + + + + +
+
+ + +
+
+ + +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ Thumbnail +
+
+
+
+ + +
+
+
+ + Preview + +
+
+ + Preview + +
+
+ + Preview + +
+
+ + +
+
+
+
+ + + +
+
+

Cereals / Nestlé

+

Muesli Fitness Nutritious Energy, gluten free

+
500g
+
+
+ We will deliver your goods as soon as possible + Check availability +
+
+
$2.15
+
+
+ + + +
+ +
+

Muesli Fitness Nutritious Energy is a popular breakfast cereal that is a + healthy and + nutritious way to start your day. This delicious cereal is made up of a combination of whole + grains, nuts, + seeds, and dried fruits.

+
+
+ + Gluten-free +
+
+ + Plant based +
+
+ + Vegan +
+
+ + Keto +
+
+ + +

Related products

+
+
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
150g
+
+
+
+
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$3.40
+

+ Fresh red + grapefruit +

+
+
1kg
+
+
+
+ + +
+
+

+ +

+
+
Muesli Fitness Nutritious Energy is a delicious and + satisfying blend of + gluten-free oats, crunchy nuts, nutritious seeds, and flavorful dried fruits. Packed + with essential + nutrients and fiber, this muesli is perfect for those looking to start their day + with a nutritious + breakfast or for a healthy snack on the go. Enjoy the goodness of natural + ingredients without + compromising on taste or quality. Ideal for individuals following a gluten-free diet + or anyone + seeking a wholesome and energizing option.
+
+
+
+

+ +

+
+
+
    +
  • Gluten-free oats
  • +
  • Almonds
  • +
  • Sunflower seeds
  • +
  • Pumpkin seeds
  • +
  • Dried cranberries (cranberries, sugar, sunflower oil)
  • +
  • Dried apricots (apricots, rice flour)
  • +
  • Coconut flakes
  • +
  • Flax seeds
  • +
  • Chia seeds
  • +
  • Cinnamon
  • +
+
+
+
+
+

+ +

+
+
Approximately 400 kcal / + 100g of product
+
+
+
+

+ +

+
+
+
    +
  • Enjoy free delivery for orders over $50! +
  • +
  • For orders below $50, a + standard delivery + fee of $5 applies.
  • +
  • We strive to deliver your order in a timely manner to ensure your + satisfaction.
  • +
+
+
+
+
+ + +
+
+
+
+ + + +
+
+

Often bought with

+ + +
+ + +
+
+ + +
+
+ + +
+
+
+ -30% + + +
+ Image +
+
+
+
+ +
+
+
+
+
$3.12 $4.05
+

+ Fresh + orange Klementina, + Spain +

+
+
1kg
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$0.80
+

+ Pepsi + soda classic, + can +

+
+
330ml
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
250g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+
+
$1.24
+

+ Coconut, Indonesia +

+
+
1 coconut
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
200g
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
1000ml
+
+
+ + +
+
+
+ + +
+ Image +
+
+
+
+ +
+
+
+ +
500g
+
+
+
+
+
+ + + +
+
+ + +
+

Recipes

+
+ + +
+
+ Image +
+
+

+ Garden salad with a + mix of lettuce, + cucumber and tomato +

+
+
+ + 30 min +
+
+ + Easy +
+
+ + 4 por +
+
+
+
+ + +
+
+ Image +
+
+

+ Raspberry fresh + lemonade with lemon, + strawberry syrup and mint +

+
+
+ + 50 min +
+
+ + Hard +
+
+ + 8 por +
+
+
+
+ + +
+
+ Image +
+
+

+ Penne pasta with + spinach and zucchini in a + creamy sauce +

+
+
+ + 25 min +
+
+ + Easy +
+
+ + 2 por +
+
+
+
+
+ +
+ + + +
+

Top departments

+
+
+
+ + +
+ + Image + +

Sauces and ketchup

+ + +
+ + +
+ + Image + +

Fresh fruits

+ + +
+ + +
+ + Image + +

Meat products

+ + +
+
+ + +
+
+
+
+
+
+ + + +
+
+ + +
+
+
+

Make online shop easier with our Cartzilla App

+ +
+
+ Image +
+
+
+ + +
+
+
+ Image +
+
+

We'd love to hear what you think!

+ +
+
+
+
+
+
+ + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/product-marketplace.blade.php b/resources/views/shop/product-marketplace.blade.php new file mode 100644 index 0000000..84a0e08 --- /dev/null +++ b/resources/views/shop/product-marketplace.blade.php @@ -0,0 +1,1346 @@ +@extends('layouts.landing', ['title' => 'Marketplace - Digital Product Page']) + +@section('content') + + + + + @include('layouts.partials/offcanvas2') + + + +
+ + +
+ + + + + +
+
+

A stunning set of tablet pro mockups for professionals

+ + +
+ +
+ + + + + 65 sales + + + +
+ + + + 3 + + +
+
+
+
+
+
+ + +
+ + + + + +

Product info

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Format +
+
+ Figma +
+
+ Photoshop +
+
+
Last update21 October 2024
Published10 August 2024
High resolutionYes
File typeFIG, PSD, JPG
File size140.8 MB
+ + +

Overview

+

Elevate your presentations and design projects with this meticulously crafted set of Tablet Pro + Mockups. Designed with professionals in mind, these mockups are perfect for showcasing your apps, + websites, or digital products in a sleek and modern way. Here's what makes this set stand out.

+

This Tablet Pro Mockup Set is an essential tool for designers who want to present + their work professionally and impress clients or audiences with stunning, high-quality visuals.

+ + +

Highlights

+
    +
  • The set includes a variety of angles and perspectives
  • +
  • Easily insert your designs into the mockups using smart objects in Adobe Photoshop
  • +
  • These mockups feature professionally crafted lighting and shadow effects
  • +
  • The backgrounds of these mockups are fully customizable
  • +
  • Choose from different color options for the tablet device
  • +
+ + +

Tags

+ + + +
+

Comments (3)

+ +
+
+
+ + +
+
+
+
+ Avatar +
+
+
Randy Walker
+
October 28, 2024
+
+
+
+ + +
+
+

This set of Tablet Pro mockups exceeded my expectations! The high + resolution and attention to detail make my designs look incredibly polished. The smart + objects make editing a breeze, and the realistic lighting adds a professional touch to + all my presentations. Highly recommend it for anyone serious about their design work. +

+
+ + +
+
+
+
+ Avatar +
+
+
Daniel Adams
+
August 15, 2024
+
+
+
+ + +
+
+

I've used a lot of mockups, but these are some of the best. The + variety of angles and perspectives really helped me showcase my app from different + viewpoints. Plus, the customizable backgrounds are a fantastic feature—I could easily + match the mockups to my brand colors. A must-have for designers!

+
+ + +
+
+
+
+ Avatar +
+
+
Darrell Steward
+
June 2, 2024
+
+
+
+ + +
+
+

The quality of these mockups is superb, and they're incredibly easy + to use. The only thing I'd love to see is a few more device color options to match + different product lines. Other than that, it's a fantastic set that's well worth the + investment.

+
+
+
+
+ + + + +
+
+ + + +
+
+

You may like this

+ + +
+ + +
+
+ + +
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
95 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
47 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
132 sales
+
+
+
+
+ + +
+
+
+ + Image + +
+ +
+
+ +
+
+ + +
+
+
+ + Image + +
+ +
+
+
+ +
+ +
43 sales
+
+
+
+
+
+
+
+
+ + @include('layouts.partials/footer3') +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/shop/product-reviews-electronics.blade.php b/resources/views/shop/product-reviews-electronics.blade.php new file mode 100644 index 0000000..7226fc3 --- /dev/null +++ b/resources/views/shop/product-reviews-electronics.blade.php @@ -0,0 +1,1006 @@ +@extends('layouts.landing', ['title' => 'Electronics Store - Product Reviews']) + +@section('content') + + + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => True]) + + +
+ + + + + + +

Apple iPhone 14 Plus 128GB Blue

+ + + +
+
+ +
+
+ + + +
+
+ + + + + + +
+
+
+
+
+
+ iPhone 14 +
+
+

Apple iPhone 14 Plus 128GB Blue

+
$940.00
+
+
+
+ + + +
+
+
+
+
+ + + +
+
+

Reviews

+ +
+ + +
+
+ + +
+
4.1
+
+ + + + + +
+
68 reviews
+
+
+
+ + +
+ + +
+
+ 5 +
+
+
+
+
37
+
+ + +
+
+ 4 +
+
+
+
+
16
+
+ + +
+
+ 3 +
+
+
+
+
9
+
+ + +
+
+ 2 +
+
+
+
+
4
+
+ + +
+
+ 1 +
+
+
+
+
3
+
+
+
+
+ + +
+
+
+ Rafael Marquez + +
+ June 28, 2024 +
+
+ + + + + +
+
    +
  • Color: Blue
  • +
  • Model: 128GB
  • +
+

The phone has a new A15 Bionic chip, which makes it lightning-fast and responsive. The camera system has also been upgraded, and it now includes a 12-megapixel ultra-wide lens and a 12-megapixel wide lens.

+
    +
  • Pros: Powerful A15 Bionic chip, improved camera
  • +
  • Cons: High price tag
  • +
+ +
+ + +
+
+
+ Daniel Adams +
+ May 15, 2024 +
+
+ + + + + +
+
    +
  • Color: Midnight
  • +
  • Model: 256GB
  • +
+

Overall, the iPhone 14 Plus was a solid upgrade for me. However, potential buyers should weigh the high price against the incremental nature of the upgrades and consider their specific needs before making a purchase.

+
    +
  • Pros: Elegant design, great storage capacity
  • +
  • Cons: Battery life, overpriced
  • +
+ +
+ + +
+
+
+ Andrew Richards + +
+ May 7, 2024 +
+
+ + + + + +
+
    +
  • Color: Purple
  • +
  • Model: 128GB
  • +
+

The iPhone 14 is nothing short of exceptional, combining cutting-edge technology with a design that continues to set the standard for premium smartphones. That's why it deserves a perfect 5-star rating.

+
    +
  • Pros: Unparalleled performance, great camera, stunning design
  • +
  • Cons: No in my opinion
  • +
+ + + +
+
+ Reply + Cartzilla Company + May 8, 2024 +
+

Thank you for your feedback! We are glad that you were satisfied with your purchase :)

+
+
+ + +
+
+
+ Jenny Wilson + +
+ April 26, 2024 +
+
+ + + + + +
+
    +
  • Color: Blue
  • +
  • Model: 64GB
  • +
+

iPhone 14 is a reliable upgrade with notable improvements in performance and camera quality. However, the higher price and the lack of groundbreaking design changes might make potential buyers pause. If you're due for an upgrade and prioritize performance and camera enhancements, the iPhone 14 is a solid choice, but budget-conscious consumers may want to weigh their options.

+
+ Image + Image + Image +
+ +
+ + +
+
+
+ Kristin Watson +
+ April 19, 2024 +
+
+ + + + + +
+
    +
  • Color: Starlight
  • +
  • Model: 128GB
  • +
+

iPhone 14 impresses with its camera prowess, delivering high-quality images. However, the decision to eliminate the 3.5mm headphone jack may impact users who rely on wired audio accessories, requiring them to adapt to wireless alternatives or use an adapter.

+
    +
  • Pros: 12-megapixel ultra-wide lens and a 12-megapixel wide lens
  • +
  • Cons: Does not have a headphone jack
  • +
+ +
+ + + +
+
+
+ + + +
+

Viewed products

+ + +
+ + + + + + +
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ Dualsense Edge +
+
+
+
+
+
+ + + + + +
+ (187) +
+

+ + Sony Dualsense Edge Controller + +

+
+
$200.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + + -17% +
+ Nikon Camera +
+
+
+
+
+
+ + + + + +
+ (14) +
+

+ + VRB01 Camera Nikon Max + +

+
+
$652.00 $785.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPhone 14 +
+
+
+
+
+
+ + + + + +
+ (335) +
+

+ + Apple iPhone 14 128GB Blue + +

+
+
$899.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ iPad Pro +
+
+
+
+
+
+ + + + + +
+ (49) +
+

+ + Tablet Apple iPad Pro M1 + +

+
+
$739.00
+ +
+
+
+
+ + +
+
+
+
+
+ + +
+
+ + +
+ AirPods 2 +
+
+
+
+
+
+ + + + + +
+ (78) +
+

+ + Headphones Apple AirPods 2 Pro + +

+
+
$224.00
+ +
+
+
+
+
+
+ + +
+ + +
+
+
+ + + +
+
+
+
+

Sign up to our newsletter

+

Receive our latest updates about our products & promotions

+
+
+ +
+ +
+ +
+ +
+
+
+
+ + @include('layouts.partials/footer') + +@endsection + +@section('scripts') +@endsection diff --git a/resources/views/terms-and-conditions.blade.php b/resources/views/terms-and-conditions.blade.php new file mode 100644 index 0000000..8a8f169 --- /dev/null +++ b/resources/views/terms-and-conditions.blade.php @@ -0,0 +1,187 @@ +@extends('layouts.landing', ['title' => 'Terms and Conditions']) + +@section('content') + @include('layouts.partials/offcanvas') + + @include('layouts.partials/navbar', ['wishlist' => true]) + +
+
+
+
+

Terms and conditions

+
+ +
Last updated: June 26, + 2024
+

Welcome to Cartzilla! These Terms and Conditions ("Terms") govern your access to and use of the + Cartzilla website and mobile application (collectively referred to as the "Platform"). Please read + these Terms carefully before using the Platform. By accessing or using the Platform, you agree to be + bound by these Terms.

+ +

1. Overview

+

Cartzilla provides an online platform that enables users to purchase groceries and other products + from local stores and have them delivered to their designated location. By using the Platform, you + acknowledge and agree that Cartzilla is not a store or retailer but merely acts as an intermediary + to facilitate transactions between users and participating stores.

+

Welcome to the family of websites and applications provided by Cartzilla. These Terms of Use govern + your access to and use of all Cartzilla Sites, among other things. By using the Cartzilla Sites, you + affirm that you are of legal age to enter into these Terms of Use, or, if you are not, that you have + obtained parental or guardian consent to enter into these Terms of Use and your parent or guardian + consents to these Terms of Use on your behalf. If you violate or do not agree to these Terms of Use, + then your access to and use of the Cartzilla Sites is unauthorized. Additional terms and conditions + apply to some services offered on the Cartzilla Sites (e.g., Cartzilla Pharmacy, Cartzilla +, and + Gift Cards) or through other channels. Those terms and conditions can be found where the relevant + service is offered on the Cartzilla Sites or otherwise and are incorporated into these Terms of Use + by reference.

+ +

2. Your use of the Cartzilla Sites

+

You certify that the Content you provide on or through the Cartzilla Sites is accurate and that the + information you provide on or through the Cartzilla Sites is complete. You are solely responsible + for maintaining the confidentiality and security of your account including username, password, and + PIN. Cartzilla is not responsible for any losses arising out of the unauthorized use of your + account. You agree that Cartzilla does not have any responsibility if you lose or share access to + your device. Any agreement between you and the issuer of your credit card, debit card, or other form + of payment will continue to govern your use of such payment method on the Cartzilla Sites. You agree + that Cartzilla is not a party to any such agreement, nor is Cartzilla responsible for the content, + accuracy, or unavailability of any method used for payment. Your account may be restricted or + terminated for any reason, at our sole discretion. Except as otherwise provided by law, at any time + without notice to you, we may (1) change, restrict access to, suspend, or discontinue the Cartzilla + Sites or any portion of the Cartzilla Sites, and (2) charge, modify, or waive any fees required to + use any services, functionality, or other content available through the Cartzilla Sites or any + portion of the Cartzilla Sites.

+

In connection with the Cartzilla Sites, you will not:

+
    +
  • Make available any Content through or in connection with the Cartzilla Sites that is or may be + in violation of the content guidelines set forth in Section 3.C (Prohibited Content) below.
  • +
  • Make available through or in connection with the Cartzilla Sites any virus, worm, Trojan horse, + Easter egg, time bomb, spyware, or other computer code, file, or program that is or is + potentially harmful or invasive or intended to damage or hijack the operation of, or to monitor + the use of, any hardware, software, or equipment.
  • +
  • Use the Cartzilla Sites for any commercial purpose, or for any purpose that is fraudulent or + otherwise tortious or unlawful.
  • +
  • Harvest or collect information about users of the Cartzilla Sites.
  • +
  • Interfere with or disrupt the operation of the Cartzilla Sites or the systems, servers, or + networks used to make the Cartzilla Sites available, including by hacking or defacing any + portion of the Cartzilla Sites; or violate any requirement, procedure, or policy of such servers + or networks.
  • +
  • Reproduce, modify, adapt, translate, create derivative works of, sell, rent, lease, loan, + timeshare, distribute, or otherwise exploit any portion of (or any use of) the Cartzilla Sites + except as expressly authorized in these Terms of Use, without Cartzilla's express prior written + consent.
  • +
  • Reverse engineer, decompile, or disassemble any portion of the Cartzilla Sites, except where + such restriction is expressly prohibited by applicable law.
  • +
  • Remove any copyright, trademark, or other proprietary rights notice from the Cartzilla Sites. +
  • +
  • You will not attempt to do anything, or permit, encourage, assist, or allow any third party to + do anything, prohibited in this Section, or attempt, permit, encourage, assist, or allow any + other violation of these Terms of Use.
  • +
+ +

3. Ordering and delivery

+

When placing an order through Cartzilla, you are responsible for ensuring the accuracy of the items, + quantities, and delivery details. Cartzilla does not guarantee the availability of any specific + product and reserves the right to substitute products based on availability. Delivery times provided + are estimates and may vary due to various factors.

+
    +
  • Reverse engineer, decompile, or disassemble any portion of the Cartzilla Sites, except where + such restriction is expressly prohibited by applicable law.
  • +
  • Reproduce, modify, adapt, translate, create derivative works of, sell, rent, lease, loan, + timeshare, distribute, or otherwise exploit any portion of (or any use of) the Cartzilla Sites + except as expressly authorized in these Terms of Use, without Cartzilla's express prior written + consent.
  • +
  • You will not attempt to do anything, or permit, encourage, assist, or allow any third party to + do anything, prohibited in this Section, or attempt, permit, encourage, assist, or allow any + other violation of these Terms of Use.
  • +
  • Remove any copyright, trademark, or other proprietary rights notice from the Cartzilla Sites. +
  • +
+ +

4. Payments

+

Cartzilla facilitates payments for orders made through the Platform. By using Cartzilla's payment + services, you agree to provide accurate payment information and authorize Cartzilla to charge the + applicable amount for your order. Cartzilla may use third-party payment processors to process + transactions and may store your payment information in accordance with its Privacy Policy.

+ +

5. User conduct

+

You agree to use the Platform in compliance with all applicable laws and regulations. You shall not + engage in any unlawful, harmful, or abusive behavior while using the Platform. Cartzilla reserves + the right to suspend or terminate your account if you violate these Terms or engage in any + prohibited activities.

+

Intellectual property

+

All content on the Cartzilla Platform, including but not limited to text, graphics, logos, and + software, is the property of Cartzilla or its licensors and is protected by intellectual property + laws. You may not use, reproduce, modify, or distribute any content from the Platform without prior + written consent from Cartzilla.

+

Third-party links and content

+

The Platform may contain links to third-party websites or resources. Cartzilla does not endorse, + control, or assume responsibility for any third-party content or websites. You acknowledge and agree + that Cartzilla is not liable for any loss or damage caused by your reliance on such content or + websites.

+

Disclaimer of warranties

+

The Platform is provided on an "as is" and "as available" basis, without warranties of any kind, + either express or implied. Cartzilla does not guarantee the accuracy, reliability, or availability + of the Platform and disclaims all warranties to the fullest extent permitted by law.

+

Limitation of liability

+

To the maximum extent permitted by law, Cartzilla and its affiliates shall not be liable for any + indirect, incidental, consequential, or punitive damages arising out of or in connection with the + use of the Platform, even if advised of the possibility of such damages.

+ +

6. Entire agreement and severability

+

These Terms, subject to any amendments, modifications, or additional agreements you enter into with + Cartzilla, shall constitute the entire agreement between you and Cartzilla with respect to the + Services and any use of the Services. If any provision of these Terms is found to be invalid by a + court of competent jurisdiction, that provision only will be limited to the minimum extent + necessary, and the remaining provisions will remain in full force and effect.

+

Cartzilla reserves the right to modify or update these Terms at any time without prior notice. Your + continued use of the Platform after any changes to the Terms constitutes acceptance of those + changes.

+ +

7. Contact information

+

If you have any questions, or comments about these Terms please contact Cartzilla at:

+ +

For customer service inquiries, please review Your Account Settings, visit + Cartzilla's Help Center.

+ +
+ +

Was this information helpful?

+
+ + +
+
+
+
+
+ + @include('layouts.partials/footer') +@endsection + +@section('scripts') +@endsection diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 0000000..3c9adf1 --- /dev/null +++ b/routes/console.php @@ -0,0 +1,8 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 0000000..7911874 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,12 @@ + '/'], function () { + Route::get('', [RoutingController::class, 'index'])->name('root'); + Route::get('{first}/{second}/{third}', [RoutingController::class, 'thirdLevel'])->name('third'); + Route::get('{first}/{second}', [RoutingController::class, 'secondLevel'])->name('second'); + Route::get('{any}', [RoutingController::class, 'root'])->name('any'); + +}); 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/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..8364a84 --- /dev/null +++ b/tests/Feature/ExampleTest.php @@ -0,0 +1,19 @@ +get('/'); + + $response->assertStatus(200); + } +} 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 @@ +assertTrue(true); + } +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..cc136f5 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,26 @@ +import { defineConfig } from "vite"; +import laravel from "laravel-vite-plugin"; + +export default defineConfig({ + plugins: [ + laravel({ + input: [ + //scss + "resources/scss/theme.scss", + "resources/icons/cartzilla-icons.min.css", + "node_modules/img-comparison-slider/dist/styles.css", + "node_modules/swiper/swiper-bundle.min.css", + "node_modules/choices.js/public/assets/styles/choices.min.css", + "node_modules/glightbox/dist/css/glightbox.min.css", + "node_modules/simplebar/dist/simplebar.min.css", + 'node_modules/flatpickr/dist/flatpickr.min.css', + "node_modules/nouislider/dist/nouislider.min.css", + + //js + "resources/js/theme-switcher.js", + "resources/js/theme.js", + ], + refresh: true, + }), + ], +}); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..9139bfd --- /dev/null +++ b/yarn.lock @@ -0,0 +1,933 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@esbuild/aix-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c" + integrity sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA== + +"@esbuild/android-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz#8aa4965f8d0a7982dc21734bf6601323a66da752" + integrity sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg== + +"@esbuild/android-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz#300712101f7f50f1d2627a162e6e09b109b6767a" + integrity sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg== + +"@esbuild/android-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz#87dfb27161202bdc958ef48bb61b09c758faee16" + integrity sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg== + +"@esbuild/darwin-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz#79197898ec1ff745d21c071e1c7cc3c802f0c1fd" + integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg== + +"@esbuild/darwin-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz#146400a8562133f45c4d2eadcf37ddd09718079e" + integrity sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA== + +"@esbuild/freebsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz#1c5f9ba7206e158fd2b24c59fa2d2c8bb47ca0fe" + integrity sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg== + +"@esbuild/freebsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz#ea631f4a36beaac4b9279fa0fcc6ca29eaeeb2b3" + integrity sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ== + +"@esbuild/linux-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz#e1066bce58394f1b1141deec8557a5f0a22f5977" + integrity sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ== + +"@esbuild/linux-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz#452cd66b20932d08bdc53a8b61c0e30baf4348b9" + integrity sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw== + +"@esbuild/linux-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz#b24f8acc45bcf54192c7f2f3be1b53e6551eafe0" + integrity sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA== + +"@esbuild/linux-loong64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz#f9cfffa7fc8322571fbc4c8b3268caf15bd81ad0" + integrity sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng== + +"@esbuild/linux-mips64el@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz#575a14bd74644ffab891adc7d7e60d275296f2cd" + integrity sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw== + +"@esbuild/linux-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz#75b99c70a95fbd5f7739d7692befe60601591869" + integrity sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA== + +"@esbuild/linux-riscv64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz#2e3259440321a44e79ddf7535c325057da875cd6" + integrity sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w== + +"@esbuild/linux-s390x@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz#17676cabbfe5928da5b2a0d6df5d58cd08db2663" + integrity sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg== + +"@esbuild/linux-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz#0583775685ca82066d04c3507f09524d3cd7a306" + integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw== + +"@esbuild/netbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz#f04c4049cb2e252fe96b16fed90f70746b13f4a4" + integrity sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg== + +"@esbuild/netbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz#77da0d0a0d826d7c921eea3d40292548b258a076" + integrity sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ== + +"@esbuild/openbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz#6296f5867aedef28a81b22ab2009c786a952dccd" + integrity sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A== + +"@esbuild/openbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz#f8d23303360e27b16cf065b23bbff43c14142679" + integrity sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw== + +"@esbuild/openharmony-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz#49e0b768744a3924be0d7fd97dd6ce9b2923d88d" + integrity sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg== + +"@esbuild/sunos-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz#a6ed7d6778d67e528c81fb165b23f4911b9b13d6" + integrity sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w== + +"@esbuild/win32-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz#9ac14c378e1b653af17d08e7d3ce34caef587323" + integrity sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg== + +"@esbuild/win32-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz#918942dcbbb35cc14fca39afb91b5e6a3d127267" + integrity sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ== + +"@esbuild/win32-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5" + integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA== + +"@kurkle/color@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.4.tgz#4d4ff677e1609214fc71c580125ddddd86abcabf" + integrity sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w== + +"@rollup/rollup-android-arm-eabi@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz#7131f3d364805067fd5596302aad9ebef1434b32" + integrity sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA== + +"@rollup/rollup-android-arm64@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz#7ede14d7fcf7c57821a2731c04b29ccc03145d82" + integrity sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g== + +"@rollup/rollup-darwin-arm64@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz#d59bf9ed582b38838e86a17f91720c17db6575b9" + integrity sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ== + +"@rollup/rollup-darwin-x64@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz#a76278d9b9da9f84ea7909a14d93b915d5bbe01e" + integrity sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw== + +"@rollup/rollup-freebsd-arm64@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz#1a94821a1f565b9eaa74187632d482e4c59a1707" + integrity sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA== + +"@rollup/rollup-freebsd-x64@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz#aad2274680106b2b6549b1e35e5d3a7a9f1f16af" + integrity sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA== + +"@rollup/rollup-linux-arm-gnueabihf@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz#100fe4306399ffeec47318a3c9b8c0e5e8b07ddb" + integrity sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg== + +"@rollup/rollup-linux-arm-musleabihf@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz#b84634952604b950e18fa11fddebde898c5928d8" + integrity sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q== + +"@rollup/rollup-linux-arm64-gnu@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz#dad6f2fb41c2485f29a98e40e9bd78253255dbf3" + integrity sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA== + +"@rollup/rollup-linux-arm64-musl@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz#0f3f77c8ce9fbf982f8a8378b70a73dc6704a706" + integrity sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ== + +"@rollup/rollup-linux-loong64-gnu@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz#870bb94e9dad28bb3124ba49bd733deaa6aa2635" + integrity sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ== + +"@rollup/rollup-linux-ppc64-gnu@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz#188427d11abefc6c9926e3870b3e032170f5577c" + integrity sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g== + +"@rollup/rollup-linux-riscv64-gnu@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz#9dec6eadbbb5abd3b76fe624dc4f006913ff4a7f" + integrity sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA== + +"@rollup/rollup-linux-riscv64-musl@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz#b26ba1c80b6f104dc5bd83ed83181fc0411a0c38" + integrity sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ== + +"@rollup/rollup-linux-s390x-gnu@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz#dc83647189b68ad8d56a956a6fcaa4ee9c728190" + integrity sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w== + +"@rollup/rollup-linux-x64-gnu@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz#42c3b8c94e9de37bd103cb2e26fb715118ef6459" + integrity sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw== + +"@rollup/rollup-linux-x64-musl@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz#d0e216ee1ea16bfafe35681b899b6a05258988e5" + integrity sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA== + +"@rollup/rollup-openharmony-arm64@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz#3acd0157cb8976f659442bfd8a99aca46f8a2931" + integrity sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A== + +"@rollup/rollup-win32-arm64-msvc@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz#3eb9e7d4d0e1d2e0850c4ee9aa2d0ddf89a8effa" + integrity sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA== + +"@rollup/rollup-win32-ia32-msvc@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz#d69280bc6680fe19e0956e965811946d542f6365" + integrity sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg== + +"@rollup/rollup-win32-x64-gnu@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz#d182ce91e342bad9cbb8b284cf33ac542b126ead" + integrity sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw== + +"@rollup/rollup-win32-x64-msvc@4.53.2": + version "4.53.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz#d9ab606437fd072b2cb7df7e54bcdc7f1ccbe8b4" + integrity sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA== + +"@types/estree@1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.8.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" + integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bootstrap@^5.3.8: + version "5.3.8" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.8.tgz#6401a10057a22752d21f4e19055508980656aeed" + integrity sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg== + +braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +chalk@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chart.js@^4.5.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.5.1.tgz#19dd1a9a386a3f6397691672231cb5fc9c052c35" + integrity sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw== + dependencies: + "@kurkle/color" "^0.3.0" + +choices.js@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/choices.js/-/choices.js-11.1.0.tgz#4fcfb5834fdf0c7d1959f0261d1bbe526a7c9222" + integrity sha512-mIt0uLhedHg2ea/K2PACrVpt391vRGHuOoctPAiHcyemezwzNMxj7jOzNEk8e7EbjLh0S0sspDkSCADOKz9kcw== + dependencies: + fuse.js "^7.0.0" + +"chokidar@>=3.0.0 <4.0.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cleave.js@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/cleave.js/-/cleave.js-1.6.0.tgz#0e4e011943bdd70c67c9dcf4ff800ce710529171" + integrity sha512-ivqesy3j5hQVG3gywPfwKPbi/7ZSftY/UNp5uphnqjr25yI2CP8FS2ODQPzuLXXnNLi29e2+PgPkkiKUXLs/Nw== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concurrently@^9.0.1: + version "9.2.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.2.1.tgz#248ea21b95754947be2dad9c3e4b60f18ca4e44f" + integrity sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng== + dependencies: + chalk "4.1.2" + rxjs "7.8.2" + shell-quote "1.8.3" + supports-color "8.1.1" + tree-kill "1.2.2" + yargs "17.7.2" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +drift-zoom@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/drift-zoom/-/drift-zoom-1.5.1.tgz#1f815c34590f4c8adda31a437d681c5b62f5d70d" + integrity sha512-GNLWl0ydTkgyFxfPouKvAZXvJhTt2dqUGkXCqENe+Y1OlQuQ+nUNKgvSpNvjp3nrbcij75GbJR/iMf/qdZbgPw== + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +esbuild@^0.25.0: + version "0.25.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5" + integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.12" + "@esbuild/android-arm" "0.25.12" + "@esbuild/android-arm64" "0.25.12" + "@esbuild/android-x64" "0.25.12" + "@esbuild/darwin-arm64" "0.25.12" + "@esbuild/darwin-x64" "0.25.12" + "@esbuild/freebsd-arm64" "0.25.12" + "@esbuild/freebsd-x64" "0.25.12" + "@esbuild/linux-arm" "0.25.12" + "@esbuild/linux-arm64" "0.25.12" + "@esbuild/linux-ia32" "0.25.12" + "@esbuild/linux-loong64" "0.25.12" + "@esbuild/linux-mips64el" "0.25.12" + "@esbuild/linux-ppc64" "0.25.12" + "@esbuild/linux-riscv64" "0.25.12" + "@esbuild/linux-s390x" "0.25.12" + "@esbuild/linux-x64" "0.25.12" + "@esbuild/netbsd-arm64" "0.25.12" + "@esbuild/netbsd-x64" "0.25.12" + "@esbuild/openbsd-arm64" "0.25.12" + "@esbuild/openbsd-x64" "0.25.12" + "@esbuild/openharmony-arm64" "0.25.12" + "@esbuild/sunos-x64" "0.25.12" + "@esbuild/win32-arm64" "0.25.12" + "@esbuild/win32-ia32" "0.25.12" + "@esbuild/win32-x64" "0.25.12" + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +fdir@^6.4.4, fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +flatpickr@^4.6.13: + version "4.6.13" + resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.13.tgz#8a029548187fd6e0d670908471e43abe9ad18d94" + integrity sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw== + +follow-redirects@^1.15.6: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +form-data@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + 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" + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +fuse.js@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-7.1.0.tgz#306228b4befeee11e05b027087c2744158527d09" + integrity sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + 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" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +glightbox@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/glightbox/-/glightbox-3.3.1.tgz#01d4c01394e437ac61792dc88fadca2e3f433eae" + integrity sha512-nXoKfJRnQTDaAFAw5799hjpfAAHx5aLvOLG0SIGudeMCwtHgO3P2/avNYapJ+SL4UEZxO2YNBPtq6pzMhSx42g== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +img-comparison-slider@^8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/img-comparison-slider/-/img-comparison-slider-8.0.6.tgz#a94385e49ee630903f8a6a4f9959658078668c87" + integrity sha512-ej4de7mWyjcXZvDgHq8K2a/dG8Vv+qYTdUjZa3cVILf316rLtDrHyGbh9fPvixmAFgbs30zTLfmaRDa7abjtzw== + +immutable@^4.0.0: + version "4.3.7" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" + integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +laravel-vite-plugin@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/laravel-vite-plugin/-/laravel-vite-plugin-2.0.1.tgz#6708acd1db21e626b300b528c0447c935ce30d84" + integrity sha512-zQuvzWfUKQu9oNVi1o0RZAJCwhGsdhx4NEOyrVQwJHaWDseGP9tl7XUPLY2T8Cj6+IrZ6lmyxlR1KC8unf3RLA== + dependencies: + picocolors "^1.0.0" + vite-plugin-full-reload "^1.1.0" + +list.js@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/list.js/-/list.js-2.3.1.tgz#48961989ffe52b0505e352f7a521f819f51df7e7" + integrity sha512-jnmm7DYpKtH3DxtO1E2VNCC9Gp7Wrp/FWA2JxQrZUhVJ2RCQBd57pCN6W5w6jpsfWZV0PCAbTX2NOPgyFeeZZg== + dependencies: + string-natural-compare "^2.0.2" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +nouislider@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/nouislider/-/nouislider-15.8.1.tgz#18729ed29738d2d328a1b5e0429d38eb8be8a696" + integrity sha512-93TweAi8kqntHJSPiSWQ1o/uZ29VWOmal9YKb6KKGGlCkugaNfAupT7o1qTHqdJvNQ7S0su5rO6qRFCjP8fxtw== + +picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.2, picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +postcss@^8.5.3: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +rollup@^4.34.9: + version "4.53.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.53.2.tgz#98e73ee51e119cb9d88b07d026c959522416420a" + integrity sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.53.2" + "@rollup/rollup-android-arm64" "4.53.2" + "@rollup/rollup-darwin-arm64" "4.53.2" + "@rollup/rollup-darwin-x64" "4.53.2" + "@rollup/rollup-freebsd-arm64" "4.53.2" + "@rollup/rollup-freebsd-x64" "4.53.2" + "@rollup/rollup-linux-arm-gnueabihf" "4.53.2" + "@rollup/rollup-linux-arm-musleabihf" "4.53.2" + "@rollup/rollup-linux-arm64-gnu" "4.53.2" + "@rollup/rollup-linux-arm64-musl" "4.53.2" + "@rollup/rollup-linux-loong64-gnu" "4.53.2" + "@rollup/rollup-linux-ppc64-gnu" "4.53.2" + "@rollup/rollup-linux-riscv64-gnu" "4.53.2" + "@rollup/rollup-linux-riscv64-musl" "4.53.2" + "@rollup/rollup-linux-s390x-gnu" "4.53.2" + "@rollup/rollup-linux-x64-gnu" "4.53.2" + "@rollup/rollup-linux-x64-musl" "4.53.2" + "@rollup/rollup-openharmony-arm64" "4.53.2" + "@rollup/rollup-win32-arm64-msvc" "4.53.2" + "@rollup/rollup-win32-ia32-msvc" "4.53.2" + "@rollup/rollup-win32-x64-gnu" "4.53.2" + "@rollup/rollup-win32-x64-msvc" "4.53.2" + fsevents "~2.3.2" + +rxjs@7.8.2: + version "7.8.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + +sass@1.77.6: + version "1.77.6" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.6.tgz#898845c1348078c2e6d1b64f9ee06b3f8bd489e4" + integrity sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +shell-quote@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== + +simplebar-core@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/simplebar-core/-/simplebar-core-1.3.2.tgz#e249caf38625afb7c316b2d219b66afd6227e301" + integrity sha512-qKgTTuTqapjsFGkNhCjyPhysnbZGpQqNmjk0nOYjFN5ordC/Wjvg+RbYCyMSnW60l/Z0ZS82GbNltly6PMUH1w== + dependencies: + lodash "^4.17.21" + lodash-es "^4.17.21" + +simplebar@^6.3.2: + version "6.3.3" + resolved "https://registry.yarnpkg.com/simplebar/-/simplebar-6.3.3.tgz#08b4763e2a8e2b121f444fba613797a82ac33481" + integrity sha512-ni9cIiA8GRitiaenV7A/gh8nTStiVqO3gLxrfCMmq6CSy/pB+fz+QxqvJLo142QHb2Tvgvr8ILwZxf3qzAq7pg== + dependencies: + simplebar-core "^1.3.2" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +string-natural-compare@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-2.0.3.tgz#9dbe1dd65490a5fe14f7a5c9bc686fc67cb9c6e4" + integrity sha512-4Kcl12rNjc+6EKhY8QyDVuQTAlMWwRiNbsxnVwBUKFr7dYPQuXVrtNU4sEkjF9LHY0AY6uVbB3ktbkIH4LC+BQ== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +swiper@^11.2.10: + version "11.2.10" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.2.10.tgz#ed0b17286b56f7fe8d4b46ed61e6e0bd8daaccad" + integrity sha512-RMeVUUjTQH+6N3ckimK93oxz6Sn5la4aDlgPzB+rBrG/smPdCTicXyhxa+woIpopz+jewEloiEE3lKo1h9w2YQ== + +timezz@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/timezz/-/timezz-9.0.2.tgz#c075e2f097950d34a34d71a6a3ce0f562d24ab75" + integrity sha512-oZrPwr4MJtzuD1R+2zy1rLaorF2c1urprqLI39IUj9et8b5xW2Zylbye0V1UbqMLGal/Z8bnoBNxyLZ9qnXhXQ== + +tinyglobby@^0.2.13: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +tslib@^2.1.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +vite-plugin-full-reload@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vite-plugin-full-reload/-/vite-plugin-full-reload-1.2.0.tgz#bc4bfdc842abb4d24309ca802be8b955fce1c0c6" + integrity sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA== + dependencies: + picocolors "^1.0.0" + picomatch "^2.3.1" + +vite@^6.2.4: + version "6.4.1" + resolved "https://registry.yarnpkg.com/vite/-/vite-6.4.1.tgz#afbe14518cdd6887e240a4b0221ab6d0ce733f96" + integrity sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g== + 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" + optionalDependencies: + fsevents "~2.3.3" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + 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"