fix(ui): display single initial for x-small and small Avatar sizes

Avatar components in x-small and small sizes now display only
one initial instead of two, improving readability at smaller
dimensions.

Updated the Storybook story to demonstrate both image-based and
initial-based avatars across all size variants.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
This commit is contained in:
Johan Persson
2025-11-04 11:44:46 +01:00
parent 037536c627
commit 719d772743
3 changed files with 25 additions and 7 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/ui': patch
---
Avatar components in x-small and small sizes now display only one initial instead of two, improving readability at smaller dimensions.
@@ -45,12 +45,21 @@ export const Sizes: Story = {
...Default.args,
},
render: args => (
<Flex>
<Avatar {...args} size="x-small" />
<Avatar {...args} size="small" />
<Avatar {...args} size="medium" />
<Avatar {...args} size="large" />
<Avatar {...args} size="x-large" />
<Flex direction="column" gap="6">
<Flex>
<Avatar {...args} size="x-small" />
<Avatar {...args} size="small" />
<Avatar {...args} size="medium" />
<Avatar {...args} size="large" />
<Avatar {...args} size="x-large" />
</Flex>
<Flex>
<Avatar {...args} size="x-small" src="" />
<Avatar {...args} size="small" src="" />
<Avatar {...args} size="medium" src="" />
<Avatar {...args} size="large" src="" />
<Avatar {...args} size="x-large" src="" />
</Flex>
</Flex>
),
};
+5 -1
View File
@@ -47,12 +47,16 @@ export const Avatar = forwardRef<HTMLDivElement, AvatarProps>((props, ref) => {
};
}, [src]);
const initialsCount = ['x-small', 'small'].includes(cleanedProps.size)
? 1
: 2;
const initials = name
.split(' ')
.map(word => word[0])
.join('')
.toLocaleUpperCase('en-US')
.slice(0, 2);
.slice(0, initialsCount);
return (
<div