Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ui Laravel Package

pajak/ui

A Laravel UI package from Pajak offering reusable interface components and helpers to speed up building consistent, styled web interfaces in PHP applications.

View on GitHub
Deep Wiki
Context7

Getting Started

Install and publish

composer require patrikjak/pajak-ui
php artisan vendor:publish --provider="PatrikJak\PajakUi\PajakUiServiceProvider"

Publishing typically drops a config/pajak-ui.php and a set of assets/views under resources/views/vendor/pajak-ui. Read the config file first — it's the map of what the package will and won't do for you (asset loading, component prefix, default theme options). Then list the shipped Blade components (ls vendor/patrikjak/pajak-ui/resources/views/components) before writing any markup; the component names are the real API surface, not the README.

Wire it into your layout once

Add the package's stylesheet/script entry to your Vite setup (or include the published CSS/JS directly) in resources/views/layouts/app.blade.php, and add the vendor path to tailwind.config.js:

content: [
  './resources/**/*.blade.php',
  './vendor/patrikjak/pajak-ui/resources/views/**/*.blade.php',
],

First use case

The highest-value first swap is a hand-rolled CRUD index page: replace the <table> loop and the create/edit <div class="modal"> with the package's table and modal components in a single Blade view. That exercises the table, form controls, modal, and flash-message pieces in one shot and tells you quickly whether the package's opinions match your app's.

Implementation Patterns

Blade-first, with a builder layer. Most usage is <x-pajak-ui::table :data="$users" :columns="$columns" />-style calls driven from the controller or a Livewire component. Keep column definitions in a small dedicated class or a private method (private function userColumns(): array) rather than inline in the view — you'll reuse them for exports and tests.

Form components + Laravel validation. Bind package inputs to old() and surface @error state so they behave like native inputs. If the components don't forward attributes automatically, pass :value="old('email', $user->email)" explicitly. Validate in a FormRequest as usual; don't let the UI layer become the validation layer.

Modal + form + redirect flow. The common pattern: a table row action opens a modal containing a form, the form posts to a normal controller action, the controller redirects back with ->with('status', ...), and the layout renders the package's toast/alert from the session flash. Avoid returning JSON from these actions for a Blade modal — full redirects keep it simple and avoid stacking AJAX handling on top of Alpine.

Layout-level integration. Load package assets exactly once, in the base layout. If you extend multiple layouts (app, guest, print), extract a @include('partials.pajak-assets'). Duplicate script includes are the most common cause of "my modal opens twice."

Version pinning. In composer.json use a caret on the minor: "patrikjak/pajak-ui": "^0.6". Pre-1.0 packages treat a minor bump as a potential breaking change, so lock the exact version in production and upgrade deliberately.

Gotchas and Tips

  • 0.x means no BC promise. The v0.6.0 notes are effectively empty ("Release of 0.6"), so the changelog tells you nothing. Before upgrading from 0.5, read the actual diff: https://github.com/patrikjak/pajak-ui/compare/v0.5.0...v0.6.0. Check resources/views, config/, and any composer.json peer constraints for renamed components, changed slot names, or bumped Tailwind/Alpine requirements.
  • Tailwind purging silently empties the UI. If components render unstyled, 95% of the time the vendor Blade path is missing from content in tailwind.config.js. Verify by checking whether a class like the package's button class appears in the compiled CSS.
  • Publishing overwrites local edits. vendor:publish --force will clobber your customized component views. Prefer overriding individual components into resources/views/vendor/pajak-ui/... (Laravel's view override resolution) and keep a note of which files you own so upgrades don't silently revert them.
  • Asset caching after upgrade. After a version bump run php artisan view:clear && php artisan config:clear, and rebuild assets. Stale compiled views referencing removed components produce confusing "unable to locate component" errors.
  • Script ordering with Alpine/Livewire. If modals or dropdowns fail to open, confirm the package script is loaded after Alpine (defer) and not double-included. With Livewire, add a stable wire:key to any component inside a loop so modals don't inherit stale state after a re-render.
  • Debugging component resolution. php artisan view:cache will fail loudly on any component name you got wrong — run it in CI rather than discovering the typo at runtime.
  • Extension points to rely on: the config file (defaults, prefixes), published views (markup overrides), and wrapper Blade components in your own resources/views/components that compose the package's pieces. Wrapping rather than editing means an upstream release is a composer bump, not a merge.
  • Watch the repo, not just the tags. With release notes this thin, follow the PR list (/pull/8 for 0.6) and any open issues about breaking changes before you adopt the version across a team.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle