Sections
Get Started
UI
Components
- Animated Beam
- Animated List
- Animated Logo
- Animated Theme Toggler
- Avatar Circles
- Bento Grid
- Big Name Text
- Border Beam
- Dock
- Feature Card
- Filter Dropdown
- Footer Link
- Hero Badge
- Hero Buttons
- Hyper Text
- Lens
- Magic Card
- Marquee
- Meteors
- Onboarding Form
- Pricing Card
- Scroll Text
- Section Header
- Site Header
- Status Card
- Status
- Tweet Card
Backlog
In progress
In review
Done
import { Status } from "@/registry/sase/status";
export function StatusDemo() {
return (
<div className="flex flex-wrap gap-2">
<Status variant="not-started" />
<Status variant="in-progress" />
<Status variant="in-review" />
<Status variant="done" />
</div>
);
}
Installation
pnpm dlx shadcn@latest add https://sase-ui.vercel.app/r/status.json
Usage
import { Status } from "@/components/ui/status";<Status variant="in-progress" />Examples
Custom Labels
To Do
Working
Reviewing
Completed
import { Status } from "@/registry/sase/status";
export function StatusCustomDemo() {
return (
<div className="flex flex-wrap gap-2">
<Status variant="not-started">To Do</Status>
<Status variant="in-progress">Working</Status>
<Status variant="in-review">Reviewing</Status>
<Status variant="done">Completed</Status>
</div>
);
}
Outlined
Backlog
In progress
In review
Done
import { Status } from "@/registry/sase/status";
export function StatusOutlinedDemo() {
return (
<div className="flex flex-wrap gap-2">
<Status variant="not-started" outlined />
<Status variant="in-progress" outlined />
<Status variant="in-review" outlined />
<Status variant="done" outlined />
</div>
);
}
Sizes
In progress
In progress
In progress
import { Status } from "@/registry/sase/status";
export function StatusSizeDemo() {
return (
<div className="flex flex-wrap items-center gap-4">
<Status variant="in-progress" /> {/* sm is the default size */}
<Status variant="in-progress" size="md" />
<Status variant="in-progress" size="lg" />
</div>
);
}
Border
Backlog
In progress
In review
Done
import { Status } from "@/registry/sase/status";
export function StatusBorderDemo() {
return (
<div className="flex flex-wrap gap-2">
<Status variant="not-started" appearance="border" size="sm" />
<Status variant="in-progress" appearance="border" size="sm" />
<Status variant="in-review" appearance="border" size="sm" />
<Status variant="done" appearance="border" size="sm" />
</div>
);
}
Ping Animation
Backlog
In progress
In review
Done
import { Status } from "@/registry/sase/status";
export function StatusPingDemo() {
return (
<div className="flex flex-wrap gap-2">
<Status variant="not-started" appearance="ping" />
<Status variant="in-progress" appearance="ping" />
<Status variant="in-review" appearance="ping" />
<Status variant="done" appearance="ping" />
</div>
);
}
Gradient
Backlog
In progress
In review
Done
import { Status } from "@/registry/sase/status";
export function StatusGradientDemo() {
return (
<div className="flex flex-wrap gap-2">
<Status variant="not-started" appearance="gradient" />
<Status variant="in-progress" appearance="gradient" />
<Status variant="in-review" appearance="gradient" />
<Status variant="done" appearance="gradient" />
</div>
);
}
Simple (No Background)
In progress
Done
In review
Backlog
import { Status } from "@/registry/sase/status";
export function StatusSimpleDemo() {
return (
<div className="space-y-4">
<div className="flex flex-wrap gap-4">
<Status variant="in-progress" className="bg-transparent px-0 py-0" />
<Status variant="done" className="bg-transparent px-0 py-0" />
</div>
<div className="flex flex-wrap gap-4">
<Status
variant="in-review"
outlined
className="bg-transparent px-0 py-0"
/>
<Status
variant="not-started"
outlined
className="bg-transparent px-0 py-0"
/>
</div>
</div>
);
}
Props
Status
| Prop | Type | Default | Description |
|---|---|---|---|
| variant | "not-started" | "in-progress" | "in-review" | "done" | "not-started" | The status variant |
| size | "sm" | "default" | "lg" | "default" | The size of the status |
| appearance | "soft" | "border" | "ping" | "gradient" | "soft" | The background style |
| showDot | boolean | true | Show/hide the status dot |
| outlined | boolean | false | Use outlined dot instead of filled |
| children | React.ReactNode | - | Custom label content |