A leading icon slides out as an arrow opens in to take its place, trading without changing the button's width.
npx shadcn@latest add @microkit/icon-swap-button
icon-swap-button