Components
Loading preview...
A fluid button with primary, secondary, tertiary, and ghost variants. Supports sizes, leading/trailing icons, icon-only mode, and animated loading state.
@micka_design
npx shadcn@latest add https://21st.dev/r/micka_design/button"use client";
import { useState } from "react";
import { Button } from "@/components/ui/button";
export function ButtonLoadingDemo() {
const [loading, setLoading] = useState(false);
const handleClick = () => {
setLoading(true);
setTimeout(() => setLoading(false), 2500);
};
return (
<div className="flex items-center justify-center min-h-screen bg-background">
<div className="flex gap-3">
<Button loading={loading} onClick={handleClick}>
{loading ? "Saving..." : "Save changes"}
</Button>
<Button loading variant="secondary">Loading</Button>
<Button loading variant="tertiary">Loading</Button>
</div>
</div>
);
}
export default { ButtonLoadingDemo };