diff --git a/frontend/app/__stubs__/svg.tsx b/frontend/app/__stubs__/svg.tsx index b6e1dad8..7b63c8ff 100644 --- a/frontend/app/__stubs__/svg.tsx +++ b/frontend/app/__stubs__/svg.tsx @@ -1,3 +1,3 @@ -const SvgrUrl = 'https://url-to-svg-image'; +const SvgrUrl = '/image.svg'; export default SvgrUrl; diff --git a/frontend/app/components/avatar-icon/_default/avatar-icon_default.css b/frontend/app/components/avatar-icon/_default/avatar-icon_default.css deleted file mode 100644 index 8f6525ea..00000000 --- a/frontend/app/components/avatar-icon/_default/avatar-icon_default.css +++ /dev/null @@ -1,3 +0,0 @@ -.avatar-icon_default { - border: 1px solid var(--color40); -} diff --git a/frontend/app/components/avatar-icon/anonymous-icon.svg b/frontend/app/components/avatar-icon/anonymous-icon.svg deleted file mode 100644 index b71ee9e5..00000000 --- a/frontend/app/components/avatar-icon/anonymous-icon.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/frontend/app/components/avatar-icon/avatar-icon.spec.tsx b/frontend/app/components/avatar-icon/avatar-icon.spec.tsx deleted file mode 100644 index af4f526f..00000000 --- a/frontend/app/components/avatar-icon/avatar-icon.spec.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import '@testing-library/jest-dom'; -import { h } from 'preact'; -import { render } from '@testing-library/preact'; -import { AvatarIcon } from './avatar-icon'; - -describe('', () => { - it('should get', () => { - const { getByAltText } = render(); - - expect(getByAltText('avatar')).toHaveAttribute('src', 'https://url-to-svg-image'); - }); -}); diff --git a/frontend/app/components/avatar-icon/avatar-icon.tsx b/frontend/app/components/avatar-icon/avatar-icon.tsx deleted file mode 100644 index 0cca7df8..00000000 --- a/frontend/app/components/avatar-icon/avatar-icon.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { h, JSX } from 'preact'; -import b from 'bem-react-helper'; -import { Theme } from 'common/types'; - -type Props = JSX.HTMLAttributes & { - picture?: string; - mix?: string; - theme?: Theme; -}; - -export function AvatarIcon({ mix, theme, picture, ...props }: Props) { - return ( - - ); -} diff --git a/frontend/app/components/avatar-icon/index.ts b/frontend/app/components/avatar-icon/index.ts deleted file mode 100644 index 7aaba217..00000000 --- a/frontend/app/components/avatar-icon/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import './avatar-icon.css'; -import './_default/avatar-icon_default.css'; - -export { AvatarIcon } from './avatar-icon'; diff --git a/frontend/app/components/avatar-icon/avatar-icon.svg b/frontend/app/components/avatar/assets/ghost.svg similarity index 100% rename from frontend/app/components/avatar-icon/avatar-icon.svg rename to frontend/app/components/avatar/assets/ghost.svg diff --git a/frontend/app/components/avatar-icon/avatar-icon.css b/frontend/app/components/avatar/avatar.module.css similarity index 58% rename from frontend/app/components/avatar-icon/avatar-icon.css rename to frontend/app/components/avatar/avatar.module.css index ddd3894d..70dcf9c8 100644 --- a/frontend/app/components/avatar-icon/avatar-icon.css +++ b/frontend/app/components/avatar/avatar.module.css @@ -1,4 +1,4 @@ -.avatar-icon { +.avatar { display: inline-block; width: 24px; height: 24px; @@ -6,3 +6,8 @@ vertical-align: middle; border-radius: 4px; } + +.avatarGhost { + box-sizing: border-box; + border: 1px solid var(--color40); +} diff --git a/frontend/app/components/avatar/avatar.spec.tsx b/frontend/app/components/avatar/avatar.spec.tsx new file mode 100644 index 00000000..76d3de5b --- /dev/null +++ b/frontend/app/components/avatar/avatar.spec.tsx @@ -0,0 +1,16 @@ +import '@testing-library/jest-dom'; +import { h } from 'preact'; +import { render } from '@testing-library/preact'; + +import { BASE_URL } from 'common/constants.config'; + +import { Avatar } from './avatar'; + +describe('', () => { + it('should get', () => { + const { getByAltText } = render(); + + expect(getByAltText('avatar')).toHaveAttribute('src', `${BASE_URL}/image.svg`); + expect(getByAltText('avatar')).toHaveAttribute('alt', 'avatar'); + }); +}); diff --git a/frontend/app/components/avatar/avatar.tsx b/frontend/app/components/avatar/avatar.tsx new file mode 100644 index 00000000..89b46265 --- /dev/null +++ b/frontend/app/components/avatar/avatar.tsx @@ -0,0 +1,22 @@ +import clsx from 'clsx'; +import { h } from 'preact'; + +import { BASE_URL } from 'common/constants.config'; + +import styles from './avatar.module.css'; + +type Props = { + url?: string; + alt: string; + /** className should be used only in puprose of put permanent class on Avatar for user themization */ + className: string; +}; + +export function Avatar({ url, className, alt }: Props) { + const avatarUrl = url || `${BASE_URL}${require('./assets/ghost.svg').default}`; + + return ( + // eslint-disable-next-line jsx-a11y/alt-text + + ); +} diff --git a/frontend/app/components/avatar/index.ts b/frontend/app/components/avatar/index.ts new file mode 100644 index 00000000..a7424ca3 --- /dev/null +++ b/frontend/app/components/avatar/index.ts @@ -0,0 +1 @@ +export * from './avatar'; diff --git a/frontend/app/components/comment/comment.tsx b/frontend/app/components/comment/comment.tsx index 18389c58..775f49fc 100644 --- a/frontend/app/components/comment/comment.tsx +++ b/frontend/app/components/comment/comment.tsx @@ -12,7 +12,7 @@ import { extractErrorMessageFromResponse, FetcherError } from 'utils/errorUtils' import { isUserAnonymous } from 'utils/isUserAnonymous'; import { CommentFormProps } from 'components/comment-form'; -import { AvatarIcon } from 'components/avatar-icon'; +import { Avatar } from 'components/avatar'; import { Button } from 'components/button'; import { Countdown } from 'components/countdown'; import { getPreview, uploadImage } from 'common/api'; @@ -661,9 +661,8 @@ export class Comment extends Component { )} {props.view !== 'user' && !props.collapsed && ( - + )} - {props.view !== 'user' && ( { return ( - +