AI is everywhere, and chat interfaces are the new norm. We figured it was time Flux had a proper message input built for exactly this.
Meet Composer, a configurable message input with support for action buttons and rich text. Let's take a look.
Copy to clipboard
<flux:composer wire:model="prompt" placeholder="How can I help you today?"> <x-slot name="actionsLeading"> <flux:button size="sm" variant="subtle" icon="paper-clip" /> </x-slot> <x-slot name="actionsTrailing"> <flux:button type="submit" size="sm" variant="primary" icon="paper-airplane" /> </x-slot></flux:composer>
Two layouts
By default, action buttons sit below the input in their own row. Add the inline prop to place them alongside the input for a more compact look—great for single-line prompts.
And of course, we went to great lengths to make sure this component honors expected keyboard navigation, focus behavior, and proper aria-labels so that screen readers can use it just as well.
Introducing the Time Picker component—for when you need users to select specific times. Perfect for scheduling appointments, filtering by time ranges, or any scenario where precise time selection matters.
The component handles all the complexity: 12/24-hour formats, time intervals, unavailable slots, keyboard navigation, and proper localization.
Copy to clipboard
<flux:time-picker wire:model="appointmentTime" />
Input or button trigger
Choose between a button trigger that opens a time selection dropdown, or an input trigger that gives you a native time input with optional dropdown enhancement:
Like every component in Flux, we left no stone unturned:
Keyboard friendly: Full keyboard navigation with arrow keys, Enter to select, and Escape to close. Screen readers announce all state changes and available options.
Smart defaults: The picker opens to the currently selected time, or the current time if nothing is selected. You can override this with open-to if needed.
Seamless integration: Works with all standard field props like label, description, and badge for automatic field wrapping.
Flux tables now support sticky headers and sticky columns, making it easy to keep important information visible while users scroll through large datasets.
Let's take a look.
Sticky headers
Keep column headers visible during vertical scrolling by adding the sticky prop to your table.columns component:
The background color on the header row prevents content overlap as rows scroll underneath. The container:class prop lets you set a maximum height for your table, creating a scrollable area while keeping the headers locked in place.
Keep important columns visible during horizontal scrolling by adding the sticky prop to individual table.column and table.cell components. Combine it with sticky headers for a spreadsheet-like experience:
Apply sticky to both the column header and the corresponding cells in each row. Add background colors to prevent content overlap, and we'll automatically add a subtle shadow when scrolling to help users see that the column is overlaying content underneath.