import { define } from '../src' import { ExampleSection, theme } from './ssr/helpers' const UserProfile = define('UserProfile', { base: 'div', padding: theme.spacing.lg, maxWidth: 600, margin: "0 auto", background: theme.colors.bgElevated, border: `1px solid ${theme.colors.border}`, borderRadius: theme.radius.md, parts: { Header: { display: "flex", alignItems: "center", gap: theme.spacing.md, marginBottom: theme.spacing.md, }, Avatar: { base: 'img', width: 64, height: 64, borderRadius: "50%", objectFit: "cover", border: `2px solid ${theme.colors.border}`, }, Info: { flex: 1, }, Name: { marginBottom: 4, fontSize: 18, fontWeight: 400, color: theme.colors.fg, }, Handle: { fontSize: 14, color: theme.colors.fgMuted, }, Bio: { marginBottom: theme.spacing.md, width: "100%", fontSize: 14, lineHeight: 1.6, color: theme.colors.fgMuted, wordWrap: "break-word", }, Stats: { display: "flex", gap: theme.spacing.lg, paddingTop: theme.spacing.md, borderTop: `1px solid ${theme.colors.border}`, }, Stat: { display: "flex", flexDirection: "column", gap: 4, }, StatValue: { fontSize: 18, fontWeight: 400, color: theme.colors.fg, }, StatLabel: { fontSize: 12, color: theme.colors.fgMuted, textTransform: "uppercase", }, }, variants: { size: { compact: { padding: 16, maxWidth: 300, parts: { Avatar: { width: 48, height: 48 }, Name: { fontSize: 16 }, Bio: { fontSize: 13 }, }, }, skinny: { padding: 20, maxWidth: 125, parts: { Header: { flexDirection: "column", alignItems: "center", gap: 12, }, Avatar: { width: 80, height: 80 }, Info: { flex: 0, width: "100%" }, Name: { textAlign: "center", fontSize: 18 }, Handle: { textAlign: "center" }, Bio: { textAlign: "center", fontSize: 13 }, Stats: { flexDirection: "column", gap: 16, }, Stat: { alignItems: "center" }, }, }, large: { padding: 32, maxWidth: 800, parts: { Avatar: { width: 96, height: 96 }, Name: { fontSize: 24 }, }, }, }, verified: { parts: { Avatar: { border: `2px solid ${theme.colors.accent}`, }, }, }, }, render({ props, parts: { Root, Header, Avatar, Info, Name, Handle, Bio, Stats, Stat, StatValue, StatLabel } }) { return (
{props.name} {props.verified && " ✓"} @{props.username}
{props.bio} {props.followers?.toLocaleString() || 0} Followers {props.following?.toLocaleString() || 0} Following {props.posts?.toLocaleString() || 0} Posts
) }, }) export const ProfileExamplesContent = () => ( <> )