{"id":31034560,"url":"https://github.com/hdaklue/actioncrumb","last_synced_at":"2025-09-17T06:03:03.814Z","repository":{"id":314659862,"uuid":"1053979609","full_name":"hdaklue/actioncrumb","owner":"hdaklue","description":"Enhance Your Laravel Navigation with intelligent breadcrumbs that do more than just show where you are. ActionCrumb transforms traditional breadcrumbs into powerful, interactive navigation components with contextual dropdown actions.","archived":false,"fork":false,"pushed_at":"2025-09-13T21:06:40.000Z","size":45,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-13T23:26:41.916Z","etag":null,"topics":["blade-template","breadcrumbs","laravel","laravel-package","navigation"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hdaklue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-10T07:42:47.000Z","updated_at":"2025-09-13T21:05:53.000Z","dependencies_parsed_at":"2025-09-13T23:27:03.660Z","dependency_job_id":"f01ebb5d-54fd-4d1b-a80b-58ff211a0896","html_url":"https://github.com/hdaklue/actioncrumb","commit_stats":null,"previous_names":["hdaklue/actioncrumb"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/hdaklue/actioncrumb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hdaklue%2Factioncrumb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hdaklue%2Factioncrumb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hdaklue%2Factioncrumb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hdaklue%2Factioncrumb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hdaklue","download_url":"https://codeload.github.com/hdaklue/actioncrumb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hdaklue%2Factioncrumb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275052213,"owners_count":25397101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blade-template","breadcrumbs","laravel","laravel-package","navigation"],"created_at":"2025-09-14T02:29:41.522Z","updated_at":"2025-09-16T04:16:50.856Z","avatar_url":"https://github.com/hdaklue.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ActionCrumb 🍞\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/hdaklue/actioncrumb.svg?style=flat-square)](https://packagist.org/packages/hdaklue/actioncrumb)\n[![GitHub Tests Action Status](https://img.shields.io/github/actions/workflow/status/hdaklue/actioncrumb/run-tests.yml?branch=main\u0026label=tests\u0026style=flat-square)](https://github.com/hdaklue/actioncrumb/actions?query=workflow%3Arun-tests+branch%3Amain)\n[![Total Downloads](https://img.shields.io/packagist/dt/hdaklue/actioncrumb.svg?style=flat-square)](https://packagist.org/packages/hdaklue/actioncrumb)\n\n**Enhance Your Laravel Navigation** with intelligent breadcrumbs that do more than just show where you are. ActionCrumb transforms traditional breadcrumbs into powerful, interactive navigation components with contextual dropdown actions.\n\n\u003e **The Problem**: Standard breadcrumbs are static and force users into complex navigation patterns. Admin panels need quick actions, but adding toolbar buttons everywhere creates UI bloat and poor mobile experiences.\n\n\u003e **The Solution**: ActionCrumb gives you beautiful, responsive breadcrumbs where each step can have contextual dropdown actions. Export users from the Users breadcrumb. Delete records from the Show page. Import data without leaving your current view.\n\n## Why ActionCrumb? 🚀\n\n**Transform This** ❌\n```\nDashboard \u003e Users \u003e Profile\n[Edit Button] [Delete Button] [Export Button] [Settings Button]\n```\n\n**Into This** ✅\n```\nDashboard \u003e Users ⌄ \u003e Profile ⌄\n              ↓       ↓\n         [Export]  [Edit]\n         [Import]  [Delete]  \n         [Settings] [Share]\n```\n\n### Key Differentiators\n\n- **🎯 Contextual Actions** - Actions belong to breadcrumb steps, not cluttered toolbars\n- **📱 Mobile-First Design** - Clean dropdowns instead of overwhelming button rows\n- **⚡ Zero JavaScript Bloat** - Uses Alpine.js components you already have\n- **🎨 Tailwind 4 Native** - Built for modern Tailwind with full dark mode support\n- **🔧 Config-Free** - Intelligent defaults with enum-based configuration (no config files!)\n- **🎭 Theme Flexibility** - 3 built-in styles: Simple, Rounded (pills), Square (buttons)\n\n## Installation 📦\n\n**Requirements**\n- PHP 8.2+\n- Laravel 11.0+ / 12.0+\n- Livewire 3.0+\n- Tailwind CSS 4.0+\n- Alpine.js 3.0+\n\n```bash\ncomposer require hdaklue/actioncrumb\n```\n\nThe package automatically registers via Laravel's service provider discovery. No config file publishing needed!\n\n## Quick Start ⚡\n\n**1. Add the Trait to Your Livewire Component**\n\n```php\n\u003c?php\n\nnamespace App\\Livewire\\Admin;\n\nuse Livewire\\Component;\nuse Hdaklue\\Actioncrumb\\Traits\\HasActionCrumbs;\nuse Hdaklue\\Actioncrumb\\{Step, Action};\n\nclass UsersManagement extends Component\n{\n    use HasActionCrumbs;\n    \n    protected function actioncrumbs(): array\n    {\n        return [\n            Step::make('Dashboard')\n                -\u003eicon('heroicon-o-home')\n                -\u003eurl('/dashboard'),\n                \n            Step::make('Users')\n                -\u003eicon('heroicon-o-users')\n                -\u003ecurrent()\n                -\u003eactions([\n                    Action::make('Export Users')\n                        -\u003eicon('heroicon-o-arrow-down-tray')\n                        -\u003eexecute(fn() =\u003e $this-\u003eexportUsers()),\n                        \n                    Action::make('Import Users')\n                        -\u003eicon('heroicon-o-arrow-up-tray')\n                        -\u003eroute('users.import'),\n                        \n                    Action::make('User Settings')\n                        -\u003eicon('heroicon-o-cog-6-tooth')\n                        -\u003eurl('/admin/users/settings')\n                ])\n        ];\n    }\n    \n    public function exportUsers()\n    {\n        // Your export logic here\n        $this-\u003edispatch('notify', message: 'Users exported successfully!');\n    }\n    \n    // ... rest of your component\n}\n```\n\n**2. Render in Your Blade Template**\n\n```blade\n\u003cdiv\u003e\n    \u003c!-- Render your actioncrumbs --\u003e\n    {!! $this-\u003erenderActioncrumbs() !!}\n    \n    \u003c!-- Your component content --\u003e\n    \u003cdiv class=\"mt-6\"\u003e\n        {{-- Your users table, etc --}}\n    \u003c/div\u003e\n\u003c/div\u003e\n```\n\n**That's it!** Your breadcrumbs are now interactive with dropdown actions.\n\n## Configuration 🎨\n\nConfigure ActionCrumb globally in your `AppServiceProvider` using our fluent configuration API:\n\n```php\n\u003c?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\nuse Hdaklue\\Actioncrumb\\Config\\ActioncrumbConfig;\nuse Hdaklue\\Actioncrumb\\Enums\\{ThemeStyle, SeparatorType, TailwindColor, Direction};\n\nclass AppServiceProvider extends ServiceProvider\n{\n    public function boot()\n    {\n        ActioncrumbConfig::make()\n            -\u003ethemeStyle(ThemeStyle::Rounded)        // Simple, Rounded, Square\n            -\u003eseparatorType(SeparatorType::Chevron)  // Chevron, Line\n            -\u003eprimaryColor(TailwindColor::Blue)      // Any Tailwind color\n            -\u003esecondaryColor(TailwindColor::Gray)    // Secondary accents\n            -\u003edirection(Direction::LTR)              // LTR, RTL\n            -\u003edarkMode(true)                         // Enable dark mode support\n            -\u003ebind();\n    }\n}\n```\n\n### Theme Styles 🎭\n\n**Simple** (Clean, minimal)\n```\nDashboard \u003e Users ⌄ \u003e Profile\n```\n\n**Rounded** (Modern pills)\n```\n(Dashboard) \u003e (Users ⌄) \u003e (Profile)\n```\n\n**Square** (Button-style with borders)\n```\n[Dashboard] \u003e [Users ⌄] \u003e [Profile]\n```\n\n### Available Colors 🌈\n\nActionCrumb supports all Tailwind colors: `Slate`, `Gray`, `Zinc`, `Neutral`, `Stone`, `Red`, `Orange`, `Amber`, `Yellow`, `Lime`, `Green`, `Emerald`, `Teal`, `Cyan`, `Sky`, `Blue`, `Indigo`, `Violet`, `Purple`, `Fuchsia`, `Pink`, `Rose`\n\n### RTL Support 🌍\n\nFull right-to-left layout support for international applications:\n\n```php\nActioncrumbConfig::make()\n    -\u003edirection(Direction::RTL)\n    -\u003ebind();\n```\n\n## Advanced Usage 🔧\n\n### Dynamic Actions Based on Permissions\n\n```php\nprotected function actioncrumbs(): array\n{\n    $userActions = collect([\n        Action::make('View Profile')-\u003eroute('users.show', $this-\u003euser-\u003eid)\n    ]);\n    \n    if (auth()-\u003euser()-\u003ecan('update', $this-\u003euser)) {\n        $userActions-\u003epush(\n            Action::make('Edit User')-\u003eroute('users.edit', $this-\u003euser-\u003eid)\n        );\n    }\n    \n    if (auth()-\u003euser()-\u003ecan('delete', $this-\u003euser)) {\n        $userActions-\u003epush(\n            Action::make('Delete User')\n                -\u003eicon('heroicon-o-trash')\n                -\u003eexecute(fn() =\u003e $this-\u003econfirmDelete())\n        );\n    }\n    \n    return [\n        Step::make('Dashboard')-\u003eurl('/dashboard'),\n        Step::make('Users')-\u003eroute('users.index')-\u003eactions($userActions-\u003etoArray()),\n        Step::make($this-\u003euser-\u003ename)-\u003ecurrent()\n    ];\n}\n```\n\n### Conditional Steps\n\n```php\nprotected function actioncrumbs(): array\n{\n    $steps = [\n        Step::make('Dashboard')-\u003eurl('/dashboard')\n    ];\n    \n    if ($this-\u003euser-\u003eisAdmin()) {\n        $steps[] = Step::make('Admin Panel')-\u003eurl('/admin');\n    }\n    \n    $steps[] = Step::make('Profile')-\u003ecurrent();\n    \n    return $steps;\n}\n```\n\n### Complex Action Patterns\n\n```php\nAction::make('Bulk Operations')\n    -\u003eexecute(function() {\n        return $this-\u003edispatch('open-modal', modal: 'bulk-operations');\n    }),\n\nAction::make('Export')\n    -\u003eroute('users.export', [\n        'format' =\u003e 'xlsx',\n        'filters' =\u003e $this-\u003efilters\n    ]),\n\nAction::make('Advanced Search')\n    -\u003eurl('/users/search?' . http_build_query($this-\u003esearchParams))\n```\n\n## API Reference 📚\n\n### Step Builder Methods\n\n```php\nStep::make('Label')\n    -\u003eicon('heroicon-o-home')                   // Heroicon for the step\n    -\u003eurl('/path')                              // Direct URL\n    -\u003eroute('route.name', ['param' =\u003e 'value']) // Named route with parameters\n    -\u003eactions([Action::make('...')])            // Array of dropdown actions\n    -\u003ecurrent(true)                             // Mark as current/active step\n```\n\n### Action Builder Methods\n\n```php\nAction::make('Label')\n    -\u003eicon('heroicon-o-download')               // Heroicon for the action\n    -\u003eurl('/path')                              // Navigate to URL\n    -\u003eroute('route.name', ['param' =\u003e 'value']) // Navigate to named route\n    -\u003eexecute(fn() =\u003e $this-\u003edoSomething())     // Execute closure in component\n    -\u003eseparator(true)                           // Add visual separator above\n```\n\n### Component Integration\n\n```php\nuse HasActionCrumbs;\n\n// Required: Define your breadcrumbs\nprotected function actioncrumbs(): array { /* ... */ }\n\n// Optional: Handle action events\nprotected function getListeners(): array\n{\n    return array_merge(parent::getListeners() ?? [], [\n        'actioncrumb:action-executed' =\u003e 'handleActionResult'\n    ]);\n}\n\npublic function handleActionResult($event)\n{\n    // Handle the result of executed actions\n    $this-\u003edispatch('notify', message: \"Action '{$event['action']}' completed!\");\n}\n```\n\n## Real-World Examples 🌟\n\n### E-commerce Admin Panel\n\n```php\nprotected function actioncrumbs(): array\n{\n    return [\n        Step::make('Dashboard')\n            -\u003eicon('heroicon-o-home')\n            -\u003eurl('/admin'),\n            \n        Step::make('Products')\n            -\u003eicon('heroicon-o-cube')\n            -\u003eroute('admin.products.index')\n            -\u003eactions([\n                Action::make('Import Products')\n                    -\u003eicon('heroicon-o-arrow-up-tray')\n                    -\u003eroute('admin.products.import'),\n                Action::make('Export Catalog')\n                    -\u003eicon('heroicon-o-arrow-down-tray')\n                    -\u003eexecute(fn() =\u003e $this-\u003eexportCatalog()),\n                Action::make('Bulk Edit Prices')\n                    -\u003eicon('heroicon-o-currency-dollar')\n                    -\u003eexecute(fn() =\u003e $this-\u003eopenBulkPriceModal())\n            ]),\n            \n        Step::make($this-\u003eproduct-\u003ename)\n            -\u003ecurrent()\n            -\u003eactions([\n                Action::make('Duplicate Product')\n                    -\u003eicon('heroicon-o-document-duplicate')\n                    -\u003eexecute(fn() =\u003e $this-\u003eduplicateProduct()),\n                Action::make('View on Store')\n                    -\u003eicon('heroicon-o-eye')\n                    -\u003eurl($this-\u003eproduct-\u003epublic_url),\n                Action::make('Delete Product')\n                    -\u003eicon('heroicon-o-trash')\n                    -\u003eexecute(fn() =\u003e $this-\u003econfirmDelete())\n            ])\n    ];\n}\n```\n\n### CRM User Management\n\n```php\nprotected function actioncrumbs(): array\n{\n    return [\n        Step::make('CRM')\n            -\u003eicon('heroicon-o-building-office-2')\n            -\u003eurl('/crm'),\n            \n        Step::make('Contacts')\n            -\u003eicon('heroicon-o-users')\n            -\u003eroute('crm.contacts.index')\n            -\u003eactions([\n                Action::make('Import from CSV')\n                    -\u003eicon('heroicon-o-arrow-up-tray')\n                    -\u003eroute('crm.contacts.import'),\n                Action::make('Export All')\n                    -\u003eicon('heroicon-o-arrow-down-tray')\n                    -\u003eexecute(fn() =\u003e $this-\u003eexportContacts('all')),\n                Action::make('Email Campaign')\n                    -\u003eicon('heroicon-o-envelope')\n                    -\u003eroute('crm.campaigns.create')\n            ]),\n            \n        Step::make($this-\u003econtact-\u003efull_name)\n            -\u003ecurrent()\n            -\u003eactions([\n                Action::make('Send Email')\n                    -\u003eicon('heroicon-o-envelope')\n                    -\u003eexecute(fn() =\u003e $this-\u003ecomposeEmail()),\n                Action::make('Schedule Call')\n                    -\u003eicon('heroicon-o-phone')\n                    -\u003eexecute(fn() =\u003e $this-\u003escheduleCall()),\n                Action::make('Add to List')\n                    -\u003eicon('heroicon-o-plus')\n                    -\u003eexecute(fn() =\u003e $this-\u003eshowListModal())\n            ])\n    ];\n}\n```\n\n### Content Management\n\n```php\nprotected function actioncrumbs(): array\n{\n    return [\n        Step::make('Content')\n            -\u003eicon('heroicon-o-document-text')\n            -\u003eurl('/admin/content'),\n            \n        Step::make('Blog Posts')\n            -\u003eicon('heroicon-o-newspaper')\n            -\u003eroute('admin.posts.index')\n            -\u003eactions([\n                Action::make('New Post')\n                    -\u003eicon('heroicon-o-plus')\n                    -\u003eroute('admin.posts.create'),\n                Action::make('Categories')\n                    -\u003eicon('heroicon-o-tag')\n                    -\u003eroute('admin.categories.index'),\n                Action::make('Publish Queue')\n                    -\u003eicon('heroicon-o-clock')\n                    -\u003eroute('admin.posts.scheduled')\n            ]),\n            \n        Step::make($this-\u003epost-\u003etitle)\n            -\u003ecurrent()\n            -\u003eactions([\n                Action::make('Preview')\n                    -\u003eicon('heroicon-o-eye')\n                    -\u003eurl($this-\u003epost-\u003epreview_url),\n                Action::make('SEO Analysis')\n                    -\u003eicon('heroicon-o-magnifying-glass')\n                    -\u003eexecute(fn() =\u003e $this-\u003erunSeoAnalysis()),\n                Action::make('Social Share')\n                    -\u003eicon('heroicon-o-share')\n                    -\u003eexecute(fn() =\u003e $this-\u003eopenShareModal())\n            ])\n    ];\n}\n```\n\n## Troubleshooting 🔧\n\n### Common Issues\n\n**Q: Actions not executing in dropdown**\n```php\n// ❌ Wrong: Missing event listener\nclass MyComponent extends Component \n{\n    use HasActionCrumbs;\n    // Missing getListeners() method\n}\n\n// ✅ Correct: Proper trait usage\nclass MyComponent extends Component \n{\n    use HasActionCrumbs; // This automatically adds the required listeners\n}\n```\n\n**Q: Icons not displaying**\n```bash\n# Make sure Heroicons are installed\ncomposer require blade-ui-kit/blade-heroicons\n\n# Publish the icons\nphp artisan vendor:publish --tag=blade-heroicons\n```\n\n**Q: Dropdowns not working**\n```blade\n{{-- ❌ Missing Alpine.js --}}\n\u003cdiv\u003e\n    {!! $this-\u003erenderActioncrumbs() !!}\n\u003c/div\u003e\n\n{{-- ✅ Alpine.js included --}}\n\u003cdiv x-data\u003e\n    {!! $this-\u003erenderActioncrumbs() !!}\n\u003c/div\u003e\n\n{{-- Or include Alpine.js globally --}}\n\u003cscript defer src=\"https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js\"\u003e\u003c/script\u003e\n```\n\n**Q: Styling not applied**\n```bash\n# Make sure your Tailwind build includes ActionCrumb classes\n# Add to your tailwind.config.js:\nmodule.exports = {\n  content: [\n    './vendor/hdaklue/actioncrumb/resources/**/*.blade.php',\n    // ... your other paths\n  ],\n}\n\n# Then rebuild\nnpm run build\n```\n\n### Performance Tips\n\n**Optimize for Large Menus**\n```php\n// Cache expensive operations\nprotected function actioncrumbs(): array\n{\n    return once(function() {\n        return [\n            // Your breadcrumbs...\n        ];\n    });\n}\n\n// Or use caching for user permissions\nprotected function actioncrumbs(): array\n{\n    $userPermissions = Cache::remember(\n        \"user.{$this-\u003euser-\u003eid}.permissions\", \n        60, \n        fn() =\u003e $this-\u003euser-\u003egetAllPermissions()\n    );\n    \n    // Build actions based on cached permissions...\n}\n```\n\n## Customization 🎨\n\n### Publishing Views\n\nPublish and customize the Blade components:\n\n```bash\nphp artisan vendor:publish --tag=actioncrumb-views\n```\n\nThis publishes views to `resources/views/vendor/actioncrumb/`:\n- `components/actioncrumb.blade.php` - Main component\n- `components/step.blade.php` - Individual step\n- `components/action.blade.php` - Dropdown actions\n\n### Custom CSS\n\nOverride default styling by targeting ActionCrumb classes:\n\n```css\n/* Custom dropdown styling */\n.actioncrumb-dropdown {\n    @apply shadow-xl border-2 border-purple-200;\n}\n\n.actioncrumb-dropdown-item {\n    @apply px-6 py-3 text-purple-700 hover:bg-purple-50;\n}\n\n/* Custom step styling */\n.actioncrumb-step.current {\n    @apply bg-gradient-to-r from-purple-500 to-pink-500 text-white;\n}\n```\n\n## Contributing 🤝\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/hdaklue/actioncrumb.git\n\n# Install dependencies\ncomposer install\nnpm install\n\n# Run tests\ncomposer test\n\n# Run static analysis\ncomposer analyse\n```\n\n## Security 🔒\n\nIf you discover any security vulnerabilities, please email [hassan@daklue.com](mailto:hassan@daklue.com) instead of using the issue tracker.\n\n## Credits 🙏\n\nActionCrumb is built on the shoulders of giants:\n\n- [Laravel](https://laravel.com) - The PHP framework for web artisans\n- [Livewire](https://laravel-livewire.com) - Full-stack framework for Laravel\n- [Alpine.js](https://alpinejs.dev) - Rugged, minimal framework\n- [Tailwind CSS](https://tailwindcss.com) - Utility-first CSS framework\n- [Heroicons](https://heroicons.com) - Beautiful hand-crafted SVG icons\n\nSpecial thanks to the Laravel community for inspiration and feedback.\n\n## License 📄\n\nActionCrumb is open-source software licensed under the [MIT license](LICENSE.md).\n\n---\n\n**Built with ❤️ by [Hassan Ibrahim](https://github.com/hdaklue)**\n\n---\n\n### Why Choose ActionCrumb? \n\n**For Laravel Teams Building Admin Panels:**\n- ✅ **30% Less UI Code** - Replace button toolbars with contextual actions\n- ✅ **Better Mobile UX** - Responsive dropdowns vs. cramped button rows  \n- ✅ **Consistent Navigation** - Unified breadcrumb + action pattern across your app\n- ✅ **Developer Experience** - Fluent API that feels like native Laravel\n\n**For Agencies \u0026 Freelancers:**\n- ✅ **Faster Client Delivery** - Pre-built interactive navigation components\n- ✅ **Professional Polish** - Beautiful, modern breadcrumbs that impress clients\n- ✅ **Easy Customization** - Match any brand with theme system\n- ✅ **Maintainable Code** - Clean separation of navigation logic\n\nReady to transform your Laravel navigation? **[Get started in under 2 minutes](#quick-start-)**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdaklue%2Factioncrumb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhdaklue%2Factioncrumb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdaklue%2Factioncrumb/lists"}