Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrates avatar base to TypeScript #18494

Merged
merged 37 commits into from
May 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
06bb308
Converted file extension from .js to .tsx
spiritanand Mar 29, 2023
dab35ad
Updated README docs to match the enums. Resolved type errors
spiritanand Apr 6, 2023
82621cf
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 6, 2023
827c0fe
Updated AvatarBaseSizes enum values to string literals
spiritanand Apr 7, 2023
e7b5df5
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 7, 2023
875f00d
Merge branch 'develop' into migrate_avatar_base_ts
legobeat Apr 10, 2023
021dc00
Merge branch 'develop' into migrate_avatar_base_ts
legobeat Apr 10, 2023
1171f22
Added TEXT_TRANSFORM.UPPERCASE as default value of textTransform in b…
spiritanand Apr 10, 2023
359bca9
lint fix
legobeat Apr 10, 2023
ad4188b
Solved liniting errors in avatar-base
spiritanand Apr 10, 2023
1abbaf4
Merge branch 'migrate_avatar_base_ts' of https://github.com/spiritana…
spiritanand Apr 10, 2023
bb55efb
Merge branch 'develop' into migrate_avatar_base_ts
legobeat Apr 11, 2023
ef6c62e
Made enum more consistent, added desc for AvatarBaseProps
spiritanand Apr 11, 2023
dd9eced
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 11, 2023
dc48ece
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 12, 2023
678220b
Updated snapshots of AvatarBase and exported AvatarBaseProps in index.ts
spiritanand Apr 19, 2023
c4c80a9
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 19, 2023
1403235
Made textTransform property accept right values in avatar-base.tsx
spiritanand Apr 20, 2023
8df455e
Adding temporary changed extensions
spiritanand Apr 20, 2023
5173a95
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 20, 2023
2716e63
Reverted files back to tsx and resolved conflicts
spiritanand Apr 20, 2023
a594ce4
Solved linting errors
spiritanand Apr 20, 2023
e2898d7
AvatarBaseProps now extends TextProps
spiritanand Apr 20, 2023
ff69a53
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 20, 2023
fafdfb8
Changing extension to resolve conflict
spiritanand Apr 21, 2023
2caec87
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 21, 2023
b6c4ebc
Reverted extensions back to tsx after resolving conflicts
spiritanand Apr 21, 2023
7e168a5
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 21, 2023
842cbde
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 26, 2023
ba4ba8f
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 26, 2023
c50f74c
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 27, 2023
1f3f568
Added forwardRef in AvatarBase
spiritanand Apr 27, 2023
f4705f1
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 27, 2023
9b9d727
Updated import name of AvatarBaseSize in README.mdx. Removed empty ch…
spiritanand Apr 29, 2023
5e08724
Merge branch 'develop' into migrate_avatar_base_ts
spiritanand Apr 29, 2023
41f5ef8
Merge branch 'develop' into migrate_avatar_base_ts
brad-decker May 1, 2023
9851d9d
Merge branch 'develop' into migrate_avatar_base_ts
legobeat May 2, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions ui/components/component-library/avatar-base/README.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@ The text styles of the `AvatarBase` is based on the `size` prop. To override thi
</Canvas>

```jsx
import { AVATAR_BASE_SIZES } from '../ui/component-library/avatar-base';
import { AvatarBase } from '../../component-library';
<AvatarBase size={AVATAR_BASE_SIZES.XS} />
<AvatarBase size={AVATAR_BASE_SIZES.SM} />
<AvatarBase size={AVATAR_BASE_SIZES.MD} />
<AvatarBase size={AVATAR_BASE_SIZES.LG} />
<AvatarBase size={AVATAR_BASE_SIZES.XL} />
import { AvatarBaseSize } from '../ui/component-library/avatar-base/avatar-base.types';
import { AvatarBase } from '../../component-library/avatar-base';
<AvatarBase size={AvatarBaseSize.XS} />
<AvatarBase size={AvatarBaseSize.SM} />
<AvatarBase size={AvatarBaseSize.MD} />
<AvatarBase size={AvatarBaseSize.LG} />
<AvatarBase size={AvatarBaseSize.XL} />
```

### Children
Expand Down

This file was deleted.

106 changes: 0 additions & 106 deletions ui/components/component-library/avatar-base/avatar-base.js

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
import { ComponentMeta } from '@storybook/react';
import React from 'react';
import {
AlignItems,
DISPLAY,
TextColor,
BackgroundColor,
BorderColor,
Color,
IconColor,
} from '../../../helpers/constants/design-system';

import Box from '../../ui/box/box';

import { Icon, IconName } from '..';
import README from './README.mdx';
import { AvatarBase } from './avatar-base';
import { AVATAR_BASE_SIZES } from './avatar-base.constants';
import { AvatarBaseProps, AvatarBaseSize } from './avatar-base.types';

const marginSizeKnobOptions = [
0,
Expand Down Expand Up @@ -44,7 +45,7 @@ export default {
argTypes: {
size: {
control: 'select',
options: Object.values(AVATAR_BASE_SIZES),
options: Object.values(AvatarBaseSize),
},
color: {
options: Object.values(TextColor),
Expand Down Expand Up @@ -85,29 +86,29 @@ export default {
},
},
args: {
size: AVATAR_BASE_SIZES.MD,
size: AvatarBaseSize.Md,
color: TextColor.textDefault,
backgroundColor: BackgroundColor.backgroundAlternative,
borderColor: BorderColor.borderDefault,
children: 'B',
},
};
} as ComponentMeta<typeof AvatarBase>;

export const DefaultStory = (args) => <AvatarBase {...args} />;
export const DefaultStory = (args: AvatarBaseProps) => <AvatarBase {...args} />;

DefaultStory.storyName = 'Default';

export const Size = (args) => (
export const Size = (args: AvatarBaseProps) => (
<Box display={DISPLAY.FLEX} alignItems={AlignItems.baseline} gap={1}>
<AvatarBase {...args} size={AVATAR_BASE_SIZES.XS} />
<AvatarBase {...args} size={AVATAR_BASE_SIZES.SM} />
<AvatarBase {...args} size={AVATAR_BASE_SIZES.MD} />
<AvatarBase {...args} size={AVATAR_BASE_SIZES.LG} />
<AvatarBase {...args} size={AVATAR_BASE_SIZES.XL} />
<AvatarBase {...args} size={AvatarBaseSize.Xs} />
<AvatarBase {...args} size={AvatarBaseSize.Sm} />
<AvatarBase {...args} size={AvatarBaseSize.Md} />
<AvatarBase {...args} size={AvatarBaseSize.Lg} />
<AvatarBase {...args} size={AvatarBaseSize.Xl} />
</Box>
);

export const Children = (args) => (
export const Children = (args: AvatarBaseProps) => (
<Box display={DISPLAY.FLEX} gap={1}>
<AvatarBase {...args}>
<img src="./images/eth_logo.png" />
Expand All @@ -124,12 +125,12 @@ export const Children = (args) => (
backgroundColor={BackgroundColor.infoMuted}
borderColor={BorderColor.infoMuted}
>
<Icon name={IconName.User} color={Color.infoDefault} />
<Icon name={IconName.User} color={IconColor.infoDefault} />
</AvatarBase>
</Box>
);

export const ColorBackgroundColorAndBorderColor = (args) => (
export const ColorBackgroundColorAndBorderColor = (args: AvatarBaseProps) => (
<Box display={DISPLAY.FLEX} gap={1}>
<AvatarBase {...args}>B</AvatarBase>
<AvatarBase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,15 @@
import { render, screen } from '@testing-library/react';
import React from 'react';

import { Color, TextColor } from '../../../helpers/constants/design-system';
import {
BackgroundColor,
BorderColor,
Color,
TextColor,
} from '../../../helpers/constants/design-system';

import { AvatarBase } from './avatar-base';
import { AvatarBaseSize } from './avatar-base.types';

describe('AvatarBase', () => {
it('should render correctly', () => {
Expand All @@ -17,11 +23,11 @@ describe('AvatarBase', () => {
it('should render with different size classes', () => {
const { getByTestId } = render(
<>
<AvatarBase size="xs" data-testid="avatar-base-xs" />
<AvatarBase size="sm" data-testid="avatar-base-sm" />
<AvatarBase size="md" data-testid="avatar-base-md" />
<AvatarBase size="lg" data-testid="avatar-base-lg" />
<AvatarBase size="xl" data-testid="avatar-base-xl" />
<AvatarBase size={AvatarBaseSize.Xs} data-testid="avatar-base-xs" />
<AvatarBase size={AvatarBaseSize.Sm} data-testid="avatar-base-sm" />
<AvatarBase size={AvatarBaseSize.Md} data-testid="avatar-base-md" />
<AvatarBase size={AvatarBaseSize.Lg} data-testid="avatar-base-lg" />
<AvatarBase size={AvatarBaseSize.Xl} data-testid="avatar-base-xl" />
</>,
);
expect(getByTestId('avatar-base-xs')).toHaveClass(
Expand Down Expand Up @@ -84,11 +90,11 @@ describe('AvatarBase', () => {
const { getByTestId } = render(
<>
<AvatarBase
backgroundColor={TextColor.successDefault}
backgroundColor={BackgroundColor.successDefault}
data-testid={Color.successDefault}
/>
<AvatarBase
backgroundColor={TextColor.errorDefault}
backgroundColor={BackgroundColor.errorDefault}
data-testid={Color.errorDefault}
/>
</>,
Expand All @@ -105,11 +111,11 @@ describe('AvatarBase', () => {
const { getByTestId } = render(
<>
<AvatarBase
borderColor={Color.successDefault}
borderColor={BorderColor.successDefault}
data-testid={Color.successDefault}
/>
<AvatarBase
borderColor={Color.errorDefault}
borderColor={BorderColor.errorDefault}
data-testid={Color.errorDefault}
/>
</>,
Expand Down
63 changes: 63 additions & 0 deletions ui/components/component-library/avatar-base/avatar-base.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import React, { forwardRef, Ref } from 'react';
import classnames from 'classnames';

import {
BackgroundColor,
BorderColor,
TextColor,
DISPLAY,
JustifyContent,
AlignItems,
BorderRadius,
TextVariant,
TextTransform,
} from '../../../helpers/constants/design-system';

import { Text, ValidTag } from '../text';

import { AvatarBaseProps, AvatarBaseSize } from './avatar-base.types';

export const AvatarBase = forwardRef(
(
{
size = AvatarBaseSize.Md,
children,
backgroundColor = BackgroundColor.backgroundAlternative,
borderColor = BorderColor.borderDefault,
color = TextColor.textDefault,
className = '',
...props
}: AvatarBaseProps,
ref: Ref<HTMLElement>,
) => {
let fallbackTextVariant;

if (size === AvatarBaseSize.Lg || size === AvatarBaseSize.Xl) {
fallbackTextVariant = TextVariant.bodyLgMedium;
} else if (size === AvatarBaseSize.Sm || size === AvatarBaseSize.Md) {
fallbackTextVariant = TextVariant.bodySm;
} else {
fallbackTextVariant = TextVariant.bodyXs;
}
return (
<Text
className={classnames(
'mm-avatar-base',
`mm-avatar-base--size-${size}`,
className,
)}
ref={ref}
as={ValidTag.Div}
display={DISPLAY.FLEX}
justifyContent={JustifyContent.center}
alignItems={AlignItems.center}
borderRadius={BorderRadius.full}
variant={fallbackTextVariant}
textTransform={TextTransform.Uppercase}
{...{ backgroundColor, borderColor, color, ...props }}
>
{children}
</Text>
);
},
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import {
BackgroundColor,
BorderColor,
TextColor,
} from '../../../helpers/constants/design-system';
import { TextProps } from '../text';

export enum AvatarBaseSize {
Xs = 'xs',
Sm = 'sm',
Md = 'md',
Lg = 'lg',
Xl = 'xl',
}

export interface AvatarBaseProps extends TextProps {
/**
* The size of the AvatarBase.
* Possible values could be 'AvatarBaseSize.Xs'(16px), 'AvatarBaseSize.Sm'(24px),
* 'AvatarBaseSize.Md'(32px), 'AvatarBaseSize.Lg'(40px), 'AvatarBaseSize.Xl'(48px)
* Defaults to AvatarBaseSize.Md
*/
size?: AvatarBaseSize;
/**
* The children to be rendered inside the AvatarBase
*/
children: React.ReactNode;
/**
* The background color of the AvatarBase
* Defaults to Color.backgroundAlternative
*/
backgroundColor?: BackgroundColor;
/**
* The background color of the AvatarBase
* Defaults to Color.borderDefault
*/
borderColor?: BorderColor;
/**
* The color of the text inside the AvatarBase
* Defaults to TextColor.textDefault
*/
color?: TextColor;
/**
* Additional classNames to be added to the AvatarBase
*/
className?: string;
}
Loading