In this episode, we focus on setting up and styling the individual columns on our Kanban-like board. We kick things off by extracting our existing column markup into its own Livewire component, which tidies up our main board and preps us for more focused work. Once it's isolated, we start styling the columns: white background, fixed width, no shrinking, nice shadow, rounded corners—basically making each column look clean and consistent.
Next, we tackle the layout issues relating to column height and flex alignment, making sure the columns don't awkwardly take up the full page height and stay nicely positioned at the top. With that sorted, we move on to the core content of each column: the title, the card section, and a spot for a create-card form or button at the bottom.
We then focus on making the title interactive. By default, it's just text, but when you click on it, it swaps to a text input for editing—without everything jumping around due to size changes. We walk through the necessary Alpine.js state logic and some CSS trickery (with negative margins and the calc()
function) to get the input perfectly aligned with the title. There's also a dropdown menu for column options, leveraging Laravel Breeze's existing component and adding a nice ellipsis icon from Heroicons.
Finally, we make sure UX feels right: when you click outside the input, it exits editing mode, and hitting enter on the input will (eventually) save it via Livewire. All in all, you end up with a neat, editable column header with a handy dropdown menu, all sitting comfortably in a styled column as part of your overall board.