diff --git a/composer.json b/composer.json index 692ef3d..47bd232 100644 --- a/composer.json +++ b/composer.json @@ -10,8 +10,12 @@ "license": "MIT", "require": { "php": "^8.2", + "blade-ui-kit/blade-icons": "^1.8", + "codeat3/blade-solar-icons": "^1.3", + "davidhsianturi/blade-bootstrap-icons": "^2.1", "laravel/fortify": "^1.34", "laravel/framework": "^12.0", + "laravel/socialite": "^5.24", "laravel/tinker": "^2.10.1", "livewire/livewire": "^4.1", "owen-it/laravel-auditing": "^14.0" diff --git a/composer.lock b/composer.lock index ad89690..b2334de 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e37dad01251afdfbb2af626828da163c", + "content-hash": "469c2ddbbd88dca7b605c572c1f7a00e", "packages": [ { "name": "bacon/bacon-qr-code", @@ -61,6 +61,87 @@ }, "time": "2025-11-19T17:15:36+00:00" }, + { + "name": "blade-ui-kit/blade-icons", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/driesvints/blade-icons.git", + "reference": "47e7b6f43250e6404e4224db8229219cd42b543c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/driesvints/blade-icons/zipball/47e7b6f43250e6404e4224db8229219cd42b543c", + "reference": "47e7b6f43250e6404e4224db8229219cd42b543c", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/view": "^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.4|^8.0", + "symfony/console": "^5.3|^6.0|^7.0", + "symfony/finder": "^5.3|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "^1.5.1", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0" + }, + "bin": [ + "bin/blade-icons-generate" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "BladeUI\\Icons\\BladeIconsServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "BladeUI\\Icons\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dries Vints", + "homepage": "https://driesvints.com" + } + ], + "description": "A package to easily make use of icons in your Laravel Blade views.", + "homepage": "https://github.com/driesvints/blade-icons", + "keywords": [ + "blade", + "icons", + "laravel", + "svg" + ], + "support": { + "issues": "https://github.com/driesvints/blade-icons/issues", + "source": "https://github.com/driesvints/blade-icons" + }, + "funding": [ + { + "url": "https://github.com/sponsors/driesvints", + "type": "github" + }, + { + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" + } + ], + "time": "2026-01-20T09:46:32+00:00" + }, { "name": "brick/math", "version": "0.14.8", @@ -190,6 +271,79 @@ ], "time": "2024-02-09T16:56:22+00:00" }, + { + "name": "codeat3/blade-solar-icons", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/codeat3/blade-solar-icons.git", + "reference": "9909f5de2ff8e161e242f41d93c86612fb0665a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/codeat3/blade-solar-icons/zipball/9909f5de2ff8e161e242f41d93c86612fb0665a3", + "reference": "9909f5de2ff8e161e242f41d93c86612fb0665a3", + "shasum": "" + }, + "require": { + "blade-ui-kit/blade-icons": "^1.1", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "codeat3/blade-icon-generation-helpers": "^0.10", + "codeat3/phpcs-styles": "^1.0", + "iconify/json": "^2.2", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0", + "symfony/process": "^5.0|^6.0|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Codeat3\\BladeSolarIcons\\BladeSolarIconsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Codeat3\\BladeSolarIcons\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Swapnil Sarwe", + "homepage": "https://swapnilsarwe.com" + }, + { + "name": "Dries Vints", + "homepage": "https://driesvints.com" + } + ], + "description": "A package to easily make use of \"Solar Icons\" in your Laravel Blade views.", + "homepage": "https://github.com/codeat3/blade-solar-icons", + "keywords": [ + "Solar Icons", + "blade", + "laravel" + ], + "support": { + "issues": "https://github.com/codeat3/blade-solar-icons/issues", + "source": "https://github.com/codeat3/blade-solar-icons/tree/1.3.1" + }, + "funding": [ + { + "url": "https://github.com/swapnilsarwe", + "type": "github" + } + ], + "time": "2025-12-06T12:38:44+00:00" + }, { "name": "dasprid/enum", "version": "1.0.7", @@ -240,6 +394,67 @@ }, "time": "2025-09-16T12:23:56+00:00" }, + { + "name": "davidhsianturi/blade-bootstrap-icons", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/davidhsianturi/blade-bootstrap-icons.git", + "reference": "e4480e75c4c3b0b350dd8f3acf3dfc1bd9eb560f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/davidhsianturi/blade-bootstrap-icons/zipball/e4480e75c4c3b0b350dd8f3acf3dfc1bd9eb560f", + "reference": "e4480e75c4c3b0b350dd8f3acf3dfc1bd9eb560f", + "shasum": "" + }, + "require": { + "blade-ui-kit/blade-icons": "^1.6", + "illuminate/support": "^9.0|^10.0|^11.0|^12.0", + "php": "^8.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.1", + "phpunit/phpunit": "^9.0|^10.5|^11.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Davidhsianturi\\BladeBootstrapIcons\\BladeBootstrapIconsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Davidhsianturi\\BladeBootstrapIcons\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "David H. Sianturi", + "email": "davidhsianturi@gmail.com", + "homepage": "https://davidhsianturi.com", + "role": "Developer" + } + ], + "description": "A package to easily make use of Bootstrap Icons in your Laravel Blade views.", + "homepage": "https://github.com/davidhsianturi/blade-bootstrap-icons", + "keywords": [ + "Bootstrap Icons", + "blade", + "laravel" + ], + "support": { + "issues": "https://github.com/davidhsianturi/blade-bootstrap-icons/issues", + "source": "https://github.com/davidhsianturi/blade-bootstrap-icons/tree/v2.1.0" + }, + "time": "2025-06-18T12:39:09+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.3", @@ -613,6 +828,69 @@ ], "time": "2025-03-06T22:45:56+00:00" }, + { + "name": "firebase/php-jwt", + "version": "v7.0.2", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "5645b43af647b6947daac1d0f659dd1fbe8d3b65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/5645b43af647b6947daac1d0f659dd1fbe8d3b65", + "reference": "5645b43af647b6947daac1d0f659dd1fbe8d3b65", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.4", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psr/cache": "^2.0||^3.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v7.0.2" + }, + "time": "2025-12-16T22:17:28+00:00" + }, { "name": "fruitcake/php-cors", "version": "v1.4.0", @@ -1562,6 +1840,78 @@ }, "time": "2026-02-03T06:55:34+00:00" }, + { + "name": "laravel/socialite", + "version": "v5.24.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/socialite.git", + "reference": "5cea2eebf11ca4bc6c2f20495c82a70a9b3d1613" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/socialite/zipball/5cea2eebf11ca4bc6c2f20495c82a70a9b3d1613", + "reference": "5cea2eebf11ca4bc6c2f20495c82a70a9b3d1613", + "shasum": "" + }, + "require": { + "ext-json": "*", + "firebase/php-jwt": "^6.4|^7.0", + "guzzlehttp/guzzle": "^6.0|^7.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/http": "^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", + "league/oauth1-client": "^1.11", + "php": "^7.2|^8.0", + "phpseclib/phpseclib": "^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.18|^5.20|^6.47|^7.55|^8.36|^9.15|^10.8", + "phpstan/phpstan": "^1.12.23", + "phpunit/phpunit": "^8.0|^9.3|^10.4|^11.5|^12.0" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Socialite": "Laravel\\Socialite\\Facades\\Socialite" + }, + "providers": [ + "Laravel\\Socialite\\SocialiteServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Socialite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", + "homepage": "https://laravel.com", + "keywords": [ + "laravel", + "oauth" + ], + "support": { + "issues": "https://github.com/laravel/socialite/issues", + "source": "https://github.com/laravel/socialite" + }, + "time": "2026-01-10T16:07:28+00:00" + }, { "name": "laravel/tinker", "version": "v2.11.1", @@ -2005,6 +2355,82 @@ ], "time": "2024-09-21T08:32:55+00:00" }, + { + "name": "league/oauth1-client", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth1-client.git", + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/f9c94b088837eb1aae1ad7c4f23eb65cc6993055", + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", + "guzzlehttp/psr7": "^1.7|^2.0", + "php": ">=7.1||>=8.0" + }, + "require-dev": { + "ext-simplexml": "*", + "friendsofphp/php-cs-fixer": "^2.17", + "mockery/mockery": "^1.3.3", + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5||9.5" + }, + "suggest": { + "ext-simplexml": "For decoding XML-based responses." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev", + "dev-develop": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\OAuth1\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Corlett", + "email": "bencorlett@me.com", + "homepage": "http://www.webcomm.com.au", + "role": "Developer" + } + ], + "description": "OAuth 1.0 Client Library", + "keywords": [ + "Authentication", + "SSO", + "authorization", + "bitbucket", + "identity", + "idp", + "oauth", + "oauth1", + "single sign on", + "trello", + "tumblr", + "twitter" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth1-client/issues", + "source": "https://github.com/thephpleague/oauth1-client/tree/v1.11.0" + }, + "time": "2024-12-10T19:59:05+00:00" + }, { "name": "league/uri", "version": "7.8.0", @@ -2925,6 +3351,56 @@ }, "time": "2025-09-24T15:06:41+00:00" }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.5", @@ -3000,6 +3476,116 @@ ], "time": "2025-12-27T19:41:33+00:00" }, + { + "name": "phpseclib/phpseclib", + "version": "3.0.49", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "6233a1e12584754e6b5daa69fe1289b47775c1b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/6233a1e12584754e6b5daa69fe1289b47775c1b9", + "reference": "6233a1e12584754e6b5daa69fe1289b47775c1b9", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "^1|^2|^3", + "paragonie/random_compat": "^1.4|^2.0|^9.99.99", + "php": ">=5.6.1" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "suggest": { + "ext-dom": "Install the DOM extension to load XML formatted public keys.", + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." + }, + "type": "library", + "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib3\\": "phpseclib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.49" + }, + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], + "time": "2026-01-27T09:17:28+00:00" + }, { "name": "pragmarx/google2fa", "version": "v9.0.0", diff --git a/config/blade-icons.php b/config/blade-icons.php new file mode 100644 index 0000000..5658b11 --- /dev/null +++ b/config/blade-icons.php @@ -0,0 +1,183 @@ + [ + + 'default' => [ + + /* + |----------------------------------------------------------------- + | Icons Path + |----------------------------------------------------------------- + | + | Provide the relative path from your app root to your SVG icons + | directory. Icons are loaded recursively so there's no need to + | list every sub-directory. + | + | Relative to the disk root when the disk option is set. + | + */ + + 'path' => 'resources/svg', + + /* + |----------------------------------------------------------------- + | Filesystem Disk + |----------------------------------------------------------------- + | + | Optionally, provide a specific filesystem disk to read + | icons from. When defining a disk, the "path" option + | starts relatively from the disk root. + | + */ + + 'disk' => '', + + /* + |----------------------------------------------------------------- + | Default Prefix + |----------------------------------------------------------------- + | + | This config option allows you to define a default prefix for + | your icons. The dash separator will be applied automatically + | to every icon name. It's required and needs to be unique. + | + */ + + 'prefix' => 'icon', + + /* + |----------------------------------------------------------------- + | Fallback Icon + |----------------------------------------------------------------- + | + | This config option allows you to define a fallback + | icon when an icon in this set cannot be found. + | + */ + + 'fallback' => '', + + /* + |----------------------------------------------------------------- + | Default Set Classes + |----------------------------------------------------------------- + | + | This config option allows you to define some classes which + | will be applied by default to all icons within this set. + | + */ + + 'class' => '', + + /* + |----------------------------------------------------------------- + | Default Set Attributes + |----------------------------------------------------------------- + | + | This config option allows you to define some attributes which + | will be applied by default to all icons within this set. + | + */ + + 'attributes' => [ + // 'width' => 50, + // 'height' => 50, + ], + + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Global Default Classes + |-------------------------------------------------------------------------- + | + | This config option allows you to define some classes which + | will be applied by default to all icons. + | + */ + + 'class' => '', + + /* + |-------------------------------------------------------------------------- + | Global Default Attributes + |-------------------------------------------------------------------------- + | + | This config option allows you to define some attributes which + | will be applied by default to all icons. + | + */ + + 'attributes' => [ + // 'width' => 50, + // 'height' => 50, + ], + + /* + |-------------------------------------------------------------------------- + | Global Fallback Icon + |-------------------------------------------------------------------------- + | + | This config option allows you to define a global fallback + | icon when an icon in any set cannot be found. It can + | reference any icon from any configured set. + | + */ + + 'fallback' => '', + + /* + |-------------------------------------------------------------------------- + | Components + |-------------------------------------------------------------------------- + | + | These config options allow you to define some + | settings related to Blade Components. + | + */ + + 'components' => [ + + /* + |---------------------------------------------------------------------- + | Disable Components + |---------------------------------------------------------------------- + | + | This config option allows you to disable Blade components + | completely. It's useful to avoid performance problems + | when working with large icon libraries. + | + */ + + 'disabled' => false, + + /* + |---------------------------------------------------------------------- + | Default Icon Component Name + |---------------------------------------------------------------------- + | + | This config option allows you to define the name + | for the default Icon class component. + | + */ + + 'default' => 'icon', + + ], + +]; diff --git a/package-lock.json b/package-lock.json index 66d9750..1acc56f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,11 +5,11 @@ "packages": { "": { "devDependencies": { - "@tailwindcss/vite": "^4.0.0", + "@tailwindcss/vite": "^4.1.18", "axios": "^1.11.0", "concurrently": "^9.0.1", "laravel-vite-plugin": "^2.0.0", - "tailwindcss": "^4.0.0", + "tailwindcss": "^4.1.18", "vite": "^7.0.7" } }, diff --git a/package.json b/package.json index 7686b29..def3c24 100644 --- a/package.json +++ b/package.json @@ -7,11 +7,11 @@ "dev": "vite" }, "devDependencies": { - "@tailwindcss/vite": "^4.0.0", + "@tailwindcss/vite": "^4.1.18", "axios": "^1.11.0", "concurrently": "^9.0.1", "laravel-vite-plugin": "^2.0.0", - "tailwindcss": "^4.0.0", + "tailwindcss": "^4.1.18", "vite": "^7.0.7" } } diff --git a/resources/css/app.css b/resources/css/app.css index 3e6abea..559d170 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -1,11 +1,54 @@ -@import 'tailwindcss'; +@import "tailwindcss"; -@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; -@source '../../storage/framework/views/*.php'; -@source '../**/*.blade.php'; -@source '../**/*.js'; +@source "../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php"; +@source "../../storage/framework/views/*.php"; +@source "../**/*.blade.php"; +@source "../**/*.js"; +/* Theme tokens */ @theme { - --font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', - 'Segoe UI Symbol', 'Noto Color Emoji'; + --color-background: hsl(36 33% 96%); + --color-foreground: hsl(24 20% 14%); + --color-card: hsl(36 33% 98%); + --color-card-foreground: hsl(24 20% 14%); + --color-muted: hsl(33 18% 92%); + --color-muted-foreground: hsl(25 10% 42%); + --color-border: hsl(30 18% 86%); + --color-ring: hsl(142 28% 39%); + + --color-primary: hsl(142 28% 39%); + --color-primary-foreground: hsl(0 0% 100%); + + --color-secondary: hsl(33 18% 92%); + --color-secondary-foreground: hsl(24 20% 14%); + + --color-destructive: hsl(0 72% 51%); + --color-destructive-foreground: hsl(0 0% 100%); +} + +/* Small reusable components (no chained @apply) */ +@layer components { + .app-shell { + @apply mx-auto min-h-dvh max-w-[430px] bg-background text-foreground; + } + + .card { + @apply rounded-2xl bg-card text-card-foreground ring-1 ring-border; + } + + .btn-primary { + @apply inline-flex min-h-[44px] items-center justify-center rounded-xl px-4 text-sm font-semibold + bg-primary text-primary-foreground transition + active:opacity-90 + focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30 + disabled:pointer-events-none disabled:opacity-50; + } + + .btn-outline { + @apply inline-flex min-h-[44px] items-center justify-center rounded-xl px-4 text-sm font-semibold + bg-card text-foreground ring-1 ring-border transition + active:bg-muted + focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30 + disabled:pointer-events-none disabled:opacity-50; + } } diff --git a/resources/views/components/layout/⚡navbar.blade.php b/resources/views/components/layout/⚡navbar.blade.php new file mode 100644 index 0000000..42ed0c0 --- /dev/null +++ b/resources/views/components/layout/⚡navbar.blade.php @@ -0,0 +1,73 @@ + '/dashboard', 'label' => 'Home', 'key' => 'home'], + ['href' => '/groups', 'label' => 'Groups', 'key' => 'groups'], + ['href' => '/sash', 'label' => 'Sash', 'key' => 'sash'], + ['href' => '/profile', 'label' => 'Profile', 'key' => 'profile'], + ]; + } + + public function isActive(string $href): bool + { + $path = ltrim(parse_url($href, PHP_URL_PATH) ?? $href, '/'); + + if ($path === '') { + return request()->is('/'); + } + + return request()->is($path) || request()->is($path . '/*'); + } +}; +?> + + diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 5100c31..69a4a99 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -1,18 +1,26 @@ -
- - + + + -+ Create fun challenges with your crew, earn badges, track progress, and see who tops the leaderboard. +
+ + +STEP 1
+Create a crew with friends, family, or coworkers. Share an invite code to get everyone on board.
+STEP 2
+Dream up custom challenges with icons, colors, and step-by-step requirements to complete.
+STEP 3
+Complete challenges, get verified by your crew, and watch your sash fill up with patches.
++ Made for fun, inspired by scouting. +
+Laravel has an incredibly rich ecosystem.
We suggest starting with the following.