2 variants
Cards
Compact standalone cards with clear information hierarchy, purposeful actions, and polished motion.
Balance card
A stacked, two layer balance card with overlapping linked account marks, a large animated total, and a footer holding two actions.
import { BalanceCard } from "@/components/registry/balance-card";
export function AccountSummary() {
return (
<BalanceCard
tone="violet"
balance={12480}
changeToday={62.1}
onMove={() => router.push("/transfer")}
onSend={() => router.push("/send")}
/>
);
}106 more lines ship with an easeUI Pro license.
Buy a licenseInstall
Props
accounts{ label: string; color: string }[]Default four sample accountsLinked accounts, drawn as overlapping marks above the total. color is a Tailwind background class.
balancenumberDefault 12480.62The total, rolled into place by the ticker whenever it changes.
changeTodaynumberDefault 62.1Change so far today, in dollars. A negative value prints in the destructive color.
tone"violet" | "neon" | "warning" | "accent"Default "violet"Color of the panel peeking out behind the card.
onMove() => voidCalled when Move is pressed.
onSend() => voidCalled when Send is pressed.
classNamestringMerged last, so anything passed here wins over the component's own classes.
Profile card
A two layer profile card with a color banner, a live looking availability dot, avatar led identity, and two contact actions.
import { ProfileCard } from "@/components/registry/profile-card";
export function TeamMember() {
return (
<ProfileCard
name="Jordan Lee"
role="Design engineer"
company="Northline Studio"
tone="neon"
localTime="9:41 PM"
onMessage={openThread}
onEmail={openComposer}
/>
);
}105 more lines ship with an easeUI Pro license.
Buy a licenseInstall
Props
namestringDefault "Jordan Lee"Shown under the avatar.
jobTitlestringDefault "Design engineer"Not called role, because that is the ARIA attribute and every a11y linter flags it on the way past.
companystringDefault "Northline Studio"Printed after the job title.
avatarSrcstringDefault a placeholder photoPhoto for the avatar circle.
availablebooleanDefault trueDrives both the status dot and the line of text under the name.
localTimestringAlready formatted, such as 9:41 PM. Left off, the corner pill is not drawn at all.
tone"violet" | "neon" | "warning" | "accent"Default "neon"Color of the panel peeking out behind the card.
onMessage() => voidCalled when Message is pressed.
onEmail() => voidCalled when Email is pressed.
classNamestringMerged last, so anything passed here wins over the component's own classes.