@ssa-ui-kit/core 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssa-ui-kit/core",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "private": false,
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import type { Meta } from '@storybook/react';
3
3
  import { useTheme } from '@emotion/react';
4
+ import Icon from '@components/Icon';
4
5
  import { HeaderTitle, GridWrapper, colors, sizes, icons } from './helpers';
5
6
 
6
7
  import Badge from './index';
7
- import Icon from '@components/Icon';
8
8
 
9
9
  export default {
10
10
  title: 'Components/Badge',
@@ -0,0 +1,54 @@
1
+ import { screen } from '@testing-library/dom';
2
+ import { ImageItem } from '@components/ImageItem';
3
+
4
+ const image =
5
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASGSURBVHgBfVVbUhtXEO2eGQ0SLz1AIAgYycSO7XKVo898hazA3kGSFeBkATHFAhJYAVlCvIKwgiiqpCLHNhbgBwgkIYHempl2952HBkr2VI10de/M6dOnT7cQPnMVCoWEaU5vEsIGgbNGDuRknwgaRM7fRPQcnP4f+Xz+8FMYOG6zVCpnQac9x6ENchwGJP+IZO3dGOwT7fVosP3NmEDazY2X5aNNzcACx/4WXIAwOvq3YoeoAvLih5g+8Vex+GLzswFeld8+Ixt2HKKEz9wDC5hfA3bXcswbkOTPneI/pWdjJToov3tqE/1Gtg0Og/u3xxw0TSO+URLq9wdhDEI3Hwmmojno/Jx/+GAnCFAqn2QjYBVYc2HOMVQQpfHUVIzS8ymMRaO8Zyu9zEgEWq02nFaq1Gp3gkTkQ7Lj3017SFz7+4eGnOpkb/myOCNZYCmThpmZKTw7q8HR5XuwLNvVlROJz87ArdVlrNcbUDmvkUsWPc6UMCb0PV58hy57uyzMLdtGh9kL8/R8UsChfPiOGBhZHohOmIrhVautiqDrOt5ZXwPJ4uT0nJRarl78nAbWoJ3UDLCfCKAwV6UUWSZjkEjMCriwRtM06e6XWchwRouL8/jg3joYho5So9dvjiEen2EpJ9EvqSsVkBmd3mQX0WPPMfKCeiKdToHIYtuOYjw/l0BhecBgrw+OqNlscYYpdSb1qlSqsLgwBzfqINlsaLx8pLiPbKkyuLpqBzbVdY2L2gl+d3s9MM2IWgvg5VULYtEJycrvGfQCZTVVXE8iiSwOGQyHwPUILCrgUhMGJQkm7FvtbiCFZGozQV3TR/5XZ1rW8OyoMgj3RbiR6hdNikQi+NWd2+r8vFoDcY/0hltY750Rc1VkZLcZDHzEYGs+qDAXJpLucGih17V4dl6FRrMJ7Bzo9fqezkoiMgxDegMtywpIqcZErWEwZpkBbvne54yINcaZ6Slk5jA5GcXMwjzEYjEYDIYqR9G/2+lhtV6Hy8u2PAttlkwIMgHpeL+1ixyA9vneCMmiGmvliwywLJBKxuH47QfxOvnshMxcKgHLS4tc3CYkE3F4f1Lx5pLykgrEjz3HQrmcMDrDi7Du8r2UWVCF/f/VG+h2+948ElkwGA3TzPx2dhXOzut819S5zCuNJdZYSgOtnJbP5Rr8zr47tEZT8gMzOj2rQm5thRnOqpqI0eQxcVIqmaCV5QzUahcg9fF6AKW4IpGm4++5XO7QHXalUnZo6wWZIV4dFGMJyMOOa5BmtpOqBrLHAVCyqjBwp9P15pMA6yDBWZ4GD4p8EECu4r8vnnJVfg3/Y4VlE1eYEUPZUAiw731/oucaBjZI4wAaGj+t55Z31Xt+gEcP7+1ww2x7wH7ga4UdDC2SJrRVz6B/+bZ0nUO47YNfayz/KhT/40zgF0ZOhvf9AgteUOWR54V9AzV96+766m74vbF/+oVCKcsibQHS9z6QG8Cd+SLXCF9Zcp8i+ON91vwm1tgA4UBc7ic89h8z0NeMFfcCHrNmh2zFPwc9YzefZyd+4voIMSvIE1PFRoIAAAAASUVORK5CYII=';
6
+
7
+ describe('ImageItem', () => {
8
+ it('Should be rendered without link', () => {
9
+ render(<ImageItem image={image}>Name Surname</ImageItem>);
10
+
11
+ expect(
12
+ screen.getByText(
13
+ (content, element) =>
14
+ element?.tagName.toLowerCase() === 'div' &&
15
+ element?.getAttribute('data-testid') === 'image-item',
16
+ ),
17
+ ).toBeInTheDocument();
18
+ });
19
+ it('Should be rendered with the link', () => {
20
+ render(
21
+ <ImageItem
22
+ image={image}
23
+ link="/?path=/story/components-button--all-states">
24
+ Name Surname
25
+ </ImageItem>,
26
+ );
27
+
28
+ expect(
29
+ screen.getByText(
30
+ (content, element) =>
31
+ element?.tagName.toLowerCase() === 'a' &&
32
+ element.getAttribute('target') !== '_blank',
33
+ ),
34
+ ).toBeInTheDocument();
35
+ });
36
+ it('Should be rendered with the link, opening in the new window', () => {
37
+ render(
38
+ <ImageItem
39
+ image={image}
40
+ link="/?path=/story/components-button--all-states"
41
+ openLinkInNewTab>
42
+ Name Surname
43
+ </ImageItem>,
44
+ );
45
+
46
+ expect(
47
+ screen.getByText(
48
+ (content, element) =>
49
+ element?.tagName.toLowerCase() === 'a' &&
50
+ element.getAttribute('target') === '_blank',
51
+ ),
52
+ ).toBeInTheDocument();
53
+ });
54
+ });
@@ -0,0 +1,33 @@
1
+ import type { Meta } from '@storybook/react';
2
+ import { ImageItem } from './ImageItem';
3
+
4
+ export default {
5
+ title: 'Widgets/ImageItem',
6
+ component: ImageItem,
7
+ } as Meta<typeof ImageItem>;
8
+
9
+ export const Default = {
10
+ args: {
11
+ children: 'Name Surname',
12
+ image:
13
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASGSURBVHgBfVVbUhtXEO2eGQ0SLz1AIAgYycSO7XKVo898hazA3kGSFeBkATHFAhJYAVlCvIKwgiiqpCLHNhbgBwgkIYHempl2952HBkr2VI10de/M6dOnT7cQPnMVCoWEaU5vEsIGgbNGDuRknwgaRM7fRPQcnP4f+Xz+8FMYOG6zVCpnQac9x6ENchwGJP+IZO3dGOwT7fVosP3NmEDazY2X5aNNzcACx/4WXIAwOvq3YoeoAvLih5g+8Vex+GLzswFeld8+Ixt2HKKEz9wDC5hfA3bXcswbkOTPneI/pWdjJToov3tqE/1Gtg0Og/u3xxw0TSO+URLq9wdhDEI3Hwmmojno/Jx/+GAnCFAqn2QjYBVYc2HOMVQQpfHUVIzS8ymMRaO8Zyu9zEgEWq02nFaq1Gp3gkTkQ7Lj3017SFz7+4eGnOpkb/myOCNZYCmThpmZKTw7q8HR5XuwLNvVlROJz87ArdVlrNcbUDmvkUsWPc6UMCb0PV58hy57uyzMLdtGh9kL8/R8UsChfPiOGBhZHohOmIrhVautiqDrOt5ZXwPJ4uT0nJRarl78nAbWoJ3UDLCfCKAwV6UUWSZjkEjMCriwRtM06e6XWchwRouL8/jg3joYho5So9dvjiEen2EpJ9EvqSsVkBmd3mQX0WPPMfKCeiKdToHIYtuOYjw/l0BhecBgrw+OqNlscYYpdSb1qlSqsLgwBzfqINlsaLx8pLiPbKkyuLpqBzbVdY2L2gl+d3s9MM2IWgvg5VULYtEJycrvGfQCZTVVXE8iiSwOGQyHwPUILCrgUhMGJQkm7FvtbiCFZGozQV3TR/5XZ1rW8OyoMgj3RbiR6hdNikQi+NWd2+r8vFoDcY/0hltY750Rc1VkZLcZDHzEYGs+qDAXJpLucGih17V4dl6FRrMJ7Bzo9fqezkoiMgxDegMtywpIqcZErWEwZpkBbvne54yINcaZ6Slk5jA5GcXMwjzEYjEYDIYqR9G/2+lhtV6Hy8u2PAttlkwIMgHpeL+1ixyA9vneCMmiGmvliwywLJBKxuH47QfxOvnshMxcKgHLS4tc3CYkE3F4f1Lx5pLykgrEjz3HQrmcMDrDi7Du8r2UWVCF/f/VG+h2+948ElkwGA3TzPx2dhXOzut819S5zCuNJdZYSgOtnJbP5Rr8zr47tEZT8gMzOj2rQm5thRnOqpqI0eQxcVIqmaCV5QzUahcg9fF6AKW4IpGm4++5XO7QHXalUnZo6wWZIV4dFGMJyMOOa5BmtpOqBrLHAVCyqjBwp9P15pMA6yDBWZ4GD4p8EECu4r8vnnJVfg3/Y4VlE1eYEUPZUAiw731/oucaBjZI4wAaGj+t55Z31Xt+gEcP7+1ww2x7wH7ga4UdDC2SJrRVz6B/+bZ0nUO47YNfayz/KhT/40zgF0ZOhvf9AgteUOWR54V9AzV96+766m74vbF/+oVCKcsibQHS9z6QG8Cd+SLXCF9Zcp8i+ON91vwm1tgA4UBc7ic89h8z0NeMFfcCHrNmh2zFPwc9YzefZyd+4voIMSvIE1PFRoIAAAAASUVORK5CYII=',
14
+ avatarSize: 24,
15
+ link: '',
16
+ openLinkInNewTab: false,
17
+ },
18
+ };
19
+
20
+ export const WithLink = {
21
+ args: {
22
+ ...Default.args,
23
+ link: 'https://uikit.ssa.group',
24
+ },
25
+ };
26
+
27
+ export const WithLinkOpeningInNewTab = {
28
+ args: {
29
+ ...Default.args,
30
+ link: 'https://uikit.ssa.group',
31
+ openLinkInNewTab: true,
32
+ },
33
+ };
@@ -0,0 +1,43 @@
1
+ import { useTheme } from '@emotion/react';
2
+ import Avatar from '@components/Avatar';
3
+ import Wrapper from '@components/Wrapper';
4
+ import { ImageItemProps } from './types';
5
+
6
+ export const ImageItem = ({
7
+ children,
8
+ image,
9
+ avatarSize = 24,
10
+ link = '',
11
+ openLinkInNewTab = false,
12
+ className,
13
+ }: ImageItemProps) => {
14
+ const theme = useTheme();
15
+ const additionalProps = link
16
+ ? {
17
+ href: link,
18
+ target: openLinkInNewTab ? '_blank' : undefined,
19
+ }
20
+ : {};
21
+ return (
22
+ <Wrapper
23
+ css={{ gap: 8, textDecoration: 'none' }}
24
+ as={link ? 'a' : 'div'}
25
+ className={className}
26
+ data-testid="image-item"
27
+ {...additionalProps}>
28
+ <Avatar size={avatarSize} image={image} />
29
+ <span
30
+ css={{
31
+ color: theme.colors.greyDarker,
32
+ fontSize: 14,
33
+ fontWeight: 500,
34
+ cursor: link ? 'pointer' : 'default',
35
+ '&:hover': {
36
+ color: theme.colors.blue,
37
+ },
38
+ }}>
39
+ {children}
40
+ </span>
41
+ </Wrapper>
42
+ );
43
+ };
@@ -0,0 +1 @@
1
+ export * from './ImageItem';
@@ -0,0 +1,7 @@
1
+ export type ImageItemProps = React.PropsWithChildren<{
2
+ image: string;
3
+ avatarSize?: number;
4
+ link?: string;
5
+ className?: string;
6
+ openLinkInNewTab?: boolean;
7
+ }>;
@@ -101,3 +101,4 @@ export * from './CollapsibleNavBar';
101
101
  export * from './Filters';
102
102
  export * from './TableFilters';
103
103
  export * from './Typeahead';
104
+ export * from './ImageItem';