fuelviews/laravel-navigation
最新稳定版本:v2.0.5
Composer 安装命令:
composer require fuelviews/laravel-navigation
包简介
Laravel navigation package
README 文档
README
A comprehensive and flexible Laravel navigation package that provides beautiful, responsive navigation components with Alpine.js interactions and Tailwind CSS styling. Perfect for building modern Laravel applications with professional navigation experiences.
???? Requirements
- PHP 8.3+
- Laravel 10.x, 11.x, or 12.x
- Alpine.js (included with Livewire)
- Tailwind CSS
???? Installation
Install the package via Composer:
composer require fuelviews/laravel-navigation
Quick Setup
Run the install command for guided setup:
php artisan navigation:install
This will:
- Publish the configuration file
- Publish view files for customization
- Provide setup instructions
Manual Setup
Alternatively, you can manually publish components:
# Publish configuration php artisan vendor:publish --tag="navigation-config" # Publish views (optional) php artisan vendor:publish --tag="navigation-views" # Publish service provider for advanced customization (optional) php artisan vendor:publish --tag="laravel-package-tools-service-provider"
⚙️ Configuration
The package uses a comprehensive configuration file located at config/navigation.php:
Navigation Items
Define your navigation structure with support for simple links and dropdown menus:
'navigation' => [ // Simple link [ 'type' => 'link', 'position' => 0, 'name' => 'Home', 'route' => 'home', ], // Dropdown menu [ 'type' => 'dropdown', 'position' => 1, 'name' => 'Services', 'links' => [ [ 'name' => 'Web Development', 'route' => 'services.web', ], [ 'name' => 'Mobile Apps', 'route' => 'services.mobile', ], ], ], ],
Visual Configuration
// logo config 'default_logo' => '', 'transparency_logo' => '', // navigation config 'top_nav_enabled' => false, 'logo_swap_enabled' => true, 'transparent_nav_background' => true, // logo shape config: 'horizontal', 'vertical', or 'square' 'default_logo_shape' => 'square', 'transparency_logo_shape' => 'horizontal',
Pre-scrolled Routes
Define routes that should have a "scrolled" appearance from page load:
'pre_scrolled_routes' => [ 'careers', 'contact', 'services', 'forms.*', 'sabhero-articles.*', 'portfolio', 'privacy-policy', 'terms-and-conditions', ],
???? Components
Desktop Navigation
<!-- Complete desktop navigation --> <x-navigation::desktop.desktop-navigation /> <!-- Individual dropdown button --> <x-navigation::desktop.desktop-dropdown-button name="Services" :links="$serviceLinks" />
Mobile Navigation
<!-- Mobile navigation menu --> <x-navigation::mobile.mobile-navigation /> <!-- With custom background classes --> <x-navigation::mobile.mobile-navigation :bg-class="['bg-blue-50', 'bg-blue-100']" />
Navigation Wrapper
<!-- Smart navigation that adapts based on route --> <x-navigation::navigation-scroll /> <!-- With transparency control --> <x-navigation::navigation-scroll :is-transparent="false" />
Utility Components
<!-- Top bar for contact info --> <x-navigation::top-bar /> <!-- Footer with navigation links --> <x-navigation::footer.footer /> <!-- Spacing component --> <x-navigation::spacer /> <!-- Phone button --> <x-navigation::phone-button /> <!-- Logo component --> <x-navigation::logo /> <!-- Social media icons --> <x-navigation::social.facebook /> <x-navigation::social.instagram /> <x-navigation::social.linkedin /> <x-navigation::social.youtube />
???? Complete Navigation Example
Here's a complete navigation setup:
<!-- resources/views/layouts/app.blade.php --> <!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <!-- Your head content --> @vite(['resources/css/app.css', 'resources/js/app.js']) </head> <body> <!-- Top bar with contact info --> @if(Navigation::isTopNavEnabled()) <x-navigation::top-bar /> @endif <!-- Main navigation --> <x-navigation::navigation-scroll> <!-- Desktop navigation --> <div class="hidden md:flex"> <x-navigation::logo /> <x-navigation::desktop.desktop-navigation /> <x-navigation::phone-button /> </div> <!-- Mobile navigation toggle --> <div class="md:hidden"> <x-navigation::hamburger-button /> </div> </x-navigation::navigation-scroll> <!-- Mobile navigation menu --> <x-navigation::mobile.mobile-navigation /> <!-- Page content --> <main> {{ $slot }} </main> <!-- Footer --> <x-navigation::footer.footer /> </body> </html>
???? Styling with Tailwind CSS
Add the package views to your tailwind.config.js:
module.exports = { content: [ './resources/**/*.blade.php', './resources/**/*.js', './vendor/fuelviews/laravel-navigation/resources/**/*.blade.php', ], // ... rest of your config }
???? Using the Navigation Facade
Access navigation data programmatically:
use Fuelviews\Navigation\Facades\Navigation; // Get all navigation items $items = Navigation::getNavigationItems(); // Check if dropdown route is active $isActive = Navigation::isDropdownRouteActive($dropdownLinks); // Get configuration values $logo = Navigation::getDefaultLogo(); $phone = Navigation::getPhone(); $isTransparent = Navigation::isTransparentNavBackground(); // Check route states $isPreScrolled = Navigation::isPreScrolledRoute(); $preScrolledString = Navigation::getPreScrolledRoute(); // 'true' or 'false'
????️ Artisan Commands
List Navigation Items
View all configured navigation items:
php artisan navigation:list
Output:
Navigation Items: +----------+----------+---------+--------------+ | Position | Type | Name | Route/Links | +----------+----------+---------+--------------+ | 0 | link | Home | home | | 1 | dropdown | Services| 3 links | | 2 | link | About | about | +----------+----------+---------+--------------+ Validate Configuration
Validate your navigation configuration:
php artisan navigation:validate
This command checks for:
- Required fields (type, position, name)
- Valid navigation types
- Route existence
- Duplicate positions
- Dropdown structure integrity
????️ Advanced Usage
Custom Navigation Items
Add navigation items programmatically:
// In a service provider config([ 'navigation.navigation' => array_merge( config('navigation.navigation'), [ [ 'type' => 'link', 'position' => 99, 'name' => 'Admin', 'route' => 'admin.dashboard', ] ] ) ]);
Custom View Components
Extend the package with your own components:
// Create custom component class CustomNavigationLink extends Component { public function render() { return view('components.custom-navigation-link'); } } // Register in AppServiceProvider Blade::component('custom-nav-link', CustomNavigationLink::class);
???? Testing
The package includes comprehensive tests. Run them with:
# In the package directory composer test # Code style composer format
Testing Your Navigation
Test navigation in your application:
// Feature test example public function test_navigation_renders_correctly() { $response = $this->get('/'); $response->assertSeeLivewire(DesktopNavigation::class); $response->assertSee('Home'); $response->assertSee('Services'); }
???? Customization Examples
Custom Dropdown Styling
<!-- Override dropdown component --> <x-navigation::desktop.desktop-dropdown align="right" width="48"> <x-slot name="trigger"> <button class="custom-dropdown-button"> Services </button> </x-slot> <x-slot name="content"> <!-- Custom dropdown content --> </x-slot> </x-navigation::desktop.desktop-dropdown>
???? Contributing
We welcome contributions! Please see CONTRIBUTING.md for details.
Development Setup
git clone https://github.com/fuelviews/laravel-navigation.git cd laravel-navigation composer install composer test
???? Changelog
Please see CHANGELOG for more information on what has changed recently.
???? Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
???????? Credits
???? License
The MIT License (MIT). Please see License File for more information.
Built with ❤️ by the Fuelviews team
统计信息
- 总下载量: 1.25k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-04