Weave Code
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

Wirekit Laravel Package

pushery/wirekit

WireKit is a free, open-source UI component library for Laravel Livewire. Build dashboards and marketing pages with Tailwind CSS v4 and Alpine.js using clean, themeable, accessible components with dark mode support and no utility-class soup.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation:
    composer require pushery/wirekit
    
  2. Add to Blade Layout:
    <head>
        @wirekitStyles
        @vite(['resources/css/app.css', 'resources/js/app.js'])
    </head>
    <body>
        {{ $slot }}
        @wirekitScripts
    </body>
    
  3. Import Blade Components in resources/css/app.css:
    @source '../../vendor/pushery/wirekit/resources/views/**/*.blade.php';
    
  4. Verify Installation:
    php artisan wirekit:verify
    

First Use Case

Replace a basic Livewire form with WireKit components:

<x-wirekit::form wire:submit="save">
    <x-wirekit::field label="Email" name="email">
        <x-wirekit::input type="email" wire:model="email" />
    </x-wirekit::field>
    <x-wirekit::button type="submit" intent="primary">Save</x-wirekit::button>
</x-wirekit::form>

Implementation Patterns

Component Organization

  1. Categorical Usage:

    • Forms: <x-wirekit::input>, <x-wirekit::select>, <x-wirekit::button>
    • Layout: <x-wirekit::container>, <x-wirekit::grid>, <x-wirekit::section>
    • Overlays: <x-wirekit::modal>, <x-wirekit::dropdown>, <x-wirekit::alert-dialog>
    • Data Display: <x-wirekit::table>, <x-wirekit::card>, <x-wirekit::stat>
  2. Slot-Based Composition:

    <x-wirekit::card>
        <x-slot:header>
            <x-wirekit::heading>Title</x-wirekit::heading>
        </x-slot:header>
        <x-slot:body>
            <x-wirekit::text>Content</x-wirekit::text>
        </x-slot:body>
    </x-wirekit::card>
    
  3. Livewire Integration:

    • Use wire:model on form inputs:
      <x-wirekit::input wire:model="email" />
      
    • For complex components like <x-wirekit::range-slider>, declare array properties:
      public array $priceRange = ['min' => 20, 'max' => 80];
      
      <x-wirekit::range-slider wire:model="priceRange" />
      
  4. Theming: Override CSS variables in app.css:

    @layer base {
        :root {
            --color-wk-accent: var(--color-blue-600);
        }
    }
    
  5. CLI Workflows:

    • Scaffold a Livewire Page:
      php artisan wirekit:make page:dashboard
      
    • Generate a Component:
      php artisan wirekit:component my-button --base=button
      
    • Export Component Schema (for AI tooling):
      php artisan wirekit:export-json
      

Gotchas and Tips

Common Pitfalls

  1. Orphaned Overlay Triggers:

    • Issue: Placing <x-wirekit::modal.trigger> outside <x-wirekit::modal> causes silent failures.
    • Fix: Always nest triggers inside their parent overlay:
      <x-wirekit::modal>
          <x-slot:trigger>
              <x-wirekit::button>Open</x-wirekit::button>
          </x-slot:trigger>
      </x-wirekit::modal>
      
  2. Livewire Model Binding:

    • Issue: <x-wirekit::range-slider> requires array properties for wire:model (e.g., $priceRange = ['min' => X, 'max' => Y]).
    • Fix: Declare the property as an array in your Livewire class.
  3. Dark Mode:

    • Issue: Manually applying dark: classes to WireKit components breaks auto-switching.
    • Fix: Rely on parent .dark class; avoid dark: prefixes.
  4. Icon Usage:

    • Issue: Using class="h-N w-N" on <x-wirekit::icon> overrides the size prop.
    • Fix: Use size="sm|md|lg|xl" props instead.
  5. Chart Re-rendering:

    • Issue: <x-wirekit::chart> re-creates instances on every data change, causing flickering.
    • Fix: Use $wire->set() for updates and debounce triggers:
      $this->dispatch('chart-update', data: $newData)->unless($this->chartData === $newData);
      

Debugging Tips

  1. Verify Installation:

    php artisan wirekit:verify
    
    • Checks for missing @wirekitStyles/@wirekitScripts and Blade source paths.
  2. Inspect Components:

    php artisan wirekit:show button
    
    • Lists props, slots, and docs URL for any component.
  3. Component List:

    php artisan wirekit:list
    
    • Browse all available components.
  4. Schema Export:

    php artisan wirekit:export-json
    
    • Generate machine-readable manifests for AI tooling.

Extension Points

  1. Custom Components: Fork existing components:

    php artisan wirekit:component my-custom-button --base=button
    
    • Modify the generated file in resources/views/vendor/wirekit/.
  2. Theming Presets: Apply pre-built themes:

    php artisan wirekit:theme cupertino
    
  3. Icon Presets: Publish additional icon sets:

    php artisan wirekit:publish-icons lucide --force
    
  4. Liquid Glass Extension: Enable experimental glassmorphism effects:

    php artisan wirekit:glass install
    
  5. Recipes: Scaffold complex layouts:

    php artisan wirekit:make recipe:marketing-landing-page
    
    • Generates a Livewire class + Blade view from documented patterns.
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.
ilhamsyabani/laravel-volt-starter
thethunderturner/filament-latex
ghostcompiler/laravel-querybuilder
webrek/laravel-telescope-mongodb
anousss007/blatui
zatona-eg/zatona-eg-api
cocosmos/filament-sticky-save-bar
patrickbussmann/oauth2-apple
3brs/enterprise-security-bundle
anousss007/vigilance
supportpal/eloquent-model
ardenexal/fhir-models
laravel-at/laravel-image-sanitize
romalytar/yammi-audit-log-laravel
ardenexal/fhir-validation
arshaviras/weather-widget
laravel-chronicle/core
sunchayn/nimbus
daikazu/eloquent-salesforce-objects
unseen-codes/chat