starseam
uiavatarsource: ok · hit
Avatar
An identity plate: square, hairline seam, instrument-lettered fallback.
npx shadcn add "https://starseam.astroicers.link/r/avatar.json"free
Interaction
text-animation
Tags auto-generated by rules on 9/24/2026 — empty means no evidence, not lack of support.
Dependencies
Bundle weight · lightui-primitives@radix-ui/react-avatar
Registry dependencies
https://starseam.astroicers.link/r/theme.json
Files1 · source cached 10/8/2026, 6:00:32 PM
registry/starseam/ui/avatar.tsx
"use client";
import * as React from "react";
import * as AvatarPrimitive from "@radix-ui/react-avatar";
import { cn } from "@/lib/utils";
/**
* An identity plate. Square with the system 2px radius — plates are cut, not
* moulded (DECISIONS 09) — and a hairline seam around the image. The fallback
* is instrument lettering on steel, not a pastel disc.
*/
function Avatar({
className,
...props
}: React.ComponentProps<typeof AvatarPrimitive.Root>) {
return (
<AvatarPrimitive.Root
data-slot="avatar"
className={cn(
"relative flex size-[36px] shrink-0 overflow-hidden rounded-[var(--ss-radius)]",
"border border-[var(--ss-seam-strong)] bg-[var(--ss-plate-1)]",
className
)}
{...props}
/>
);
}
function AvatarImage({
className,
...props
}: React.ComponentProps<typeof AvatarPrimitive.Image>) {
return (
<AvatarPrimitive.Image
data-slot="avatar-image"
className={cn("aspect-square size-full object-cover", className)}
{...props}
/>
);
}
function AvatarFallback({
className,
...props
}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {
return (
<AvatarPrimitive.Fallback
data-slot="avatar-fallback"
className={cn(
"flex size-full items-center justify-center",
"font-[family-name:var(--ss-mono)] text-[11px] uppercase tracking-[0.08em] text-[var(--ss-text-3)]",
className
)}
{...props}
/>
);
}
export { Avatar, AvatarImage, AvatarFallback };