@universal-tennis/ui-shared 0.1.96 → 0.2.0
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/.eslintignore +1 -1
- package/.eslintrc.js +73 -73
- package/.storybook/main.js +16 -16
- package/.storybook/preview.js +17 -17
- package/.storybook/typography.css +5 -26
- package/.storybook/variables.css +16 -16
- package/README.md +129 -129
- package/dist/App.d.ts +1 -1
- package/dist/stories/Button.d.ts +27 -0
- package/dist/stories/Button.js +51 -0
- package/dist/stories/Button.js.map +1 -0
- package/dist/stories/Button.stories.d.ts +15 -0
- package/dist/stories/Button.stories.js +34 -0
- package/dist/stories/Button.stories.js.map +1 -0
- package/dist/stories/Header.d.ts +19 -0
- package/dist/stories/Header.js +31 -0
- package/dist/stories/Header.js.map +1 -0
- package/dist/stories/Header.stories.d.ts +11 -0
- package/dist/stories/Header.stories.js +20 -0
- package/dist/stories/Header.stories.js.map +1 -0
- package/dist/stories/Page.d.ts +1 -0
- package/dist/stories/Page.js +38 -0
- package/dist/stories/Page.js.map +1 -0
- package/dist/stories/Page.stories.d.ts +11 -0
- package/dist/stories/Page.stories.js +30 -0
- package/dist/stories/Page.stories.js.map +1 -0
- package/dist/stories/assets/comments.svg +1 -0
- package/dist/stories/assets/css/typography.css +5 -26
- package/dist/stories/assets/css/variables.css +15 -15
- package/dist/stories/assets/direction.svg +1 -0
- package/dist/stories/assets/icon-chat-blue.svg +10 -10
- package/dist/stories/assets/utr-sports-logo.svg +9 -9
- package/dist/stories/atoms/Button/Button.d.ts +1 -1
- package/dist/stories/atoms/Button/Button.js.map +1 -1
- package/dist/stories/atoms/Button/index.d.ts +1 -0
- package/dist/stories/atoms/Button/index.js +2 -0
- package/dist/stories/atoms/Button/index.js.map +1 -0
- package/dist/stories/atoms/Button.d.ts +7 -0
- package/dist/stories/atoms/Button.js +20 -0
- package/dist/stories/atoms/Button.js.map +1 -0
- package/dist/stories/atoms/Button.stories.d.ts +13 -0
- package/dist/stories/atoms/Button.stories.js +22 -0
- package/dist/stories/atoms/Button.stories.js.map +1 -0
- package/dist/stories/atoms/Icons/AddIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/AvailabilityMaybeIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/AvailabilityNoIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/AvailabilityNotSetIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/AvailabilityYesIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/BallInMotionIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/CalendarIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/ClockIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/CloseIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/DeleteIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/DoublePersonIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/EditIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/LeftChevronIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/LineIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/LocationIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/MessageIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/PickleballBallIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/RightChevronIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SessionIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SinglePersonIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SinglePersonV2Icon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SocialMediaFacebookIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SocialMediaInstagramIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SocialMediaTikTokIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SocialMediaXIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SocialMediaYoutubeIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SwapIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/SwapNoBorderIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/TennisBallIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/VerifiedIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/VisibilityIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/VisibilityOffIcon.d.ts +2 -2
- package/dist/stories/atoms/Icons/WinnerIndicatorIcon.d.ts +2 -2
- package/dist/stories/atoms/Typography/Typography.d.ts +2 -2
- package/dist/stories/atoms/Typography/Typography.js.map +1 -1
- package/dist/stories/atoms/Typography/index.d.ts +1 -0
- package/dist/stories/atoms/Typography/index.js +2 -0
- package/dist/stories/atoms/Typography/index.js.map +1 -0
- package/dist/stories/atoms/UTMap/UTMap.d.ts +2 -2
- package/dist/stories/molecules/AvatarWithName/AvatarWithName.d.ts +2 -2
- package/dist/stories/molecules/Cards/ContactCard.d.ts +2 -2
- package/dist/stories/molecules/Cards/DrawCard.d.ts +2 -2
- package/dist/stories/molecules/Cards/DrawCard.js.map +1 -1
- package/dist/stories/molecules/Cards/TeamCard.d.ts +2 -2
- package/dist/stories/molecules/Cards/TeamDrawCard.d.ts +2 -2
- package/dist/stories/molecules/Cards/shared.d.ts +1 -4
- package/dist/stories/molecules/FooterSection/FooterSection.d.ts +2 -2
- package/dist/stories/molecules/GlobalNavItem/GlobalNavItem.d.ts +2 -2
- package/dist/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.d.ts +2 -2
- package/dist/stories/organisms/Footer/Footer.d.ts +2 -2
- package/dist/stories/organisms/Footer/Footer.js +2 -6
- package/dist/stories/organisms/Footer/Footer.js.map +1 -1
- package/dist/stories/organisms/GlobalNavigation/GlobalNavigation.d.ts +2 -2
- package/dist/stories/organisms/GlobalNavigation/GlobalNavigation.js.map +1 -1
- package/dist/stories/organisms/Modals/FullPageModal.d.ts +2 -2
- package/dist/stories/organisms/Tables/DrawCardTable.d.ts +2 -2
- package/dist/stories/organisms/Tables/DrawCardTable.js +2 -2
- package/dist/stories/organisms/Tables/SortableTable.d.ts +2 -2
- package/dist/stories/organisms/Tables/SortableTable.js.map +1 -1
- package/dist/stories/organisms/Tables/TeamDrawCardTable/DesktopTableRows.d.ts +2 -2
- package/dist/stories/organisms/Tables/TeamDrawCardTable/MobileTableRows.d.ts +2 -2
- package/dist/stories/organisms/Tables/TeamDrawCardTable/TeamDrawCardTable.d.ts +2 -2
- package/dist/stories/organisms/Tables/mockData.d.ts +2 -2
- package/dist/stories/utils/constants.js.map +1 -1
- package/infrastructure/azure-pipelines.yml +112 -112
- package/package.json +99 -99
- package/public/index.html +50 -45
- package/src/App.js +25 -25
- package/src/components.jsx +52 -52
- package/src/custom.d.ts +13 -13
- package/src/index.js +17 -17
- package/src/items.jsx +1 -1
- package/src/stories/Introduction.stories.mdx +179 -179
- package/src/stories/assets/css/typography.css +5 -26
- package/src/stories/assets/css/variables.css +15 -15
- package/src/stories/assets/icon-chat-blue.svg +10 -10
- package/src/stories/assets/icons/icon-add.svg +7 -7
- package/src/stories/assets/icons/icon-availability-maybe.svg +3 -3
- package/src/stories/assets/icons/icon-availability-no.svg +3 -3
- package/src/stories/assets/icons/icon-availability-not-set.svg +8 -8
- package/src/stories/assets/icons/icon-availability-yes.svg +3 -3
- package/src/stories/assets/icons/icon-calendar.svg +4 -4
- package/src/stories/assets/icons/icon-clock.svg +7 -7
- package/src/stories/assets/icons/icon-close.svg +3 -3
- package/src/stories/assets/icons/icon-delete.svg +9 -9
- package/src/stories/assets/icons/icon-edit.svg +3 -3
- package/src/stories/assets/icons/icon-location.svg +6 -6
- package/src/stories/assets/icons/icon-message.svg +3 -3
- package/src/stories/assets/icons/icon-session.svg +3 -3
- package/src/stories/assets/icons/icon-social-media-facebook.svg +10 -10
- package/src/stories/assets/icons/icon-social-media-instagram.svg +3 -3
- package/src/stories/assets/icons/icon-social-media-tiktok.svg +10 -10
- package/src/stories/assets/icons/icon-social-media-x.svg +10 -10
- package/src/stories/assets/icons/icon-social-media-youtube.svg +3 -3
- package/src/stories/assets/icons/icon-swap.svg +3 -3
- package/src/stories/assets/icons/icon-visibility-off.svg +7 -7
- package/src/stories/assets/icons/icon-visibility.svg +6 -6
- package/src/stories/assets/utr-sports-logo.svg +9 -9
- package/src/stories/atoms/Button/Button.stories.tsx +63 -63
- package/src/stories/atoms/Button/Button.tsx +145 -145
- package/src/stories/atoms/Icons/AddIcon.tsx +13 -13
- package/src/stories/atoms/Icons/AvailabilityMaybeIcon.tsx +11 -11
- package/src/stories/atoms/Icons/AvailabilityNoIcon.tsx +11 -11
- package/src/stories/atoms/Icons/AvailabilityNotSetIcon.tsx +12 -12
- package/src/stories/atoms/Icons/AvailabilityYesIcon.tsx +11 -11
- package/src/stories/atoms/Icons/BallInMotionIcon.tsx +15 -15
- package/src/stories/atoms/Icons/CalendarIcon.tsx +11 -11
- package/src/stories/atoms/Icons/ClockIcon.tsx +14 -14
- package/src/stories/atoms/Icons/CloseIcon.tsx +11 -11
- package/src/stories/atoms/Icons/DeleteIcon.tsx +15 -15
- package/src/stories/atoms/Icons/DoublePersonIcon.tsx +20 -20
- package/src/stories/atoms/Icons/EditIcon.tsx +11 -11
- package/src/stories/atoms/Icons/Icons.stories.tsx +372 -372
- package/src/stories/atoms/Icons/LeftChevronIcon.tsx +13 -13
- package/src/stories/atoms/Icons/LineIcon.tsx +12 -12
- package/src/stories/atoms/Icons/LocationIcon.tsx +12 -12
- package/src/stories/atoms/Icons/MessageIcon.tsx +12 -12
- package/src/stories/atoms/Icons/PickleballBallIcon.tsx +22 -22
- package/src/stories/atoms/Icons/RightChevronIcon.tsx +11 -11
- package/src/stories/atoms/Icons/SessionIcon.tsx +16 -16
- package/src/stories/atoms/Icons/SinglePersonIcon.tsx +16 -16
- package/src/stories/atoms/Icons/SinglePersonV2Icon.tsx +13 -13
- package/src/stories/atoms/Icons/SocialMediaFacebookIcon.tsx +19 -19
- package/src/stories/atoms/Icons/SocialMediaInstagramIcon.tsx +11 -11
- package/src/stories/atoms/Icons/SocialMediaTikTokIcon.tsx +18 -18
- package/src/stories/atoms/Icons/SocialMediaXIcon.tsx +18 -18
- package/src/stories/atoms/Icons/SocialMediaYoutubeIcon.tsx +11 -11
- package/src/stories/atoms/Icons/SwapIcon.tsx +11 -11
- package/src/stories/atoms/Icons/SwapNoBorderIcon.tsx +14 -14
- package/src/stories/atoms/Icons/TennisBallIcon.tsx +13 -13
- package/src/stories/atoms/Icons/VerifiedIcon.tsx +13 -13
- package/src/stories/atoms/Icons/VisibilityIcon.tsx +12 -12
- package/src/stories/atoms/Icons/VisibilityOffIcon.tsx +13 -13
- package/src/stories/atoms/Icons/WinnerIndicatorIcon.tsx +39 -39
- package/src/stories/atoms/Icons/sharedTypes.tsx +12 -12
- package/src/stories/atoms/Typography/Typography.tsx +185 -185
- package/src/stories/atoms/UTMap/UTMap.stories.tsx +43 -43
- package/src/stories/atoms/UTMap/UTMap.tsx +25 -25
- package/src/stories/molecules/AvatarWithName/AvatarWithName.stories.tsx +86 -86
- package/src/stories/molecules/AvatarWithName/AvatarWithName.tsx +68 -68
- package/src/stories/molecules/Cards/Cards.stories.tsx +76 -76
- package/src/stories/molecules/Cards/ContactCard.tsx +45 -45
- package/src/stories/molecules/Cards/DrawCard.tsx +211 -211
- package/src/stories/molecules/Cards/Modals.stories.tsx +137 -137
- package/src/stories/molecules/Cards/TeamCard.tsx +14 -14
- package/src/stories/molecules/Cards/TeamDrawCard.tsx +159 -159
- package/src/stories/molecules/Cards/sharedTypes.ts +69 -69
- package/src/stories/molecules/FooterSection/FooterSection.stories.tsx +25 -25
- package/src/stories/molecules/FooterSection/FooterSection.tsx +34 -34
- package/src/stories/molecules/FooterSection/sharedTypes.ts +6 -6
- package/src/stories/molecules/GlobalNavItem/GlobalNavItem.stories.tsx +22 -22
- package/src/stories/molecules/GlobalNavItem/GlobalNavItem.tsx +51 -51
- package/src/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.stories.tsx +96 -96
- package/src/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.tsx +112 -112
- package/src/stories/organisms/Footer/Footer.stories.tsx +63 -63
- package/src/stories/organisms/Footer/Footer.tsx +155 -165
- package/src/stories/organisms/Footer/sharedTypes.ts +17 -17
- package/src/stories/organisms/GlobalNavigation/GlobalNavigation.stories.tsx +210 -210
- package/src/stories/organisms/GlobalNavigation/GlobalNavigation.tsx +120 -120
- package/src/stories/organisms/Modals/FullPageModal.tsx +93 -93
- package/src/stories/organisms/Modals/Modals.stories.tsx +138 -138
- package/src/stories/organisms/Modals/sharedTypes.ts +15 -15
- package/src/stories/organisms/Tables/DrawCardTable.tsx +92 -92
- package/src/stories/organisms/Tables/SortableTable.tsx +119 -119
- package/src/stories/organisms/Tables/Tables.stories.tsx +104 -104
- package/src/stories/organisms/Tables/TeamDrawCardTable/DesktopTableRows.tsx +120 -120
- package/src/stories/organisms/Tables/TeamDrawCardTable/MobileTableRows.tsx +67 -67
- package/src/stories/organisms/Tables/TeamDrawCardTable/TeamDrawCardTable.tsx +24 -24
- package/src/stories/organisms/Tables/mockData.tsx +131 -131
- package/src/stories/organisms/Tables/sharedTypes.ts +17 -17
- package/src/stories/utils/constants.ts +31 -31
- package/src/stories/utils/getArrayWithIds.ts +1 -1
- package/src/stories/utils/useScreenSize.ts +28 -28
- package/src/types/tableDataTypes.ts +42 -42
- package/tsconfig.json +23 -23
- package/dist/stories/atoms/Map/Map.d.ts +0 -7
- package/dist/stories/atoms/Map/Map.js +0 -9
- package/dist/stories/atoms/Map/Map.js.map +0 -1
- package/dist/stories/atoms/Map/Map.stories.d.ts +0 -9
- package/dist/stories/atoms/Map/Map.stories.js +0 -36
- package/dist/stories/atoms/Map/Map.stories.js.map +0 -1
- package/dist/stories/organisms/Tables/TeamDrawCardTable.d.ts +0 -3
- package/dist/stories/organisms/Tables/TeamDrawCardTable.js +0 -126
- package/dist/stories/organisms/Tables/TeamDrawCardTable.js.map +0 -1
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
import AvatarWithName, { AvatarWithNameProps } from './AvatarWithName';
|
|
4
|
-
|
|
5
|
-
// Default
|
|
6
|
-
export default {
|
|
7
|
-
title: 'Molecules/AvatarWithName',
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
// Templates
|
|
11
|
-
function AvatarWithNameTemplate(args: AvatarWithNameProps) {
|
|
12
|
-
return <AvatarWithName {...args} />;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// Stories
|
|
16
|
-
export const Default = AvatarWithNameTemplate.bind({});
|
|
17
|
-
Default.args = {
|
|
18
|
-
playerName: "Julia Gulia",
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export const WithImage = AvatarWithNameTemplate.bind({});
|
|
22
|
-
WithImage.args = {
|
|
23
|
-
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.png',
|
|
24
|
-
playerName: "Julia Gulia",
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export const WithCustomTypography = AvatarWithNameTemplate.bind({});
|
|
28
|
-
WithCustomTypography.args = {
|
|
29
|
-
playerName: "Julia Gulia",
|
|
30
|
-
avatarFontCategory: "secondary",
|
|
31
|
-
avatarFontSize: "large-medium",
|
|
32
|
-
fontCategory: "primary",
|
|
33
|
-
fontSize: "medium-book"
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export const WithCustomAvatarSize = AvatarWithNameTemplate.bind({});
|
|
37
|
-
WithCustomAvatarSize.args = {
|
|
38
|
-
playerName: "Julia Gulia",
|
|
39
|
-
avatarWidth: '26px',
|
|
40
|
-
avatarHeight: '26px',
|
|
41
|
-
avatarFontCategory: "primary",
|
|
42
|
-
avatarFontSize: "small-book",
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export const WithAvatarOnly = AvatarWithNameTemplate.bind({});
|
|
46
|
-
WithAvatarOnly.args = {
|
|
47
|
-
avatarOnly: true,
|
|
48
|
-
playerName: "Julia Gulia",
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
export const WithNoImage = AvatarWithNameTemplate.bind({});
|
|
52
|
-
WithNoImage.args = {
|
|
53
|
-
imgSrc: '',
|
|
54
|
-
playerName: "Julia Gulia",
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
export const WithBrokenImage = AvatarWithNameTemplate.bind({});
|
|
58
|
-
WithBrokenImage.args = {
|
|
59
|
-
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.pn',
|
|
60
|
-
playerName: "Julia Gulia",
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export const WithLink = AvatarWithNameTemplate.bind({});
|
|
64
|
-
WithLink.args = {
|
|
65
|
-
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.png',
|
|
66
|
-
href: "https://www.reddit.com",
|
|
67
|
-
playerName: "Julia Gulia",
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export const WithLowercaseName = AvatarWithNameTemplate.bind({});
|
|
71
|
-
WithLowercaseName.args = {
|
|
72
|
-
playerName: "julia gulia",
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
export const WithLongName = AvatarWithNameTemplate.bind({});
|
|
76
|
-
WithLongName.args = {
|
|
77
|
-
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.png',
|
|
78
|
-
playerName: "Julia Guliauliauliauliauliauliauliauliauliaulia",
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
export const WithCustomMaxCharacterLimit = AvatarWithNameTemplate.bind({});
|
|
82
|
-
WithCustomMaxCharacterLimit.args = {
|
|
83
|
-
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.png',
|
|
84
|
-
playerName: "Julia Guliauliauliauliauliauliauliauliauliaulia",
|
|
85
|
-
maxCharacterLimit: 7
|
|
86
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import AvatarWithName, { AvatarWithNameProps } from './AvatarWithName';
|
|
4
|
+
|
|
5
|
+
// Default
|
|
6
|
+
export default {
|
|
7
|
+
title: 'Molecules/AvatarWithName',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
// Templates
|
|
11
|
+
function AvatarWithNameTemplate(args: AvatarWithNameProps) {
|
|
12
|
+
return <AvatarWithName {...args} />;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Stories
|
|
16
|
+
export const Default = AvatarWithNameTemplate.bind({});
|
|
17
|
+
Default.args = {
|
|
18
|
+
playerName: "Julia Gulia",
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const WithImage = AvatarWithNameTemplate.bind({});
|
|
22
|
+
WithImage.args = {
|
|
23
|
+
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.png',
|
|
24
|
+
playerName: "Julia Gulia",
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const WithCustomTypography = AvatarWithNameTemplate.bind({});
|
|
28
|
+
WithCustomTypography.args = {
|
|
29
|
+
playerName: "Julia Gulia",
|
|
30
|
+
avatarFontCategory: "secondary",
|
|
31
|
+
avatarFontSize: "large-medium",
|
|
32
|
+
fontCategory: "primary",
|
|
33
|
+
fontSize: "medium-book"
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export const WithCustomAvatarSize = AvatarWithNameTemplate.bind({});
|
|
37
|
+
WithCustomAvatarSize.args = {
|
|
38
|
+
playerName: "Julia Gulia",
|
|
39
|
+
avatarWidth: '26px',
|
|
40
|
+
avatarHeight: '26px',
|
|
41
|
+
avatarFontCategory: "primary",
|
|
42
|
+
avatarFontSize: "small-book",
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const WithAvatarOnly = AvatarWithNameTemplate.bind({});
|
|
46
|
+
WithAvatarOnly.args = {
|
|
47
|
+
avatarOnly: true,
|
|
48
|
+
playerName: "Julia Gulia",
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const WithNoImage = AvatarWithNameTemplate.bind({});
|
|
52
|
+
WithNoImage.args = {
|
|
53
|
+
imgSrc: '',
|
|
54
|
+
playerName: "Julia Gulia",
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const WithBrokenImage = AvatarWithNameTemplate.bind({});
|
|
58
|
+
WithBrokenImage.args = {
|
|
59
|
+
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.pn',
|
|
60
|
+
playerName: "Julia Gulia",
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export const WithLink = AvatarWithNameTemplate.bind({});
|
|
64
|
+
WithLink.args = {
|
|
65
|
+
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.png',
|
|
66
|
+
href: "https://www.reddit.com",
|
|
67
|
+
playerName: "Julia Gulia",
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export const WithLowercaseName = AvatarWithNameTemplate.bind({});
|
|
71
|
+
WithLowercaseName.args = {
|
|
72
|
+
playerName: "julia gulia",
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export const WithLongName = AvatarWithNameTemplate.bind({});
|
|
76
|
+
WithLongName.args = {
|
|
77
|
+
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.png',
|
|
78
|
+
playerName: "Julia Guliauliauliauliauliauliauliauliauliaulia",
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const WithCustomMaxCharacterLimit = AvatarWithNameTemplate.bind({});
|
|
82
|
+
WithCustomMaxCharacterLimit.args = {
|
|
83
|
+
imgSrc: 'https://ci-cdn.universaltennis.com/v1/player/329903/images/profile/7839bf68-b56f-486a-88ab-a52debbac709.png',
|
|
84
|
+
playerName: "Julia Guliauliauliauliauliauliauliauliauliaulia",
|
|
85
|
+
maxCharacterLimit: 7
|
|
86
|
+
};
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
import Avatar from '@mui/material/Avatar';
|
|
4
|
-
import Box from '@mui/material/Box';
|
|
5
|
-
import Link from '@mui/material/Link';
|
|
6
|
-
|
|
7
|
-
import Typography from '../../atoms/Typography/Typography';
|
|
8
|
-
|
|
9
|
-
export interface AvatarWithNameProps {
|
|
10
|
-
avatarOnly: boolean;
|
|
11
|
-
avatarFontCategory: string;
|
|
12
|
-
avatarFontSize: string;
|
|
13
|
-
avatarWidth: string;
|
|
14
|
-
avatarHeight: string;
|
|
15
|
-
href: string,
|
|
16
|
-
imgSrc: string;
|
|
17
|
-
playerName: string;
|
|
18
|
-
fontCategory: string;
|
|
19
|
-
fontSize: string;
|
|
20
|
-
maxCharacterLimit: number;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export default function AvatarWithName({
|
|
24
|
-
avatarOnly = false, imgSrc = '', playerName = '', avatarFontSize = 'medium-medium', href = '',
|
|
25
|
-
avatarFontCategory = 'primary', avatarWidth = '40px', avatarHeight = '40px', fontSize = 'small-medium', fontCategory = 'secondary',
|
|
26
|
-
maxCharacterLimit = 24
|
|
27
|
-
}) {
|
|
28
|
-
const getAcronym = (str: string) => {
|
|
29
|
-
const acronym = str?.split(' ').map((word) => word.charAt(0)).join('');
|
|
30
|
-
return acronym;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const getTruncatedName = (name: string, characterLimit: number) => (
|
|
34
|
-
name.length > characterLimit ? `${name.slice(0, characterLimit)}...` : name
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
const AvatarComponent = (
|
|
38
|
-
<Avatar
|
|
39
|
-
sx={{
|
|
40
|
-
backgroundColor: 'var(--black)', marginRight: '10px', width: `${avatarWidth}`, height: `${avatarHeight}`
|
|
41
|
-
}}
|
|
42
|
-
src={imgSrc}
|
|
43
|
-
>
|
|
44
|
-
<Typography
|
|
45
|
-
sx={{ textTransform: 'uppercase' }}
|
|
46
|
-
size={avatarFontSize}
|
|
47
|
-
category={avatarFontCategory}
|
|
48
|
-
>
|
|
49
|
-
{getAcronym(playerName)}
|
|
50
|
-
</Typography>
|
|
51
|
-
</Avatar>
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
return (
|
|
55
|
-
avatarOnly ? (
|
|
56
|
-
AvatarComponent
|
|
57
|
-
) : (
|
|
58
|
-
<Box display="flex" alignItems="center">
|
|
59
|
-
{AvatarComponent}
|
|
60
|
-
{href ? (
|
|
61
|
-
<Link href={href} sx={{ textDecoration: 'none' }}>
|
|
62
|
-
<Typography category={fontCategory} size={fontSize}>{getTruncatedName(playerName, maxCharacterLimit)}</Typography>
|
|
63
|
-
</Link>
|
|
64
|
-
) : <Typography category={fontCategory} size={fontSize}>{getTruncatedName(playerName, maxCharacterLimit)}</Typography>}
|
|
65
|
-
</Box>
|
|
66
|
-
)
|
|
67
|
-
);
|
|
68
|
-
}
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import Avatar from '@mui/material/Avatar';
|
|
4
|
+
import Box from '@mui/material/Box';
|
|
5
|
+
import Link from '@mui/material/Link';
|
|
6
|
+
|
|
7
|
+
import Typography from '../../atoms/Typography/Typography';
|
|
8
|
+
|
|
9
|
+
export interface AvatarWithNameProps {
|
|
10
|
+
avatarOnly: boolean;
|
|
11
|
+
avatarFontCategory: string;
|
|
12
|
+
avatarFontSize: string;
|
|
13
|
+
avatarWidth: string;
|
|
14
|
+
avatarHeight: string;
|
|
15
|
+
href: string,
|
|
16
|
+
imgSrc: string;
|
|
17
|
+
playerName: string;
|
|
18
|
+
fontCategory: string;
|
|
19
|
+
fontSize: string;
|
|
20
|
+
maxCharacterLimit: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default function AvatarWithName({
|
|
24
|
+
avatarOnly = false, imgSrc = '', playerName = '', avatarFontSize = 'medium-medium', href = '',
|
|
25
|
+
avatarFontCategory = 'primary', avatarWidth = '40px', avatarHeight = '40px', fontSize = 'small-medium', fontCategory = 'secondary',
|
|
26
|
+
maxCharacterLimit = 24
|
|
27
|
+
}) {
|
|
28
|
+
const getAcronym = (str: string) => {
|
|
29
|
+
const acronym = str?.split(' ').map((word) => word.charAt(0)).join('');
|
|
30
|
+
return acronym;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const getTruncatedName = (name: string, characterLimit: number) => (
|
|
34
|
+
name.length > characterLimit ? `${name.slice(0, characterLimit)}...` : name
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const AvatarComponent = (
|
|
38
|
+
<Avatar
|
|
39
|
+
sx={{
|
|
40
|
+
backgroundColor: 'var(--black)', marginRight: '10px', width: `${avatarWidth}`, height: `${avatarHeight}`
|
|
41
|
+
}}
|
|
42
|
+
src={imgSrc}
|
|
43
|
+
>
|
|
44
|
+
<Typography
|
|
45
|
+
sx={{ textTransform: 'uppercase' }}
|
|
46
|
+
size={avatarFontSize}
|
|
47
|
+
category={avatarFontCategory}
|
|
48
|
+
>
|
|
49
|
+
{getAcronym(playerName)}
|
|
50
|
+
</Typography>
|
|
51
|
+
</Avatar>
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
avatarOnly ? (
|
|
56
|
+
AvatarComponent
|
|
57
|
+
) : (
|
|
58
|
+
<Box display="flex" alignItems="center">
|
|
59
|
+
{AvatarComponent}
|
|
60
|
+
{href ? (
|
|
61
|
+
<Link href={href} sx={{ textDecoration: 'none' }}>
|
|
62
|
+
<Typography category={fontCategory} size={fontSize}>{getTruncatedName(playerName, maxCharacterLimit)}</Typography>
|
|
63
|
+
</Link>
|
|
64
|
+
) : <Typography category={fontCategory} size={fontSize}>{getTruncatedName(playerName, maxCharacterLimit)}</Typography>}
|
|
65
|
+
</Box>
|
|
66
|
+
)
|
|
67
|
+
);
|
|
68
|
+
}
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
import ContactCard from './ContactCard';
|
|
4
|
-
import TeamCard from './TeamCard';
|
|
5
|
-
import DrawCard from './DrawCard';
|
|
6
|
-
import { DrawCardProps, TeamCardProps, ContactCardProps } from "./sharedTypes";
|
|
7
|
-
|
|
8
|
-
// Default
|
|
9
|
-
export default {
|
|
10
|
-
title: 'Molecules/Cards',
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
// Templates
|
|
14
|
-
function ContactCardTemplate(args: ContactCardProps) {
|
|
15
|
-
return <ContactCard {...args} />;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function TeamCardTemplate(args: TeamCardProps) {
|
|
19
|
-
return <TeamCard {...args} />;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function DrawCardTemplate(args: DrawCardProps) {
|
|
23
|
-
return (
|
|
24
|
-
<div style={{ width: '372px' }}>
|
|
25
|
-
<DrawCard {...args} />
|
|
26
|
-
</div>
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Stories
|
|
31
|
-
export const Contact = ContactCardTemplate.bind({});
|
|
32
|
-
Contact.args = {
|
|
33
|
-
name: "Jessica Carson",
|
|
34
|
-
phone: "+1 222-234-4567",
|
|
35
|
-
email: "test@sample.com"
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export const Team = TeamCardTemplate.bind({});
|
|
39
|
-
Team.args = {
|
|
40
|
-
title: 'team 1',
|
|
41
|
-
description: 'Captained by Lenny McDowell, Josh Palmer, and Michael Ballast. Requires a passcode for registration.'
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export const Draw = DrawCardTemplate.bind({});
|
|
45
|
-
Draw.args = {
|
|
46
|
-
options: [
|
|
47
|
-
{
|
|
48
|
-
id: 1,
|
|
49
|
-
label: 'Team 1',
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
id: 2,
|
|
53
|
-
label: 'Team 2',
|
|
54
|
-
}
|
|
55
|
-
],
|
|
56
|
-
selectedOptions: {
|
|
57
|
-
optionOne: 1,
|
|
58
|
-
optionTwo: 2,
|
|
59
|
-
},
|
|
60
|
-
dateLabel: 'Dec 20 at 9:00am',
|
|
61
|
-
locationLabel: 'Taube Tennis Center',
|
|
62
|
-
emptyLabel: 'Select a team',
|
|
63
|
-
isManaging: false,
|
|
64
|
-
isSelectActive: true,
|
|
65
|
-
position1Team: {
|
|
66
|
-
points: 2,
|
|
67
|
-
name: 'Team Blue'
|
|
68
|
-
},
|
|
69
|
-
position2Team: {
|
|
70
|
-
points: 4,
|
|
71
|
-
name: 'Team Red'
|
|
72
|
-
},
|
|
73
|
-
isPosition1Winner: false,
|
|
74
|
-
isPosition2Winner: true,
|
|
75
|
-
onViewClick: () => {}
|
|
76
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import ContactCard from './ContactCard';
|
|
4
|
+
import TeamCard from './TeamCard';
|
|
5
|
+
import DrawCard from './DrawCard';
|
|
6
|
+
import { DrawCardProps, TeamCardProps, ContactCardProps } from "./sharedTypes";
|
|
7
|
+
|
|
8
|
+
// Default
|
|
9
|
+
export default {
|
|
10
|
+
title: 'Molecules/Cards',
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// Templates
|
|
14
|
+
function ContactCardTemplate(args: ContactCardProps) {
|
|
15
|
+
return <ContactCard {...args} />;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function TeamCardTemplate(args: TeamCardProps) {
|
|
19
|
+
return <TeamCard {...args} />;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function DrawCardTemplate(args: DrawCardProps) {
|
|
23
|
+
return (
|
|
24
|
+
<div style={{ width: '372px' }}>
|
|
25
|
+
<DrawCard {...args} />
|
|
26
|
+
</div>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Stories
|
|
31
|
+
export const Contact = ContactCardTemplate.bind({});
|
|
32
|
+
Contact.args = {
|
|
33
|
+
name: "Jessica Carson",
|
|
34
|
+
phone: "+1 222-234-4567",
|
|
35
|
+
email: "test@sample.com"
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const Team = TeamCardTemplate.bind({});
|
|
39
|
+
Team.args = {
|
|
40
|
+
title: 'team 1',
|
|
41
|
+
description: 'Captained by Lenny McDowell, Josh Palmer, and Michael Ballast. Requires a passcode for registration.'
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const Draw = DrawCardTemplate.bind({});
|
|
45
|
+
Draw.args = {
|
|
46
|
+
options: [
|
|
47
|
+
{
|
|
48
|
+
id: 1,
|
|
49
|
+
label: 'Team 1',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 2,
|
|
53
|
+
label: 'Team 2',
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
selectedOptions: {
|
|
57
|
+
optionOne: 1,
|
|
58
|
+
optionTwo: 2,
|
|
59
|
+
},
|
|
60
|
+
dateLabel: 'Dec 20 at 9:00am',
|
|
61
|
+
locationLabel: 'Taube Tennis Center',
|
|
62
|
+
emptyLabel: 'Select a team',
|
|
63
|
+
isManaging: false,
|
|
64
|
+
isSelectActive: true,
|
|
65
|
+
position1Team: {
|
|
66
|
+
points: 2,
|
|
67
|
+
name: 'Team Blue'
|
|
68
|
+
},
|
|
69
|
+
position2Team: {
|
|
70
|
+
points: 4,
|
|
71
|
+
name: 'Team Red'
|
|
72
|
+
},
|
|
73
|
+
isPosition1Winner: false,
|
|
74
|
+
isPosition2Winner: true,
|
|
75
|
+
onViewClick: () => {}
|
|
76
|
+
};
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import parsePhoneNumber from 'libphonenumber-js';
|
|
3
|
-
import LocalPhoneOutlinedIcon from '@mui/icons-material/LocalPhoneOutlined';
|
|
4
|
-
import EmailOutlinedIcon from '@mui/icons-material/EmailOutlined';
|
|
5
|
-
import Link from '@mui/material/Link';
|
|
6
|
-
import Button from '../../atoms/Button/Button';
|
|
7
|
-
import Typography from '../../atoms/Typography/Typography';
|
|
8
|
-
import ChatIcon from '../../assets/icon-chat-blue.svg';
|
|
9
|
-
|
|
10
|
-
import { StyledCard } from './shared';
|
|
11
|
-
import { ContactCardProps } from './sharedTypes';
|
|
12
|
-
|
|
13
|
-
export default function ContactCard({
|
|
14
|
-
name, phone, email, onMessageClick, ...props
|
|
15
|
-
}: ContactCardProps) {
|
|
16
|
-
const firstName = name.split(" ")[0];
|
|
17
|
-
const parsedNumber = parsePhoneNumber(phone || '');
|
|
18
|
-
const phoneNumber = parsedNumber?.formatInternational();
|
|
19
|
-
|
|
20
|
-
return (
|
|
21
|
-
<StyledCard {...props}>
|
|
22
|
-
<Typography style={{ marginBottom: '8px' }} category="secondary" size="medium-medium">{name}</Typography>
|
|
23
|
-
{phoneNumber && (
|
|
24
|
-
<Link sx={{ display: 'flex' }} mt={1} fontSize={14} href={`tel:${phone}`}>
|
|
25
|
-
<LocalPhoneOutlinedIcon fontSize="small" sx={{ mr: 1 }} />
|
|
26
|
-
<Typography category="secondary" size="x-small-book">{phoneNumber}</Typography>
|
|
27
|
-
</Link>
|
|
28
|
-
)}
|
|
29
|
-
{email && (
|
|
30
|
-
<Link sx={{ display: 'flex' }} mt={1} fontSize={14} href={`mailto:${email}`}>
|
|
31
|
-
<EmailOutlinedIcon fontSize="small" sx={{ mr: 1 }} />
|
|
32
|
-
<Typography category="secondary" size="x-small-book">{email}</Typography>
|
|
33
|
-
</Link>
|
|
34
|
-
)}
|
|
35
|
-
<Button onClick={onMessageClick} category="link" style={{ marginTop: '8px' }}>
|
|
36
|
-
<>
|
|
37
|
-
<img src={ChatIcon} alt="message" style={{ width: '20px' }} />
|
|
38
|
-
<Typography style={{ paddingLeft: '8px' }} category="secondary" size="x-small-book">
|
|
39
|
-
{`Message ${firstName}`}
|
|
40
|
-
</Typography>
|
|
41
|
-
</>
|
|
42
|
-
</Button>
|
|
43
|
-
</StyledCard>
|
|
44
|
-
);
|
|
45
|
-
}
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import parsePhoneNumber from 'libphonenumber-js';
|
|
3
|
+
import LocalPhoneOutlinedIcon from '@mui/icons-material/LocalPhoneOutlined';
|
|
4
|
+
import EmailOutlinedIcon from '@mui/icons-material/EmailOutlined';
|
|
5
|
+
import Link from '@mui/material/Link';
|
|
6
|
+
import Button from '../../atoms/Button/Button';
|
|
7
|
+
import Typography from '../../atoms/Typography/Typography';
|
|
8
|
+
import ChatIcon from '../../assets/icon-chat-blue.svg';
|
|
9
|
+
|
|
10
|
+
import { StyledCard } from './shared';
|
|
11
|
+
import { ContactCardProps } from './sharedTypes';
|
|
12
|
+
|
|
13
|
+
export default function ContactCard({
|
|
14
|
+
name, phone, email, onMessageClick, ...props
|
|
15
|
+
}: ContactCardProps) {
|
|
16
|
+
const firstName = name.split(" ")[0];
|
|
17
|
+
const parsedNumber = parsePhoneNumber(phone || '');
|
|
18
|
+
const phoneNumber = parsedNumber?.formatInternational();
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<StyledCard {...props}>
|
|
22
|
+
<Typography style={{ marginBottom: '8px' }} category="secondary" size="medium-medium">{name}</Typography>
|
|
23
|
+
{phoneNumber && (
|
|
24
|
+
<Link sx={{ display: 'flex' }} mt={1} fontSize={14} href={`tel:${phone}`}>
|
|
25
|
+
<LocalPhoneOutlinedIcon fontSize="small" sx={{ mr: 1 }} />
|
|
26
|
+
<Typography category="secondary" size="x-small-book">{phoneNumber}</Typography>
|
|
27
|
+
</Link>
|
|
28
|
+
)}
|
|
29
|
+
{email && (
|
|
30
|
+
<Link sx={{ display: 'flex' }} mt={1} fontSize={14} href={`mailto:${email}`}>
|
|
31
|
+
<EmailOutlinedIcon fontSize="small" sx={{ mr: 1 }} />
|
|
32
|
+
<Typography category="secondary" size="x-small-book">{email}</Typography>
|
|
33
|
+
</Link>
|
|
34
|
+
)}
|
|
35
|
+
<Button onClick={onMessageClick} category="link" style={{ marginTop: '8px' }}>
|
|
36
|
+
<>
|
|
37
|
+
<img src={ChatIcon} alt="message" style={{ width: '20px' }} />
|
|
38
|
+
<Typography style={{ paddingLeft: '8px' }} category="secondary" size="x-small-book">
|
|
39
|
+
{`Message ${firstName}`}
|
|
40
|
+
</Typography>
|
|
41
|
+
</>
|
|
42
|
+
</Button>
|
|
43
|
+
</StyledCard>
|
|
44
|
+
);
|
|
45
|
+
}
|