import { define } from '../src'
import { ExampleSection } from './ssr/helpers'
import { theme } from './ssr/themes'
const UserProfile = define('UserProfile', {
base: 'div',
padding: theme('spacing-lg'),
maxWidth: 600,
margin: "0 auto",
background: theme('colors-bgElevated'),
borderRadius: theme('radius-md'),
border: theme('colors-accent'),
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 = () => (
<>
>
)