nawasara/ui
Nawasara UI provides reusable Blade components, layouts, and shared Livewire concerns for the Nawasara superapp framework—buttons, tables, modals, filters, skeletons, dark mode, workspace navigation, form primitives, plus a WorkspaceManager and reliable browser toast helpers.
HasBrowserToast concern and Alpine-driven components (e.g., modals) leverage Livewire’s reactivity while avoiding session flash limitations in AJAX flows. This is critical for admin dashboards or real-time data-heavy interfaces.WorkspaceManager and modal-open:{id} events are tightly coupled to the Nawasara framework. While powerful for superapps, this creates vendor lock-in risk and may force custom abstractions for non-Nawasara use cases.<x-nawasara-ui::*> syntax integrates seamlessly with Laravel’s service provider auto-discovery, requiring only Tailwind configuration to scan vendor views. Low friction for teams already using Blade.HasBrowserToast concern is non-intrusive and can be adopted incrementally. However, deeper integration (e.g., event handling for modals) may require custom Livewire hooks or Nawasara-specific event listeners.layouts.app and layouts.guest provide opinionated structures (sidebar + topbar). Overriding these may need Blade @extends or @section hacks, increasing maintenance complexity.button and dropdown-menu-action include built-in permission checks, but these rely on Nawasara’s auth system. Integration with alternatives (e.g., Spatie’s Laravel-Permission) would require wrapper components.WorkspaceManager, modal events) introduce high migration risk if the app later decouples from the framework. Example: Replacing modal-open:{id} with a custom event system.button, table) become error-prone and time-consuming. Teams using Bootstrap or custom CSS would face significant refactoring.WorkspaceManager and workspace-aware components add unnecessary complexity.HasBrowserToast) may be overkill.modal-open:{id} with a generic Alpine/Livewire event for broader compatibility?blade-lucide-icons) could bloat build times or introduce flaky tests (e.g., Tailwind scans failing).button, table, modal) in a sandbox environment to validate Tailwind compatibility.form.input, form.select) and buttons to reduce styling drift.layouts.app) with selective overrides (e.g., customize topbar while keeping sidebar).HasBrowserToast) and workspace features (WorkspaceManager).<x-nawasara-ui::button>...</x-nawasara-ui::button>) to extend components without forking.modal-open:{id} with a generic event).illuminate/support and livewire/livewire versions align.content paths updated to scan vendor views:
content: [
'./resources/**/*.blade.php',
'./vendor/nawasara/*/resources/**/*.blade.php',
],
blade-lucide-icons. Replace with alternatives (e.g., Heroicons) via custom CSS or component overrides.| Phase | Task | Dependencies | Risk | Rollback Plan |
|---|---|---|---|---|
| 1 | Install & Configure Tailwind | Composer, Node.js | Low | Remove nawasara/ui from composer.json |
| 2 | Test Core Components | Blade, Tailwind | Medium | Revert to custom components |
| 3 | Replace Form Primitives | Tailwind classes | Low | Revert to old form HTML |
| 4 | Adopt Layouts | Custom CSS overrides | Medium | Restore old app.blade.php |
| 5 | Integrate Livewire Concerns | Livewire 3.x, event system | High | Remove concern from Livewire component |
| 6 | Implement Workspace/Permissions | Multi-tenancy setup | High | Disable workspace features via config |
table, modal) eliminate copy-paste drift across modules.nawasara/ui allow global style updates without per-component changes.HasBrowserToast reduces boilerplate for AJAX-friendly toasts, improving developer velocity.blade-lucide-icons) increase composer lock complexity and CI/CD build times.layouts.app) may require forking the package or **deepHow can I help you explore Laravel packages today?