Components
Stateful Button
Button with a built-in async loading state — disables, sets aria-busy, prepends a spinner, and optionally swaps its label for loadingText.
Installation
npx shadcn@latest add https://ui.saasflare.io/r/stateful-button.jsonpnpm add @saasflare/uiDemo
Loading…
"use client"import { useState } from "react"import { StatefulButton } from "@saasflare/ui"/** StatefulButton — `loading` flips on click for ~1.5s and swaps the label via `loadingText`. */export function Demo() { const [saving, setSaving] = useState(false) const [deleting, setDeleting] = useState(false) function runFor(setter: (v: boolean) => void) { setter(true) setTimeout(() => setter(false), 1500) } return ( <div className="flex flex-wrap items-center gap-3"> <StatefulButton loading={saving} loadingText="Saving…" onClick={() => runFor(setSaving)} > Save changes </StatefulButton> <StatefulButton variant="outline" intent="danger" loading={deleting} loadingText="Deleting…" onClick={() => runFor(setDeleting)} > Delete account </StatefulButton> </div> )}API Reference
Prop
Type
Social Button
Compact branded sign-in button for five core providers (Google, Apple, GitHub, Microsoft, Twitter) with official logos and brand colors. For the full 16-provider OAuth set, see Social Auth Button.
Calendar
Month-grid date calendar (react-day-picker) supporting single, multiple, or range selection.