@transkripid/flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS - Transkrip.id fork
1 lines • 10.1 kB
Source Map (JSON)
{"version":3,"file":"Avatar.mjs","sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import type { ComponentProps, FC, ReactElement } from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { mergeDeep } from '../../helpers/merge-deep';\nimport { getTheme } from '../../theme-store';\nimport type { DeepPartial } from '../../types';\nimport type { FlowbiteBoolean, FlowbiteColors, FlowbitePositions, FlowbiteSizes } from '../Flowbite';\nimport type { FlowbiteAvatarGroupTheme } from './AvatarGroup';\nimport { AvatarGroup } from './AvatarGroup';\nimport type { FlowbiteAvatarGroupCounterTheme } from './AvatarGroupCounter';\nimport { AvatarGroupCounter } from './AvatarGroupCounter';\n\nexport interface FlowbiteAvatarTheme {\n root: FlowbiteAvatarRootTheme;\n group: FlowbiteAvatarGroupTheme;\n groupCounter: FlowbiteAvatarGroupCounterTheme;\n}\n\nexport interface FlowbiteAvatarRootTheme {\n base: string;\n bordered: string;\n color: AvatarColors;\n img: FlowbiteAvatarImageTheme;\n initials: FlowbiteAvatarInitialsTheme;\n rounded: string;\n size: AvatarSizes;\n stacked: string;\n status: FlowbiteAvatarStatusTheme;\n statusPosition: FlowbitePositions;\n}\n\nexport interface FlowbiteAvatarImageTheme extends FlowbiteBoolean {\n base: string;\n placeholder: string;\n}\n\nexport interface FlowbiteAvatarStatusTheme {\n away: string;\n base: string;\n busy: string;\n offline: string;\n online: string;\n}\n\nexport interface FlowbiteAvatarInitialsTheme {\n base: string;\n text: string;\n}\n\nexport interface AvatarColors\n extends Pick<FlowbiteColors, 'failure' | 'gray' | 'info' | 'pink' | 'purple' | 'success' | 'warning'> {\n [key: string]: string;\n}\n\nexport interface AvatarSizes extends Pick<FlowbiteSizes, 'xs' | 'sm' | 'md' | 'lg' | 'xl'> {\n [key: string]: string;\n}\n\nexport interface AvatarImageProps {\n alt?: string;\n className: string;\n 'data-testid': string;\n}\n\nexport interface AvatarProps extends Omit<ComponentProps<'div'>, 'color'> {\n alt?: string;\n bordered?: boolean;\n img?: string | ((props: AvatarImageProps) => ReactElement);\n color?: keyof AvatarColors;\n rounded?: boolean;\n size?: keyof AvatarSizes;\n stacked?: boolean;\n status?: 'away' | 'busy' | 'offline' | 'online';\n statusPosition?: keyof FlowbitePositions;\n placeholderInitials?: string;\n theme?: DeepPartial<FlowbiteAvatarTheme>;\n}\n\nconst AvatarComponent: FC<AvatarProps> = ({\n alt = '',\n bordered = false,\n children,\n className,\n color = 'light',\n img,\n placeholderInitials = '',\n rounded = false,\n size = 'md',\n stacked = false,\n status,\n statusPosition = 'top-left',\n theme: customTheme = {},\n ...props\n}) => {\n const theme = mergeDeep(getTheme().avatar, customTheme);\n\n const imgClassName = twMerge(\n theme.root.img.base,\n bordered && theme.root.bordered,\n bordered && theme.root.color[color],\n rounded && theme.root.rounded,\n stacked && theme.root.stacked,\n theme.root.img.on,\n theme.root.size[size],\n );\n\n const imgProps = {\n className: twMerge(imgClassName, theme.root.img.on),\n 'data-testid': 'flowbite-avatar-img',\n };\n return (\n <div className={twMerge(theme.root.base, className)} data-testid=\"flowbite-avatar\" {...props}>\n <div className=\"relative\">\n {img ? (\n typeof img === 'string' ? (\n <img alt={alt} src={img} {...imgProps} />\n ) : (\n img({ alt, ...imgProps })\n )\n ) : placeholderInitials ? (\n <div\n className={twMerge(\n theme.root.img.off,\n theme.root.initials.base,\n stacked && theme.root.stacked,\n bordered && theme.root.bordered,\n bordered && theme.root.color[color],\n theme.root.size[size],\n rounded && theme.root.rounded,\n )}\n data-testid=\"flowbite-avatar-initials-placeholder\"\n >\n <span className={twMerge(theme.root.initials.text)} data-testid=\"flowbite-avatar-initials-placeholder-text\">\n {placeholderInitials}\n </span>\n </div>\n ) : (\n <div className={twMerge(imgClassName, theme.root.img.off)} data-testid=\"flowbite-avatar-img\">\n <svg\n className={theme.root.img.placeholder}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path fillRule=\"evenodd\" d=\"M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z\" clipRule=\"evenodd\" />\n </svg>\n </div>\n )}\n {status && (\n <span\n data-testid=\"flowbite-avatar-status\"\n className={twMerge(\n theme.root.status.base,\n theme.root.status[status],\n theme.root.statusPosition[statusPosition],\n )}\n />\n )}\n </div>\n {children && <div>{children}</div>}\n </div>\n );\n};\n\nAvatarComponent.displayName = 'Avatar';\n\nexport const Avatar = Object.assign(AvatarComponent, {\n Group: AvatarGroup,\n Counter: AvatarGroupCounter,\n});\n"],"names":["AvatarComponent","t0","$","_c","children","className","img","props","status","t1","t2","t3","t4","t5","t6","t7","t8","t9","alt","bordered","color","placeholderInitials","rounded","size","stacked","statusPosition","theme","undefined","t10","customTheme","t11","t12","t13","t14","t15","t16","mergeDeep","getTheme","avatar","imgClassName","twMerge","root","base","on","imgProps","jsx","off","initials","text","placeholder","t17","jsxs","t18","t19","displayName","Avatar","Object","assign","Group","AvatarGroup","Counter","AvatarGroupCounter"],"mappings":"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"}