diff --git a/src/components/FwbAvatar/FwbAvatar.vue b/src/components/FwbAvatar/FwbAvatar.vue index 0cc521e..6014076 100644 --- a/src/components/FwbAvatar/FwbAvatar.vue +++ b/src/components/FwbAvatar/FwbAvatar.vue @@ -1,18 +1,23 @@ diff --git a/src/components/FwbAvatar/composables/useAvatarClasses.ts b/src/components/FwbAvatar/composables/useAvatarClasses.ts index 4c22d1f..c86626b 100644 --- a/src/components/FwbAvatar/composables/useAvatarClasses.ts +++ b/src/components/FwbAvatar/composables/useAvatarClasses.ts @@ -6,7 +6,7 @@ import type { AvatarStatusPosition, AvatarType, } from '@/components/FwbAvatar/types' -import classNames from 'classnames' +import { useMergeClasses } from '@/composables/useMergeClasses' const avatarSizeClasses: Record = { xs: 'w-6 h-6', @@ -39,7 +39,8 @@ const avatarStatusDotPositionClasses: Record avatarPlaceholderInitialsClasses: Ref } { - const avatarClasses = computed(() => { - return classNames( + const avatarClasses = computed(() => + useMergeClasses([ avatarSizeClasses[props.size.value], avatarTypeClasses[props.rounded.value ? 'rounded' : 'default'], props.bordered.value ? avatarBorderedClasses : '', props.stacked.value ? 'border-2 border-white dark:border-gray-800' : '', - ) - }) + ]), + ) const avatarDotClasses = computed(() => { const avatarType = `${props.statusPosition.value}-${props.rounded.value ? 'rounded' : 'default'}` - return classNames( + return useMergeClasses([ avatarStatusDotDefaultClasses, avatarStatusDotClasses[props.status.value], avatarStatusDotPositionClasses[avatarType as avatarDotIndicatorPositionClasses], - ) + ]) }) - const avatarPlaceholderClasses = computed(() => { - return classNames( + const avatarPlaceholderClasses = computed(() => + useMergeClasses([ avatarPlaceholderDefaultClasses, avatarPlaceholderSizes[props.size.value], - ) - }) - const avatarPlaceholderWrapperClasses = computed(() => { - return classNames( + ]), + ) + const avatarPlaceholderWrapperClasses = computed(() => + useMergeClasses([ avatarPlaceholderWrapperDefaultClasses, avatarSizeClasses[props.size.value], avatarTypeClasses[props.rounded.value ? 'rounded' : 'default'], - ) - }) - const avatarPlaceholderInitialsClasses = computed(() => { - return classNames( + (props.img.value && props.bordered.value) ? '' : avatarPlaceholderWrapperBackgroundClasses, + props.bordered.value ? ' overflow-visible' : '', + ]), + ) + const avatarPlaceholderInitialsClasses = computed(() => + useMergeClasses([ avatarPlaceholderInitialsDefaultClasses, - ) - }) - // TODO: Avatar Initials + ]), + ) return { avatarClasses, diff --git a/src/composables/useMergeClasses.ts b/src/composables/useMergeClasses.ts index cbfd2b4..8ca2466 100644 --- a/src/composables/useMergeClasses.ts +++ b/src/composables/useMergeClasses.ts @@ -1,4 +1,4 @@ import { twMerge } from 'tailwind-merge' -export const useMergeClasses = (componentClasses: string): string => +export const useMergeClasses = (componentClasses: string | string[]): string => twMerge(componentClasses)