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

Laravel Nova Ui Fix Laravel Package

boitebeet/laravel-nova-ui-fix

boitebeet/laravel-nova-ui-fix is a lightweight Laravel Nova package that applies targeted UI fixes and styling polish to the Nova admin panel, helping correct common layout and visual inconsistencies without modifying Nova's core files or requiring manual CSS patches for a cleaner admin experience.

View on GitHub
Deep Wiki
Context7

Getting Started

This package is a narrow compatibility shim: it re-supplies UI button components that were dropped from Laravel Nova's bundled component set. Treat it as a stopgap, not infrastructure — the whole value is measured in minutes saved per resource tool, not in features.

Minimal setup:

  1. Check the repo before requiring it. It is not on Packagist and has no releases. Open the Bitbucket repo and read composer.json for the illuminate/support / laravel/nova constraints, then look at the service provider to see whether it registers Blade views, Vue components, or both.
  2. Add it as a VCS dependency in your app's composer.json:
"repositories": [
    { "type": "vcs", "url": "[email protected]:boitebeet/laravel-nova-ui-fix.git" }
],
"require": {
    "boitebeet/laravel-nova-ui-fix": "dev-master"
}
  1. composer update boitebeet/laravel-nova-ui-fix
  2. If the provider exposes assets, run php artisan vendor:publish --provider="Boitebeet\NovaUiFix\..." and php artisan nova:publish. Confirm whether the fix ships prebuilt JS/CSS or expects an npm run build in the package directory — small Bitbucket packages frequently ship source only.
  3. Where to look first: the README (often stale), then the package's resources/js/components or resources/views. That directory listing is the API surface. Whatever filenames you see there are the component names you can use.

First use case: you have a custom card or tool whose buttons render unstyled or throw "Unknown custom element" after upgrading Nova. Drop the package in, replace the broken markup with the package's component, and confirm the button visually matches the surrounding Nova chrome.

Implementation Patterns

Blade usage in custom tools and cards. If the package registers Blade components, the day-to-day pattern is substitution, not abstraction:

{{-- before: broken/unstyled in the current Nova version --}}
<button class="btn btn-default" @click="save">{{ __('Save') }}</button>

{{-- after --}}
<x-nova-ui-fix::button variant="primary" @click="save">
    {{ __('Save') }}
</x-nova-ui-fix::button>

Verify the actual namespace prefix from the provider's loadViewsFrom / Blade::component calls — do not assume.

Vue usage inside custom tools. If it registers Vue components, you get them globally only if the package's script is loaded through Nova::script() in the provider. Register explicitly in your tool's entry point when in doubt:

// resources/js/tool.js
import Button from '.../vendor/boitebeet/laravel-nova-ui-fix/resources/js/components/Button'

Nova.booting((app) => {
  app.component('UiFixButton', Button)
})

Wrap, don't scatter. If you end up using these buttons in more than three places, create your own thin wrapper (<x-app-button>) that delegates to the package. When the package is abandoned — likely, given zero dependents — you change one file instead of grepping the codebase.

Keep the fix at the boundary. Use these components only in custom tools, cards, and fields you own. Never patch Nova's own published views to swap in these buttons; you will lose the change on the next nova:publish and you will be unable to tell whether a rendering bug is yours, Nova's, or the package's.

Version-pin aggressively. With no tags, dev-master means your build is non-reproducible. Commit a composer.lock and, better, pin to a commit hash:

"boitebeet/laravel-nova-ui-fix": "dev-master#<sha>"

Gotchas and Tips

  • Private Bitbucket repo = auth friction in CI. Composer needs an app password or SSH key on every machine and in every pipeline. Set COMPOSER_AUTH with a Bitbucket OAuth token in CI rather than relying on a developer's local credentials.
  • No Packagist entry and no tags. There is no composer show metadata, no release notes, no security advisory feed. You are responsible for auditing the code yourself; read the provider and every JS file once, end to end. It is small enough that this takes ten minutes.
  • Nova version drift is the central risk. The buttons were removed for a reason — Nova's design system changed. A shim that restores the old markup will look increasingly out of place across Nova majors and may break outright when internal CSS classes are renamed. Pin your Nova version in the same PR that introduces this package.
  • Assets may not be built. If the repo ships .vue sources without a compiled bundle, the provider's Nova::script() will point at a nonexistent file and you will get a silent 404 in the network tab with an unstyled button. Check public/ in the package; if empty, run its build step and commit the output, or vendor the compiled file into your own asset pipeline.
  • Debugging checklist, in order: (1) is the provider auto-discovered / registered in config/app.php? (2) did nova:publish copy the assets? (3) does the browser network tab show the package script returning 200? (4) does Vue DevTools show the component registered? (5) is the CSS specificity losing to Nova's own rules — inspect computed styles, not source.
  • Cache busting bites. After any package update run php artisan nova:publish, php artisan view:clear, and hard-reload. Nova caches aggressively; a "still broken" button is usually a stale asset.
  • Extension points are thin. Expect at most a publishable views or config tag. If you need variants the package doesn't ship, override the Blade view by publishing it into resources/views/vendor/... rather than editing the package in vendor/.
  • Have an exit plan. This is a single-purpose, zero-dependent package from a private repo. Budget a half-day to replace it with either (a) your own copy of the component, or (b) direct use of Nova's current design tokens. The longer it sits in composer.json, the more likely it breaks during an unrelated Nova upgrade at an inconvenient time.
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.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log