'use client'
import { Avatar } from '@ark-ui/react/avatar'
import { type ComponentProps, forwardRef } from 'react'
import { createStyleContext } from 'styled-system/jsx'
import { avatar } from 'styled-system/recipes'
const UserIcon = () => (
)
const { withProvider, withContext } = createStyleContext(avatar)
export type RootProps = ComponentProps
export const Root = withProvider(Avatar.Root, 'root')
export const RootProvider = withProvider(Avatar.RootProvider, 'root')
export const Image = withContext(Avatar.Image, 'image', {
defaultProps: {
draggable: 'false',
referrerPolicy: 'no-referrer',
},
})
export { AvatarContext as Context } from '@ark-ui/react/avatar'
export interface FallbackProps extends ComponentProps {
/**
* The name to derive the initials from.
* If not provided, the fallback will display a generic icon.
*/
name?: string | undefined
}
const StyledFallback = withContext(Avatar.Fallback, 'fallback')
export const Fallback = forwardRef(function Fallback(props, ref) {
const { name, children, asChild, ...rest } = props
const fallbackContent = children || asChild ? children : name ? getInitials(name) :
return (
{fallbackContent}
)
})
const getInitials = (name: string) => {
const names = name.trim().split(' ')
const firstName = names[0] || ''
const lastName = names.length > 1 ? names[names.length - 1] : ''
return firstName && lastName ? `${firstName[0]}${lastName[0]}` : firstName[0]
}