@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.
Files changed (227) hide show
  1. package/.eslintignore +1 -1
  2. package/.eslintrc.js +73 -73
  3. package/.storybook/main.js +16 -16
  4. package/.storybook/preview.js +17 -17
  5. package/.storybook/typography.css +5 -26
  6. package/.storybook/variables.css +16 -16
  7. package/README.md +129 -129
  8. package/dist/App.d.ts +1 -1
  9. package/dist/stories/Button.d.ts +27 -0
  10. package/dist/stories/Button.js +51 -0
  11. package/dist/stories/Button.js.map +1 -0
  12. package/dist/stories/Button.stories.d.ts +15 -0
  13. package/dist/stories/Button.stories.js +34 -0
  14. package/dist/stories/Button.stories.js.map +1 -0
  15. package/dist/stories/Header.d.ts +19 -0
  16. package/dist/stories/Header.js +31 -0
  17. package/dist/stories/Header.js.map +1 -0
  18. package/dist/stories/Header.stories.d.ts +11 -0
  19. package/dist/stories/Header.stories.js +20 -0
  20. package/dist/stories/Header.stories.js.map +1 -0
  21. package/dist/stories/Page.d.ts +1 -0
  22. package/dist/stories/Page.js +38 -0
  23. package/dist/stories/Page.js.map +1 -0
  24. package/dist/stories/Page.stories.d.ts +11 -0
  25. package/dist/stories/Page.stories.js +30 -0
  26. package/dist/stories/Page.stories.js.map +1 -0
  27. package/dist/stories/assets/comments.svg +1 -0
  28. package/dist/stories/assets/css/typography.css +5 -26
  29. package/dist/stories/assets/css/variables.css +15 -15
  30. package/dist/stories/assets/direction.svg +1 -0
  31. package/dist/stories/assets/icon-chat-blue.svg +10 -10
  32. package/dist/stories/assets/utr-sports-logo.svg +9 -9
  33. package/dist/stories/atoms/Button/Button.d.ts +1 -1
  34. package/dist/stories/atoms/Button/Button.js.map +1 -1
  35. package/dist/stories/atoms/Button/index.d.ts +1 -0
  36. package/dist/stories/atoms/Button/index.js +2 -0
  37. package/dist/stories/atoms/Button/index.js.map +1 -0
  38. package/dist/stories/atoms/Button.d.ts +7 -0
  39. package/dist/stories/atoms/Button.js +20 -0
  40. package/dist/stories/atoms/Button.js.map +1 -0
  41. package/dist/stories/atoms/Button.stories.d.ts +13 -0
  42. package/dist/stories/atoms/Button.stories.js +22 -0
  43. package/dist/stories/atoms/Button.stories.js.map +1 -0
  44. package/dist/stories/atoms/Icons/AddIcon.d.ts +2 -2
  45. package/dist/stories/atoms/Icons/AvailabilityMaybeIcon.d.ts +2 -2
  46. package/dist/stories/atoms/Icons/AvailabilityNoIcon.d.ts +2 -2
  47. package/dist/stories/atoms/Icons/AvailabilityNotSetIcon.d.ts +2 -2
  48. package/dist/stories/atoms/Icons/AvailabilityYesIcon.d.ts +2 -2
  49. package/dist/stories/atoms/Icons/BallInMotionIcon.d.ts +2 -2
  50. package/dist/stories/atoms/Icons/CalendarIcon.d.ts +2 -2
  51. package/dist/stories/atoms/Icons/ClockIcon.d.ts +2 -2
  52. package/dist/stories/atoms/Icons/CloseIcon.d.ts +2 -2
  53. package/dist/stories/atoms/Icons/DeleteIcon.d.ts +2 -2
  54. package/dist/stories/atoms/Icons/DoublePersonIcon.d.ts +2 -2
  55. package/dist/stories/atoms/Icons/EditIcon.d.ts +2 -2
  56. package/dist/stories/atoms/Icons/LeftChevronIcon.d.ts +2 -2
  57. package/dist/stories/atoms/Icons/LineIcon.d.ts +2 -2
  58. package/dist/stories/atoms/Icons/LocationIcon.d.ts +2 -2
  59. package/dist/stories/atoms/Icons/MessageIcon.d.ts +2 -2
  60. package/dist/stories/atoms/Icons/PickleballBallIcon.d.ts +2 -2
  61. package/dist/stories/atoms/Icons/RightChevronIcon.d.ts +2 -2
  62. package/dist/stories/atoms/Icons/SessionIcon.d.ts +2 -2
  63. package/dist/stories/atoms/Icons/SinglePersonIcon.d.ts +2 -2
  64. package/dist/stories/atoms/Icons/SinglePersonV2Icon.d.ts +2 -2
  65. package/dist/stories/atoms/Icons/SocialMediaFacebookIcon.d.ts +2 -2
  66. package/dist/stories/atoms/Icons/SocialMediaInstagramIcon.d.ts +2 -2
  67. package/dist/stories/atoms/Icons/SocialMediaTikTokIcon.d.ts +2 -2
  68. package/dist/stories/atoms/Icons/SocialMediaXIcon.d.ts +2 -2
  69. package/dist/stories/atoms/Icons/SocialMediaYoutubeIcon.d.ts +2 -2
  70. package/dist/stories/atoms/Icons/SwapIcon.d.ts +2 -2
  71. package/dist/stories/atoms/Icons/SwapNoBorderIcon.d.ts +2 -2
  72. package/dist/stories/atoms/Icons/TennisBallIcon.d.ts +2 -2
  73. package/dist/stories/atoms/Icons/VerifiedIcon.d.ts +2 -2
  74. package/dist/stories/atoms/Icons/VisibilityIcon.d.ts +2 -2
  75. package/dist/stories/atoms/Icons/VisibilityOffIcon.d.ts +2 -2
  76. package/dist/stories/atoms/Icons/WinnerIndicatorIcon.d.ts +2 -2
  77. package/dist/stories/atoms/Typography/Typography.d.ts +2 -2
  78. package/dist/stories/atoms/Typography/Typography.js.map +1 -1
  79. package/dist/stories/atoms/Typography/index.d.ts +1 -0
  80. package/dist/stories/atoms/Typography/index.js +2 -0
  81. package/dist/stories/atoms/Typography/index.js.map +1 -0
  82. package/dist/stories/atoms/UTMap/UTMap.d.ts +2 -2
  83. package/dist/stories/molecules/AvatarWithName/AvatarWithName.d.ts +2 -2
  84. package/dist/stories/molecules/Cards/ContactCard.d.ts +2 -2
  85. package/dist/stories/molecules/Cards/DrawCard.d.ts +2 -2
  86. package/dist/stories/molecules/Cards/DrawCard.js.map +1 -1
  87. package/dist/stories/molecules/Cards/TeamCard.d.ts +2 -2
  88. package/dist/stories/molecules/Cards/TeamDrawCard.d.ts +2 -2
  89. package/dist/stories/molecules/Cards/shared.d.ts +1 -4
  90. package/dist/stories/molecules/FooterSection/FooterSection.d.ts +2 -2
  91. package/dist/stories/molecules/GlobalNavItem/GlobalNavItem.d.ts +2 -2
  92. package/dist/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.d.ts +2 -2
  93. package/dist/stories/organisms/Footer/Footer.d.ts +2 -2
  94. package/dist/stories/organisms/Footer/Footer.js +2 -6
  95. package/dist/stories/organisms/Footer/Footer.js.map +1 -1
  96. package/dist/stories/organisms/GlobalNavigation/GlobalNavigation.d.ts +2 -2
  97. package/dist/stories/organisms/GlobalNavigation/GlobalNavigation.js.map +1 -1
  98. package/dist/stories/organisms/Modals/FullPageModal.d.ts +2 -2
  99. package/dist/stories/organisms/Tables/DrawCardTable.d.ts +2 -2
  100. package/dist/stories/organisms/Tables/DrawCardTable.js +2 -2
  101. package/dist/stories/organisms/Tables/SortableTable.d.ts +2 -2
  102. package/dist/stories/organisms/Tables/SortableTable.js.map +1 -1
  103. package/dist/stories/organisms/Tables/TeamDrawCardTable/DesktopTableRows.d.ts +2 -2
  104. package/dist/stories/organisms/Tables/TeamDrawCardTable/MobileTableRows.d.ts +2 -2
  105. package/dist/stories/organisms/Tables/TeamDrawCardTable/TeamDrawCardTable.d.ts +2 -2
  106. package/dist/stories/organisms/Tables/mockData.d.ts +2 -2
  107. package/dist/stories/utils/constants.js.map +1 -1
  108. package/infrastructure/azure-pipelines.yml +112 -112
  109. package/package.json +99 -99
  110. package/public/index.html +50 -45
  111. package/src/App.js +25 -25
  112. package/src/components.jsx +52 -52
  113. package/src/custom.d.ts +13 -13
  114. package/src/index.js +17 -17
  115. package/src/items.jsx +1 -1
  116. package/src/stories/Introduction.stories.mdx +179 -179
  117. package/src/stories/assets/css/typography.css +5 -26
  118. package/src/stories/assets/css/variables.css +15 -15
  119. package/src/stories/assets/icon-chat-blue.svg +10 -10
  120. package/src/stories/assets/icons/icon-add.svg +7 -7
  121. package/src/stories/assets/icons/icon-availability-maybe.svg +3 -3
  122. package/src/stories/assets/icons/icon-availability-no.svg +3 -3
  123. package/src/stories/assets/icons/icon-availability-not-set.svg +8 -8
  124. package/src/stories/assets/icons/icon-availability-yes.svg +3 -3
  125. package/src/stories/assets/icons/icon-calendar.svg +4 -4
  126. package/src/stories/assets/icons/icon-clock.svg +7 -7
  127. package/src/stories/assets/icons/icon-close.svg +3 -3
  128. package/src/stories/assets/icons/icon-delete.svg +9 -9
  129. package/src/stories/assets/icons/icon-edit.svg +3 -3
  130. package/src/stories/assets/icons/icon-location.svg +6 -6
  131. package/src/stories/assets/icons/icon-message.svg +3 -3
  132. package/src/stories/assets/icons/icon-session.svg +3 -3
  133. package/src/stories/assets/icons/icon-social-media-facebook.svg +10 -10
  134. package/src/stories/assets/icons/icon-social-media-instagram.svg +3 -3
  135. package/src/stories/assets/icons/icon-social-media-tiktok.svg +10 -10
  136. package/src/stories/assets/icons/icon-social-media-x.svg +10 -10
  137. package/src/stories/assets/icons/icon-social-media-youtube.svg +3 -3
  138. package/src/stories/assets/icons/icon-swap.svg +3 -3
  139. package/src/stories/assets/icons/icon-visibility-off.svg +7 -7
  140. package/src/stories/assets/icons/icon-visibility.svg +6 -6
  141. package/src/stories/assets/utr-sports-logo.svg +9 -9
  142. package/src/stories/atoms/Button/Button.stories.tsx +63 -63
  143. package/src/stories/atoms/Button/Button.tsx +145 -145
  144. package/src/stories/atoms/Icons/AddIcon.tsx +13 -13
  145. package/src/stories/atoms/Icons/AvailabilityMaybeIcon.tsx +11 -11
  146. package/src/stories/atoms/Icons/AvailabilityNoIcon.tsx +11 -11
  147. package/src/stories/atoms/Icons/AvailabilityNotSetIcon.tsx +12 -12
  148. package/src/stories/atoms/Icons/AvailabilityYesIcon.tsx +11 -11
  149. package/src/stories/atoms/Icons/BallInMotionIcon.tsx +15 -15
  150. package/src/stories/atoms/Icons/CalendarIcon.tsx +11 -11
  151. package/src/stories/atoms/Icons/ClockIcon.tsx +14 -14
  152. package/src/stories/atoms/Icons/CloseIcon.tsx +11 -11
  153. package/src/stories/atoms/Icons/DeleteIcon.tsx +15 -15
  154. package/src/stories/atoms/Icons/DoublePersonIcon.tsx +20 -20
  155. package/src/stories/atoms/Icons/EditIcon.tsx +11 -11
  156. package/src/stories/atoms/Icons/Icons.stories.tsx +372 -372
  157. package/src/stories/atoms/Icons/LeftChevronIcon.tsx +13 -13
  158. package/src/stories/atoms/Icons/LineIcon.tsx +12 -12
  159. package/src/stories/atoms/Icons/LocationIcon.tsx +12 -12
  160. package/src/stories/atoms/Icons/MessageIcon.tsx +12 -12
  161. package/src/stories/atoms/Icons/PickleballBallIcon.tsx +22 -22
  162. package/src/stories/atoms/Icons/RightChevronIcon.tsx +11 -11
  163. package/src/stories/atoms/Icons/SessionIcon.tsx +16 -16
  164. package/src/stories/atoms/Icons/SinglePersonIcon.tsx +16 -16
  165. package/src/stories/atoms/Icons/SinglePersonV2Icon.tsx +13 -13
  166. package/src/stories/atoms/Icons/SocialMediaFacebookIcon.tsx +19 -19
  167. package/src/stories/atoms/Icons/SocialMediaInstagramIcon.tsx +11 -11
  168. package/src/stories/atoms/Icons/SocialMediaTikTokIcon.tsx +18 -18
  169. package/src/stories/atoms/Icons/SocialMediaXIcon.tsx +18 -18
  170. package/src/stories/atoms/Icons/SocialMediaYoutubeIcon.tsx +11 -11
  171. package/src/stories/atoms/Icons/SwapIcon.tsx +11 -11
  172. package/src/stories/atoms/Icons/SwapNoBorderIcon.tsx +14 -14
  173. package/src/stories/atoms/Icons/TennisBallIcon.tsx +13 -13
  174. package/src/stories/atoms/Icons/VerifiedIcon.tsx +13 -13
  175. package/src/stories/atoms/Icons/VisibilityIcon.tsx +12 -12
  176. package/src/stories/atoms/Icons/VisibilityOffIcon.tsx +13 -13
  177. package/src/stories/atoms/Icons/WinnerIndicatorIcon.tsx +39 -39
  178. package/src/stories/atoms/Icons/sharedTypes.tsx +12 -12
  179. package/src/stories/atoms/Typography/Typography.tsx +185 -185
  180. package/src/stories/atoms/UTMap/UTMap.stories.tsx +43 -43
  181. package/src/stories/atoms/UTMap/UTMap.tsx +25 -25
  182. package/src/stories/molecules/AvatarWithName/AvatarWithName.stories.tsx +86 -86
  183. package/src/stories/molecules/AvatarWithName/AvatarWithName.tsx +68 -68
  184. package/src/stories/molecules/Cards/Cards.stories.tsx +76 -76
  185. package/src/stories/molecules/Cards/ContactCard.tsx +45 -45
  186. package/src/stories/molecules/Cards/DrawCard.tsx +211 -211
  187. package/src/stories/molecules/Cards/Modals.stories.tsx +137 -137
  188. package/src/stories/molecules/Cards/TeamCard.tsx +14 -14
  189. package/src/stories/molecules/Cards/TeamDrawCard.tsx +159 -159
  190. package/src/stories/molecules/Cards/sharedTypes.ts +69 -69
  191. package/src/stories/molecules/FooterSection/FooterSection.stories.tsx +25 -25
  192. package/src/stories/molecules/FooterSection/FooterSection.tsx +34 -34
  193. package/src/stories/molecules/FooterSection/sharedTypes.ts +6 -6
  194. package/src/stories/molecules/GlobalNavItem/GlobalNavItem.stories.tsx +22 -22
  195. package/src/stories/molecules/GlobalNavItem/GlobalNavItem.tsx +51 -51
  196. package/src/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.stories.tsx +96 -96
  197. package/src/stories/molecules/SquareAvatarWithName/SquareAvatarWithName.tsx +112 -112
  198. package/src/stories/organisms/Footer/Footer.stories.tsx +63 -63
  199. package/src/stories/organisms/Footer/Footer.tsx +155 -165
  200. package/src/stories/organisms/Footer/sharedTypes.ts +17 -17
  201. package/src/stories/organisms/GlobalNavigation/GlobalNavigation.stories.tsx +210 -210
  202. package/src/stories/organisms/GlobalNavigation/GlobalNavigation.tsx +120 -120
  203. package/src/stories/organisms/Modals/FullPageModal.tsx +93 -93
  204. package/src/stories/organisms/Modals/Modals.stories.tsx +138 -138
  205. package/src/stories/organisms/Modals/sharedTypes.ts +15 -15
  206. package/src/stories/organisms/Tables/DrawCardTable.tsx +92 -92
  207. package/src/stories/organisms/Tables/SortableTable.tsx +119 -119
  208. package/src/stories/organisms/Tables/Tables.stories.tsx +104 -104
  209. package/src/stories/organisms/Tables/TeamDrawCardTable/DesktopTableRows.tsx +120 -120
  210. package/src/stories/organisms/Tables/TeamDrawCardTable/MobileTableRows.tsx +67 -67
  211. package/src/stories/organisms/Tables/TeamDrawCardTable/TeamDrawCardTable.tsx +24 -24
  212. package/src/stories/organisms/Tables/mockData.tsx +131 -131
  213. package/src/stories/organisms/Tables/sharedTypes.ts +17 -17
  214. package/src/stories/utils/constants.ts +31 -31
  215. package/src/stories/utils/getArrayWithIds.ts +1 -1
  216. package/src/stories/utils/useScreenSize.ts +28 -28
  217. package/src/types/tableDataTypes.ts +42 -42
  218. package/tsconfig.json +23 -23
  219. package/dist/stories/atoms/Map/Map.d.ts +0 -7
  220. package/dist/stories/atoms/Map/Map.js +0 -9
  221. package/dist/stories/atoms/Map/Map.js.map +0 -1
  222. package/dist/stories/atoms/Map/Map.stories.d.ts +0 -9
  223. package/dist/stories/atoms/Map/Map.stories.js +0 -36
  224. package/dist/stories/atoms/Map/Map.stories.js.map +0 -1
  225. package/dist/stories/organisms/Tables/TeamDrawCardTable.d.ts +0 -3
  226. package/dist/stories/organisms/Tables/TeamDrawCardTable.js +0 -126
  227. package/dist/stories/organisms/Tables/TeamDrawCardTable.js.map +0 -1
@@ -1,165 +1,155 @@
1
- import React from 'react';
2
- import { styled } from "@mui/material/styles";
3
-
4
- import Box from '@mui/material/Box';
5
- import IconButton from '@mui/material/IconButton';
6
- import Link from '@mui/material/Link';
7
-
8
- import { FooterProps } from './sharedTypes';
9
- import { SocialMediaIds } from '../../utils/constants';
10
- import FooterSection from '../../molecules/FooterSection/FooterSection';
11
- import SocialMediaInstagramIcon from '../../atoms/Icons/SocialMediaInstagramIcon';
12
- import SocialMediaTikTokIcon from '../../atoms/Icons/SocialMediaTikTokIcon';
13
- import SocialMediaXIcon from '../../atoms/Icons/SocialMediaXIcon';
14
- import SocialMediaYoutubeIcon from '../../atoms/Icons/SocialMediaYoutubeIcon';
15
- import SocialMediaFacebookIcon from '../../atoms/Icons/SocialMediaFacebookIcon';
16
- import Typography from '../../atoms/Typography/Typography';
17
- import utrLogo from '../../assets/utr-sports-logo.svg';
18
- import googlePlayLogo from '../../../../public/google-play-icon.png';
19
- import appStoreBadge from '../../../../public/app-store-badge.png';
20
-
21
- function Footer({
22
- exploreItems,
23
- providerItems,
24
- moreItems,
25
- supportItems,
26
- onSocialMediaClick,
27
- sx
28
- }: FooterProps) {
29
- const {
30
- X, FACEBOOK, INSTAGRAM, TIKTOK, YOUTUBE
31
- } = SocialMediaIds;
32
-
33
- const googlePlayLink = "https://play.google.com/store/apps/details?id=com.ut.utr";
34
- const appStoreLink = "https://apps.apple.com/us/app/utr-sports/id1519232627";
35
-
36
- const handleOnSocialMediaClick = (id: number) => {
37
- onSocialMediaClick(id);
38
- };
39
-
40
- const StyledNavigationContainer = styled(Box)(({ theme }) => ({
41
- display: 'flex',
42
- flexWrap: 'wrap',
43
- [theme.breakpoints.up('md')]: {
44
- flexWrap: 'no-wrap',
45
- }
46
- }));
47
-
48
- const StyledContentContainer = styled(Box)(({ theme }) => ({
49
- display: "flex",
50
- flexDirection: "column",
51
- justifyContent: "space-between",
52
- padding: "32px",
53
- [theme.breakpoints.up('md')]: {
54
- flexDirection: "row",
55
- padding: "32px 64px",
56
- }
57
- }));
58
-
59
- const StyledNavigation = styled(Box)(({ theme }) => ({
60
- flex: "50%",
61
- marginBottom: "32px",
62
- [theme.breakpoints.up('lg')]: {
63
- flex: "auto",
64
- marginRight: "75px",
65
- marginBottom: 0,
66
- '&:last-child': {
67
- marginRight: 0,
68
- },
69
- }
70
- }));
71
-
72
- const StyledLogoContainer = styled(Box)(({ theme }) => ({
73
- display: "flex",
74
- flexDirection: "column",
75
- margin: "0 auto",
76
- [theme.breakpoints.up('lg')]: {
77
- margin: 0
78
- }
79
- }));
80
-
81
- const StyledBorder = styled(Box)(({ theme }) => ({
82
- borderBottom: ".5px solid var(--darkest-grey)",
83
- margin: "32px 0px",
84
- [theme.breakpoints.up('md')]: {
85
- display: "none"
86
- }
87
- }));
88
-
89
- return (
90
- <Box sx={{ backgroundColor: 'var(--black)', ...sx }}>
91
- <StyledContentContainer>
92
- <StyledLogoContainer>
93
- <img
94
- alt="UTR Sports logo"
95
- width="205"
96
- height="51"
97
- src={utrLogo}
98
- />
99
- <Box display="flex" my={2} justifyContent="space-between" width="100%">
100
- <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(X)}>
101
- <SocialMediaXIcon size={27} color="var(--white)" />
102
- </IconButton>
103
- <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(FACEBOOK)}>
104
- <SocialMediaFacebookIcon size={27} color="var(--white)" />
105
- </IconButton>
106
- <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(INSTAGRAM)}>
107
- <SocialMediaInstagramIcon size={27} color="var(--white)" />
108
- </IconButton>
109
- <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(TIKTOK)}>
110
- <SocialMediaTikTokIcon size={27} color="var(--white)" />
111
- </IconButton>
112
- <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(YOUTUBE)}>
113
- <SocialMediaYoutubeIcon size={27} color="var(--white)" />
114
- </IconButton>
115
- </Box>
116
- <Box display="flex" justifyContent="space-between" width="100%">
117
- <Link href={googlePlayLink} target="_blank" rel="noopener">
118
- <img
119
- alt="Google play logo"
120
- width="96"
121
- height="28"
122
- src={googlePlayLogo}
123
- />
124
- </Link>
125
- <Link href={appStoreLink} target="_blank" rel="noopener">
126
- <img
127
- alt="App store badge"
128
- width="84"
129
- height="28"
130
- src={appStoreBadge}
131
- />
132
- </Link>
133
- </Box>
134
- </StyledLogoContainer>
135
- <StyledBorder />
136
- <StyledNavigationContainer>
137
- <StyledNavigation>
138
- <FooterSection title="Explore" items={exploreItems} />
139
- </StyledNavigation>
140
- <StyledNavigation>
141
- <FooterSection title="Providers" items={providerItems} />
142
- </StyledNavigation>
143
- <StyledNavigation>
144
- <FooterSection title="More" items={moreItems} />
145
- </StyledNavigation>
146
- <StyledNavigation>
147
- <FooterSection title="Support" items={supportItems} />
148
- </StyledNavigation>
149
- </StyledNavigationContainer>
150
- </StyledContentContainer>
151
- <Box display="absolute" sx={{ bottom: 24, borderTop: 1, borderColor: "var(--white)" }}>
152
- <Typography
153
- p={0.5}
154
- category="secondary"
155
- size="x-small-book-cap"
156
- color="var(--white)"
157
- align="center"
158
- >
159
- {`\u00A9 2024, UTR SPORTS`}
160
- </Typography>
161
- </Box>
162
- </Box>
163
- );
164
- }
165
- export default Footer;
1
+ import React from 'react';
2
+ import { styled } from "@mui/material/styles";
3
+
4
+ import Box from '@mui/material/Box';
5
+ import IconButton from '@mui/material/IconButton';
6
+ import Link from '@mui/material/Link';
7
+
8
+ import { FooterProps } from './sharedTypes';
9
+ import { SocialMediaIds } from '../../utils/constants';
10
+ import FooterSection from '../../molecules/FooterSection/FooterSection';
11
+ import SocialMediaInstagramIcon from '../../atoms/Icons/SocialMediaInstagramIcon';
12
+ import SocialMediaTikTokIcon from '../../atoms/Icons/SocialMediaTikTokIcon';
13
+ import SocialMediaXIcon from '../../atoms/Icons/SocialMediaXIcon';
14
+ import SocialMediaYoutubeIcon from '../../atoms/Icons/SocialMediaYoutubeIcon';
15
+ import SocialMediaFacebookIcon from '../../atoms/Icons/SocialMediaFacebookIcon';
16
+ import Typography from '../../atoms/Typography/Typography';
17
+ import utrLogo from '../../assets/utr-sports-logo.svg';
18
+ import appStoreBadge from '../../../../public/app-store-badge.png';
19
+
20
+ function Footer({
21
+ exploreItems,
22
+ providerItems,
23
+ moreItems,
24
+ supportItems,
25
+ onSocialMediaClick,
26
+ sx
27
+ }: FooterProps) {
28
+ const {
29
+ X, FACEBOOK, INSTAGRAM, TIKTOK, YOUTUBE
30
+ } = SocialMediaIds;
31
+
32
+ const appStoreLink = "https://apps.apple.com/us/app/utr-sports/id1519232627";
33
+
34
+ const handleOnSocialMediaClick = (id: number) => {
35
+ onSocialMediaClick(id);
36
+ };
37
+
38
+ const StyledNavigationContainer = styled(Box)(({ theme }) => ({
39
+ display: 'flex',
40
+ flexWrap: 'wrap',
41
+ [theme.breakpoints.up('md')]: {
42
+ flexWrap: 'no-wrap',
43
+ }
44
+ }));
45
+
46
+ const StyledContentContainer = styled(Box)(({ theme }) => ({
47
+ display: "flex",
48
+ flexDirection: "column",
49
+ justifyContent: "space-between",
50
+ padding: "32px",
51
+ [theme.breakpoints.up('md')]: {
52
+ flexDirection: "row",
53
+ padding: "32px 64px",
54
+ }
55
+ }));
56
+
57
+ const StyledNavigation = styled(Box)(({ theme }) => ({
58
+ flex: "50%",
59
+ marginBottom: "32px",
60
+ [theme.breakpoints.up('lg')]: {
61
+ flex: "auto",
62
+ marginRight: "75px",
63
+ marginBottom: 0,
64
+ '&:last-child': {
65
+ marginRight: 0,
66
+ },
67
+ }
68
+ }));
69
+
70
+ const StyledLogoContainer = styled(Box)(({ theme }) => ({
71
+ display: "flex",
72
+ flexDirection: "column",
73
+ margin: "0 auto",
74
+ [theme.breakpoints.up('lg')]: {
75
+ margin: 0
76
+ }
77
+ }));
78
+
79
+ const StyledBorder = styled(Box)(({ theme }) => ({
80
+ borderBottom: ".5px solid var(--darkest-grey)",
81
+ margin: "32px 0px",
82
+ [theme.breakpoints.up('md')]: {
83
+ display: "none"
84
+ }
85
+ }));
86
+
87
+ return (
88
+ <Box sx={{ backgroundColor: 'var(--black)', ...sx }}>
89
+ <StyledContentContainer>
90
+ <StyledLogoContainer>
91
+ <img
92
+ alt="UTR Sports logo"
93
+ width="205"
94
+ height="51"
95
+ src={utrLogo}
96
+ />
97
+ <Box display="flex" my={2} justifyContent="space-between" width="100%">
98
+ <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(X)}>
99
+ <SocialMediaXIcon size={27} color="var(--white)" />
100
+ </IconButton>
101
+ <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(FACEBOOK)}>
102
+ <SocialMediaFacebookIcon size={27} color="var(--white)" />
103
+ </IconButton>
104
+ <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(INSTAGRAM)}>
105
+ <SocialMediaInstagramIcon size={27} color="var(--white)" />
106
+ </IconButton>
107
+ <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(TIKTOK)}>
108
+ <SocialMediaTikTokIcon size={27} color="var(--white)" />
109
+ </IconButton>
110
+ <IconButton sx={{ p: 0 }} onClick={() => handleOnSocialMediaClick(YOUTUBE)}>
111
+ <SocialMediaYoutubeIcon size={27} color="var(--white)" />
112
+ </IconButton>
113
+ </Box>
114
+ <Box display="flex" justifyContent="center" width="100%">
115
+ <Link href={appStoreLink} target="_blank" rel="noopener">
116
+ <img
117
+ alt="App store badge"
118
+ width="84"
119
+ height="28"
120
+ src={appStoreBadge}
121
+ />
122
+ </Link>
123
+ </Box>
124
+ </StyledLogoContainer>
125
+ <StyledBorder />
126
+ <StyledNavigationContainer>
127
+ <StyledNavigation>
128
+ <FooterSection title="Explore" items={exploreItems} />
129
+ </StyledNavigation>
130
+ <StyledNavigation>
131
+ <FooterSection title="Providers" items={providerItems} />
132
+ </StyledNavigation>
133
+ <StyledNavigation>
134
+ <FooterSection title="More" items={moreItems} />
135
+ </StyledNavigation>
136
+ <StyledNavigation>
137
+ <FooterSection title="Support" items={supportItems} />
138
+ </StyledNavigation>
139
+ </StyledNavigationContainer>
140
+ </StyledContentContainer>
141
+ <Box display="absolute" sx={{ bottom: 24, borderTop: 1, borderColor: "var(--white)" }}>
142
+ <Typography
143
+ p={0.5}
144
+ category="secondary"
145
+ size="x-small-book-cap"
146
+ color="var(--white)"
147
+ align="center"
148
+ >
149
+ {`\u00A9 2025, UTR SPORTS`}
150
+ </Typography>
151
+ </Box>
152
+ </Box>
153
+ );
154
+ }
155
+ export default Footer;
@@ -1,17 +1,17 @@
1
- import { SxProps, Theme } from '@mui/system';
2
-
3
- export interface LinkItem {
4
- href: string;
5
- label: string;
6
- }
7
- export type FooterProps = {
8
- sectionTitleColor: string;
9
- listItemColor: string;
10
- exploreItems: [LinkItem];
11
- eventItems:[LinkItem];
12
- providerItems:[LinkItem];
13
- moreItems:[LinkItem];
14
- supportItems:[LinkItem];
15
- onSocialMediaClick(id: number): VoidFunction;
16
- sx?: SxProps<Theme>;
17
- };
1
+ import { SxProps, Theme } from '@mui/system';
2
+
3
+ export interface LinkItem {
4
+ href: string;
5
+ label: string;
6
+ }
7
+ export type FooterProps = {
8
+ sectionTitleColor: string;
9
+ listItemColor: string;
10
+ exploreItems: [LinkItem];
11
+ eventItems:[LinkItem];
12
+ providerItems:[LinkItem];
13
+ moreItems:[LinkItem];
14
+ supportItems:[LinkItem];
15
+ onSocialMediaClick(id: number): VoidFunction;
16
+ sx?: SxProps<Theme>;
17
+ };