Atlas redesign
A quiet redesign of the workspace home.
A contained group of related content and actions.
import { Card } from "@sagui/ui";Install the package and import the styles once. The installation guide covers the Tailwind setup.
$ npm install @sagui/uiimport { Avatar, Card } from "@sagui/ui";
export function ProjectCard() {
return (
<Card
title="Harbour redesign"
description="New booking flow and room pages."
media={
<img
src="https://images.unsplash.com/photo-1497366216548-37526070297c?w=640&h=320&q=80&auto=format&fit=crop"
alt="A bright, empty office corridor"
width={640}
height={320}
className="block h-40 w-full object-cover"
/>
}
avatar={<Avatar name="Maya Chen" src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=96&h=96&q=80&auto=format&fit=crop" size="sm" />}
meta="Maya Chen"
status="Updated 2 hours ago"
details={<p>Scope, milestones, and open questions.</p>}
/>
);
}Pass details and the whole card opens and grows into a larger view. Escape or the close control morphs it back to where it was.
A new status replaces the line: the old one lifts away while the new words rise in one after another.
A content card with optional media, byline, and action that can grow into a quick look dialog.
| Prop | Type | Default | Description |
|---|---|---|---|
title (required) |
string |
– | Card heading. Becomes the dialog trigger when details is set. |
description |
string |
– | Supporting line under the title. |
media |
ReactNode |
– | Image or visual at the top. Zooms slightly on hover. |
action |
ReactNode |
– | Trailing footer control, such as a button. |
avatar |
ReactNode |
– | Small leading visual in the footer, such as the owner's avatar. |
meta |
ReactNode |
– | Who the card belongs to, shown in the byline. |
status |
string |
– | Short status under the meta, such as "Updated 2 hours ago". Changes roll in word by word and are announced politely. |
details |
ReactNode |
– | Quick look content. When set, the card opens into a larger Radix dialog. |
open |
boolean |
– | Controlled quick look state. |
defaultOpen |
boolean |
false |
Initial quick look state when uncontrolled. |
onOpenChange |
(open: boolean) => void |
– | Called when the quick look opens or closes. |
children |
ReactNode |
– | Extra body content between the description and footer. |
className |
string |
– | Added to the root article. |
...props |
HTMLAttributes<HTMLElement> |
– | Forwarded to the root article. |
| Keys | Action |
|---|---|
| EnterorSpace | On the title, opens the quick look when details is set. |
| Escape | Closes the quick look and returns focus to the title. |
| Tab | Stays trapped inside the open quick look. |
A quiet redesign of the workspace home.
Moving invoices to the new provider.
Five steps to get a new teammate productive.
Draft for review.