定制 flux-clone/ui 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

flux-clone/ui

最新稳定版本:v1.0.6

Composer 安装命令:

composer require flux-clone/ui

包简介

A beautiful Blade UI component library for Laravel & Livewire - Flux UI alternative

README 文档

README

A beautiful Blade UI component library for Laravel & Livewire - A Flux UI alternative.

Installation

Install the package via Composer:

composer require flux-clone/ui

The package will auto-register its service provider.

Requirements

  • PHP 8.2+
  • Laravel 11+ or 12+
  • Livewire 3+
  • Tailwind CSS 4+
  • Alpine.js (included with Livewire)

Configuration

Tailwind CSS

Add the package's view path to your tailwind.config.js (or CSS for Tailwind 4):

/* For Tailwind 4 - add to your app.css */
@source "../vendor/flux-clone/ui/resources/views/**/*.blade.php";

Or for legacy Tailwind config:

export default {
  content: [
    // ... your existing paths
    "./vendor/flux-clone/ui/resources/views/**/*.blade.php",
  ],
};

Usage

All components use the flux-clone namespace:

<x-flux-clone::button variant="primary">Click me</x-flux-clone::button>

<x-flux-clone::input name="email" label="Email" type="email" />

<x-flux-clone::modal name="confirm">
    <x-flux-clone::heading>Confirm Action</x-flux-clone::heading>
    <x-flux-clone::text>Are you sure?</x-flux-clone::text>
    <x-flux-clone::modal.close>
        <x-flux-clone::button>Cancel</x-flux-clone::button>
    </x-flux-clone::modal.close>
</x-flux-clone::modal>

Available Components

Form Components

  • <x-flux-clone::button> - Buttons with variants (primary, danger, ghost, subtle, outline, filled)
  • <x-flux-clone::input> - Input fields with label, error handling, password visibility
  • <x-flux-clone::textarea> - Textarea with label and error handling
  • <x-flux-clone::select> - Select dropdown with custom styling
  • <x-flux-clone::checkbox> - Checkbox with label and description
  • <x-flux-clone::radio> - Radio button with icon support
  • <x-flux-clone::radio.group> - Radio group with segmented variant
  • <x-flux-clone::toggle> - Toggle switch
  • <x-flux-clone::field> - Field wrapper for form elements

Typography

  • <x-flux-clone::heading> - Heading with sizes (xs, sm, base, lg, xl, 2xl)
  • <x-flux-clone::subheading> - Subheading text
  • <x-flux-clone::text> - Body text

Layout

  • <x-flux-clone::card> - Card container
  • <x-flux-clone::separator> - Horizontal/vertical separator
  • <x-flux-clone::navbar> - Navigation bar
  • <x-flux-clone::navlist> - Navigation list
  • <x-flux-clone::navlist.item> - Navigation list item

Overlays

  • <x-flux-clone::modal> - Modal dialog with Alpine.js
  • <x-flux-clone::modal.trigger> - Modal trigger
  • <x-flux-clone::modal.close> - Modal close button
  • <x-flux-clone::dropdown> - Dropdown menu
  • <x-flux-clone::tooltip> - Tooltip with position options

Data Display

  • <x-flux-clone::table> - Table with striped, hoverable options
  • <x-flux-clone::table.head> - Table header
  • <x-flux-clone::table.body> - Table body
  • <x-flux-clone::table.row> - Table row
  • <x-flux-clone::table.cell> - Table cell with sortable support
  • <x-flux-clone::badge> - Badge with colors and variants
  • <x-flux-clone::avatar> - Avatar with image or initials

Feedback

  • <x-flux-clone::callout> - Callout/Alert with types (info, success, warning, danger)
  • <x-flux-clone::skeleton> - Loading skeleton

Other

  • <x-flux-clone::icon> - Icon component (supports Heroicons)
  • <x-flux-clone::link> - Styled link

Component Examples

Button Variants

<x-flux-clone::button variant="primary">Primary</x-flux-clone::button>
<x-flux-clone::button variant="danger">Danger</x-flux-clone::button>
<x-flux-clone::button variant="ghost">Ghost</x-flux-clone::button>
<x-flux-clone::button variant="subtle">Subtle</x-flux-clone::button>
<x-flux-clone::button variant="outline">Outline</x-flux-clone::button>

{{-- With icons --}}
<x-flux-clone::button icon="check" variant="primary">Save</x-flux-clone::button>

{{-- Sizes --}}
<x-flux-clone::button size="xs">Extra Small</x-flux-clone::button>
<x-flux-clone::button size="sm">Small</x-flux-clone::button>
<x-flux-clone::button size="lg">Large</x-flux-clone::button>

Input with Password Toggle

<x-flux-clone::input
    name="password"
    type="password"
    label="Password"
    viewable
/>

Table with Sorting

<x-flux-clone::table striped hoverable>
    <x-flux-clone::table.head>
        <x-flux-clone::table.row>
            <x-flux-clone::table.cell header sortable="name">Name</x-flux-clone::table.cell>
            <x-flux-clone::table.cell header sortable="email">Email</x-flux-clone::table.cell>
            <x-flux-clone::table.cell header>Actions</x-flux-clone::table.cell>
        </x-flux-clone::table.row>
    </x-flux-clone::table.head>
    <x-flux-clone::table.body>
        @foreach($users as $user)
            <x-flux-clone::table.row>
                <x-flux-clone::table.cell>{{ $user->name }}</x-flux-clone::table.cell>
                <x-flux-clone::table.cell>{{ $user->email }}</x-flux-clone::table.cell>
                <x-flux-clone::table.cell>
                    <x-flux-clone::button size="sm" variant="ghost">Edit</x-flux-clone::button>
                </x-flux-clone::table.cell>
            </x-flux-clone::table.row>
        @endforeach
    </x-flux-clone::table.body>
</x-flux-clone::table>

Modal with Livewire

{{-- Using wire:model --}}
<x-flux-clone::modal wire:model="showModal">
    <x-flux-clone::heading>Modal Title</x-flux-clone::heading>
    <x-flux-clone::text>Modal content here...</x-flux-clone::text>

    <div class="flex justify-end gap-2 mt-4">
        <x-flux-clone::button wire:click="$set('showModal', false)" variant="ghost">
            Cancel
        </x-flux-clone::button>
        <x-flux-clone::button wire:click="save" variant="primary">
            Save
        </x-flux-clone::button>
    </div>
</x-flux-clone::modal>

{{-- Or using named modals --}}
<x-flux-clone::modal.trigger name="confirm-delete">
    <x-flux-clone::button variant="danger">Delete</x-flux-clone::button>
</x-flux-clone::modal.trigger>

<x-flux-clone::modal name="confirm-delete">
    <x-flux-clone::heading>Confirm Delete</x-flux-clone::heading>
    <x-flux-clone::text>Are you sure you want to delete this item?</x-flux-clone::text>
</x-flux-clone::modal>

Customization

Publishing Views

To customize component views:

php artisan vendor:publish --tag=flux-clone-views

Views will be published to resources/views/vendor/flux-clone.

Using with Blade Icons

For full icon support, install Blade Icons:

composer require blade-ui-kit/blade-heroicons

Then use icons by name:

<x-flux-clone::icon name="check" />
<x-flux-clone::icon name="arrow-right" variant="solid" />

Dark Mode

All components support dark mode out of the box. They use Tailwind's dark: prefix, so ensure your app is configured for dark mode:

<!-- In your HTML or layout -->
<html class="dark"></html>

Or use JavaScript to toggle:

document.documentElement.classList.toggle("dark");

License

MIT License

统计信息

  • 总下载量: 24
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: Blade

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-21